![](/img/trans.png)
[英]How can I change the Brightness of the screen in BroadcastReceiver?
[英]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.