我在获取WakeLock时遇到问题。看来行不通。
我正在尝试获取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);

您无需手动释放WakeLock。此代码将允许Android系统自动处理锁定。当您的应用程序位于前台时,将保持WakeLock,否则android系统会自动释放Lock。

但是,如果您确实想释放该标志,则可以执行以下操作:
getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);

关于android - Android WakeLock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3615405/

10-09 09:20