我有一个GDK沉浸式应用程序,其中启动器Activity获取了一个SCREEN_DIM_WAKE_LOCK WakeLock.该应用程序还有一个服务,它将接收聊天消息并启动一个活动的Intent来显示每个消息.每当打开消息Activity时,我想让屏幕变亮.但是,我发现的所有方法似乎都不起作用.
Settings.System.putInt(getContentResolver(),SCREEN_BRIGHTNESS_MODE,SCREEN_BRIGHTNESS_MODE_MANUAL); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 1.0f; getWindow().setAttributes(lp);
为了更好地说明问题,这里是我的应用程序中的事件序列:
>活动A开始并获取SCREEN_DIM_WAKE_LOCK.活动A在短时间后变暗.
>服务B通过网络接收聊天消息,并为活动C创建一个Intent
>活动C打开,如上所示设置屏幕亮度,但仍保持灰色
如何让屏幕变亮?
解决方法
通过在onResume中获取带有ACQUIRE_CAUSES_WAKEUP标志的SCREEN_BRIGHT_WAKE_LOCK,我能够找到解决方案.例如:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,"My Tag"); wl.acquire(); //..screen will stay on during this section.. wl.release();