部分唤醒锁不适用于 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_WAKEUPON_AFTER_RELEASEPARTIAL_WAKE_LOCK 一起使用。

还请注意,任何使用 WakeLock 的应用程序都必须在应用程序清单的 <uses-permission> 元素中请求 android.permission.WAKE_LOCK 权限。

【讨论】:

ACQUIRE_CAUSES_WAKEUP 后来被添加只是为了测试它是否产生了差异。我以前试过你的方法但没有成功,如果这是制造商实施的环境模式是罪魁祸首,或者是谷歌自己的错,我会尝试我的 moto360。权限已设置。

以上是关于部分唤醒锁不适用于 android wear的主要内容,如果未能解决你的问题,请参考以下文章

Android Vitals 和卡住唤醒锁?

每次使用标签创建新的 android 唤醒锁都会返回相同的唤醒锁吗?

Android 唤醒锁强制关闭

Webview行为唤醒锁android

Android 唤醒锁问题

在 Android 1.5 服务中使用唤醒锁