我想改变亮度,我可以使用这种方法:
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);
}
我需要一个活动传入SetBright(int brightness, Context context);
但现在我必须在Brocastreceiver中调用方法SetBright(int brightness, Context context)
。我可以在方法onReceive(Context context,Intent intent)中使用上下文,但是如果我退出应用程序,它就不起作用。
我可以使用另一种方法来改变亮度而不是使用活动吗?
答案 0 :(得分:4)
启动虚拟活动并使用亮度设置窗口参数(对于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);
答案 1 :(得分:1)
主要是我使用500毫秒的屏幕刷新时间,但在galaxy s3中它不起作用。但是1000还可以。因此屏幕刷新时间可能与设备有关。
答案 2 :(得分:0)
如果您想保存,请在设置亮度后尝试此操作:
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);
}