部分唤醒锁不适用于 android wear
Posted
技术标签:
【中文标题】部分唤醒锁不适用于 android wear【英文标题】:Partial wakelock does not work on android wear 【发布时间】:2017-01-17 14:43:59 【问题描述】:我正在我的表盘中收集加速度计数据,一旦设备进入环境模式,cpu 就会进入睡眠状态。
我尝试在创建时添加 partial_wakelock,但它仍然不起作用,完全唤醒锁可以正常工作,但我希望使用环境模式(例如刻录保护)的好处。
知道有什么问题吗?
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
//wl = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "awake");
wl = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "MyWakelockTag");
注释行不起作用。
我在加速度计的注册中获取唤醒锁并在销毁时释放它。
这是一个非常令人沮丧的问题,我不知道我做错了什么。
【问题讨论】:
【参考方案1】:简而言之这是正常的。放松。
出于节电原因,某些 android 设备会进入睡眠状态并禁用蓝牙模式。为了让它变得活跃,我刚刚发现只有 FULL_WAKE_LOCK 有效。可能是,我是对的,但这是我的经验。其他有助于节省电池的选项也必须在 Android 操作系统偏好设置中禁用。
【讨论】:
【参考方案2】:基于documentation,可以通过调用Context.getSystemService()
获取PowerManager
类的实例。
你可能想试试这个:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
而不是
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
除此之外,您不能将ACQUIRE_CAUSES_WAKEUP
和ON_AFTER_RELEASE
与PARTIAL_WAKE_LOCK
一起使用。
还请注意,任何使用 WakeLock 的应用程序都必须在应用程序清单的 <uses-permission>
元素中请求 android.permission.WAKE_LOCK
权限。
【讨论】:
ACQUIRE_CAUSES_WAKEUP 后来被添加只是为了测试它是否产生了差异。我以前试过你的方法但没有成功,如果这是制造商实施的环境模式是罪魁祸首,或者是谷歌自己的错,我会尝试我的 moto360。权限已设置。以上是关于部分唤醒锁不适用于 android wear的主要内容,如果未能解决你的问题,请参考以下文章