我在获取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:我所要做的就是播放音乐,在某个特定的事件中唤醒我的设备。音乐工作正常,但设备仍然黑屏。
发布于 2011-04-05 15:26:25
WakeLock是一种低效的保持屏幕打开的方式。取而代之的是使用WindowManager来施展魔法。下面一行代码就可以满足WakeLock了。要执行此操作,还需要WakeLock权限。此外,此代码比wakeLock更有效。
getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);您不需要手动重新发布WakeLock。这段代码将允许Android系统自动处理Lock。当你的应用程序在前台时,WakeLock会被按住,否则安卓系统会自动释放锁。
但是,如果您确实想释放该标志,您可以使用:
getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);发布于 2011-09-27 17:15:07
private static PowerManager.WakeLock lockStatic = null;
private static String LOCK_NAME_STATIC = "MyWakeLock";
public static void acquireStaticLock(Context context) {
getLock(context).acquire();
}
synchronized private static PowerManager.WakeLock getLock(Context context) {
if (lockStatic == null) {
PowerManager mgr = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
lockStatic = mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK,
LOCK_NAME_STATIC);
lockStatic.setReferenceCounted(true);
}
return (lockStatic);
}使用:
当需要激活锁时,调用acquireStaticLock()
当您需要释放锁时,在activity内部调用getLock(this).release();
同时在minifest文件中添加权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />发布于 2010-09-01 18:58:43
你在哪里获得唤醒锁?您需要在意图的接收者中获取它,而不是在意图启动的服务/活动中获取它。
https://stackoverflow.com/questions/3615405
复制相似问题