背景信息:我在Android 4.0.4下。 我说的代码在Activity中。 该应用程序是Cordova应用程序,我在插件中编写此代码。 我想我在StackOverflow和Android文档中阅读了所有问题。
我想获得一个唤醒锁,唤醒设备,做一些事情然后,当释放唤醒锁时,我希望屏幕再次关闭并让手机睡觉。 我尝试了几种方法:
我尝试了几个在这里找到唤醒设备的例子。 我设法以编程方式打开设备的唯一方法是使用ACQUIRE_CAUSES_WAKEUP标志获取唤醒锁。这很好用。当我发布唤醒锁时,问题就来了。我无法再次关闭屏幕。它永远保持不变。我尝试了所有可用的WAKELOCKS以及所有可用的FLAGS。 注意:我对这种方法并不完全满意,因为正如文档中所述,唯一不被弃用的唤醒锁是部分唤醒锁,不幸的是,它不能与此标志一起使用。
由于我无法使用唤醒锁功能让屏幕关闭,我尝试以编程方式将其关闭。 我想我尝试了这里找到的所有例子来关闭屏幕,唯一有效的是:
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
问题是使用这种方法我不能再打开它。当我再次获得唤醒锁时,它就会停止。 此外,当我试图唤醒手机时按下" home"按钮它不会醒来。它仅在按下3或4次电源后才响应"按钮。似乎这种方法冻结了手机。
我尝试在获取(以及之前)唤醒锁之前以编程方式打开屏幕,使用与上面相同的代码恢复默认亮度值,但它不起作用。
差不多一个星期我才挣扎于此。任何建议都将不胜感激。