在Glass GDK浸入式应用程序中打开活动时,如何使屏幕变亮?

我有一个GDK沉浸式应用程序,其中启动器Activity获取SCREEN_DIM_WAKE_LOCK WakeLock 。 该应用程序还有一个服务,它将接收聊天消息并启动一个ActivityIntent来显示每个消息。 每当打开消息Activity ,我想让屏幕变亮。 但是,我发现的所有方法似乎都不起作用。

例如,将以下内容添加到onResume中无效:

  Settings.System.putInt(getContentResolver(), SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 1.0f; getWindow().setAttributes(lp); 

为了更好地说明问题,这里是我的应用程序中的事件序列:

  1. 活动A启动并获取SCREEN_DIM_WAKE_LOCK。 活动A在短时间后变暗。
  2. 服务B通过网络接收聊天消息并创建活动C的意图
  3. 活动C打开,如上所示设置屏幕亮度,但仍保持灰色

如何让屏幕变亮?

通过在onResume获取带有ACQUIRE_CAUSES_WAKEUP标志的SCREEN_BRIGHT_WAKE_LOCK ,我能够find解决方案。 例如:

 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(); 

尝试在onCreate调用setContentView之前放入代码(否则亮度级别不会更新),例如:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Settings.System.putInt(getContentResolver(), SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 1.0f; getWindow().setAttributes(lp); // example setContentView(R.layout.main);