Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // In the Activity I have a companion
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- companion object {
- private const val WRITE_SETTINGS_PERMISSION = 100
- private const val MAX_BRIGHTNESS = 255
- private const val MIN_BRIGHTNESS = 20
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // In the onCreate method I have a button that activate permission for brightness
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Listener on the onCreate method for a button to grant WRITE_SETTINGS permission
- btn_settings_grant_write_permission.setOnClickListener {
- val hasPermissions = hasPermissionsToWriteSettings(this)
- setBrightnessRegulation(hasPermissions)
- if (!hasPermissions) askForPermissionsToWriteSettings(this)
- }
- // Settings progress bar to change brightness
- skb_settings_brightness.max = MAX_BRIGHTNESS
- skb_settings_brightness.progress = AppPreferences.getInstance(this).brightnessKey
- skb_settings_brightness.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
- var brightnessProgress = 0
- override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
- brightnessProgress = map(progress, 0, MAX_BRIGHTNESS, MIN_BRIGHTNESS, MAX_BRIGHTNESS)
- if (hasPermissionsToWriteSettings(this@SettingsActivity)) {
- Settings.System.putInt(this@SettingsActivity.contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightnessProgress)
- // Do not write this in one-line, won't work
- val lp = this@SettingsActivity.window.attributes
- lp.screenBrightness = brightnessProgress.toFloat() / 255
- this@SettingsActivity.window.attributes = lp
- }
- }
- override fun onStartTrackingTouch(seekBar: SeekBar?) {}
- override fun onStopTrackingTouch(seekBar: SeekBar?) {
- AppPreferences.getInstance(this@SettingsActivity).brightnessKey = brightnessProgress
- }
- })
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Helper methods + onRequestPermissionResult
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Fun 1, outside (MAYBE HERE YOU CAN FIND THE MISSING LINE)
- private fun setBrightnessRegulation(isEnabled: Boolean) {
- if (isEnabled) {
- btn_settings_grant_write_permission.visibility = View.GONE
- skb_settings_brightness.visibility = View.VISIBLE
- Settings.System.putInt(this@SettingsActivity.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL)
- } else {
- btn_settings_grant_write_permission.visibility = View.VISIBLE
- skb_settings_brightness.visibility = View.GONE
- }
- }
- // Fun 2, outside
- private fun hasPermissionsToWriteSettings(context: Activity): Boolean {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- Settings.System.canWrite(context)
- } else {
- ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED
- }
- }
- // Fun 3, outside
- private fun askForPermissionsToWriteSettings(context: Activity) {
- if (!hasPermissionsToWriteSettings(context)) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
- intent.data = Uri.parse("package:" + context.packageName)
- startActivityForResult(intent, WRITE_SETTINGS_PERMISSION)
- } else {
- ActivityCompat.requestPermissions(context, arrayOf(Manifest.permission.WRITE_SETTINGS), WRITE_SETTINGS_PERMISSION)
- }
- }
- }
- override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
- when (requestCode) {
- WRITE_SETTINGS_PERMISSION -> {
- if (grantResults.isEmpty() || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
- Toast.makeText(this, R.string.write_settings_permission_denied, Toast.LENGTH_LONG).show()
- } else {
- btn_settings_grant_write_permission.visibility = View.GONE
- skb_settings_brightness.visibility = View.VISIBLE
- }
- }
- }
- }
- // Map fun
- private fun map(currentValue: Int, inputMin: Int, inputMax: Int, outputMin: Int, outputMax: Int): Int {
- return (currentValue - inputMin) * (outputMax - outputMin) / (inputMax - inputMin) + outputMin
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement