[英]How can I change the Brightness of the screen in BroadcastReceiver?
我想改变亮度,我可以使用这个方法:
public static void SetBright(int brightness, Context context) {
if (isAutoBrightness(context)) {
stopAutoBrightness(context);
}
WindowManager.LayoutParams lp = ((Activity) context).getWindow()
.getAttributes();
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
((Activity) context).getWindow().setAttributes(lp);
}
我需要一个Activity传递给SetBright(int brightness, Context context);
但是现在我必须在SetBright(int brightness, Context context)
调用方法SetBright(int brightness, Context context)
。 我可以在方法onReceive(Context context,Intent intent)中使用上下文,但如果我退出应用程序,它就不起作用。
有没有其他方法可以用来改变亮度而不是使用活动?
使用亮度启动虚拟活动并设置窗口参数(对于255,0到1范围-1)。 运行50,100或500毫秒的计时器。 之后完成活动。
TimerTask finishTask = new TimerTask() {
@Override
public void run() {
BrightActivity.this.finish();
timer.cancel();
if (timer != null) {
timer = null;
}
}
};
timer.schedule(finishTask,Constants.BRIGHTNESS_REFRESH_DELAY);
主要是我使用500毫秒的屏幕刷新时间,但在galaxy s3它不起作用。 但是1000还可以。 因此屏幕刷新时间可能与设备有关。
如果你想保存,那么在设置亮度后尝试这个:
public static void saveBrightness(Context context, int brightness) {
ContentResolver resolver= context.getContentResolver();
Uri uri = android.provider.Settings.System
.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(resolver, "screen_brightness",
brightness);
resolver.notifyChange(uri, null);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.