安卓唤醒锁

标签 android wakeup

我在获取唤醒锁时遇到问题。好像不行。 我正在尝试获取 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/

相关文章:

android - 安卓平板电脑的密度和尺寸

java - 如何在 PreferenceFragment 中即时更新日夜模式?

android - android如何安排设备从休眠状态唤醒?

android - 单击gridview项时如何获取自定义gridview适配器的hashmap数据?

android - 横跨 View 的对角线

java - android studio点击Listview并设置view

objective-c - 以编程方式唤醒 OSX 上的显示

C++ pthread同步和线程的多次唤醒

android - 前台服务和 WakeLocks 不适用于华为设备