繁体   English   中英

如何检测 android 的亮度变化?

[英]how can I detect change in brightness in android?

我正在尝试开发一个简单的应用程序,它可以监视当前屏幕亮度的值并在用户更改亮度时更新该值。

这是我获取当前亮度的代码。

try {
    float curBrightnessValue=android.provider.Settings.System.getInt(
        getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
        System.out.println(curBrightnessValue);
} catch (Settings.SettingNotFoundException e) {
    e.printStackTrace();
}

但我正在努力更新价值。 当亮度发生变化时如何更新值?

这可以帮助您:

ContentObserver contentObserver = new ContentObserver(new Handler()) {
  @Override
  public void onChange(boolean selfChange) {
    int a = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);
    Log.d("MainActivity", "Brightness value: "+ a);
  }
};
getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),
    false, contentObserver);

附加回调以在内容更改时接收更改

@saurav-kumar 当我在搜索栏中更改它时它不起作用。 我应该怎么办?

val contentObserver: ContentObserver = object : ContentObserver(Handler()) {
            override fun onChange(selfChange: Boolean) {
                val a = Settings.System.getInt(contentResolver, SCREEN_BRIGHTNESS, 0)
                Log.d("MainActivity", "Brightness value: $a")
                binding.seekBar.progress = a* 255 / 100
            }
        }
        contentResolver.registerContentObserver(
            Settings.System.getUriFor(SCREEN_BRIGHTNESS),
            false, contentObserver
        )   

binding.seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            @RequiresApi(api = Build.VERSION_CODES.M)
            override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
                val permission = Settings.System.canWrite(applicationContext)
                if (permission) {
                    var brightnessValue = p1 * 255 / 100
                    Settings.System.putInt(
                        applicationContext.contentResolver,
                        Settings.System.SCREEN_BRIGHTNESS_MODE,
                        Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
                    Settings.System.putInt(contentResolver, SCREEN_BRIGHTNESS, brightnessValue)
                    binding.seekBar.progress = brightnessValue


                } else {
                    val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
                    intent.data = Uri.parse("package:" + applicationContext.packageName)
                    startActivityForResult(intent, 0)
                }
            }

            override fun onStartTrackingTouch(p0: SeekBar?) {
            }

            override fun onStopTrackingTouch(p0: SeekBar?) {

            }

        })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM