我在获取唤醒锁时遇到问题。好像不行。 我正在尝试获取 FULL_WAKE_LOCK,但显示器未启用,我的应用程序也无法执行任务。
我正在使用以下权限:android.permission.WAKE_LOCK
我的获取代码如下所示:
PowerManager pm = (PowerManager) getBaseContext().getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "My Tag");
wl.acquire();
我做错了什么?
编辑:添加了另一个标志 ACQUIRE_CAUSES_WAKEUP ...但行为没有变化
Edit2:我想做的就是播放音乐并在发生特定事件时唤醒我的设备。音乐运行完美,但设备保持黑色。
最佳答案
WakeLock 是一种保持屏幕开启的低效方式。而是使用 WindowManager 来施展魔法。下面的一行就足够了 WakeLock。 WakeLock 权限也需要此工作。此代码也比 wakeLock 更高效。
getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
您无需手动释放唤醒锁。此代码将允许 Android 系统自动处理锁定。当您的应用程序处于前台时,WakeLock 会被持有,否则 android 系统会自动释放锁定。
但是如果你确实想释放旗帜,你可以这样做:
getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
关于安卓唤醒锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615405/