为闹钟管理器闹钟创建 Wi-Fi 唤醒锁



我使用AlarmManager来启动周期性重复的警报。我需要 Wi-Fi 始终保持连接,所以我认为 Wi-Fi 上的唤醒锁是必要的。我不清楚的是我在哪里创建此唤醒锁,并避免在每次触发警报时创建它。我的应用程序中没有活动。

我知道我可以为唤醒锁分配一个标签,但似乎没有任何方法可以询问 Android 以查看标签是否存在唤醒锁。如果我能做到这一点,我可以说闹钟触发时唤醒锁已经存在,而不必费心重新创建它。还是有替代解决方案?

我不得不面对一个有点类似的场景。我还使用AlarmManager定期触发服务,即使手机屏幕已锁定,WiFi也必须始终打开。我发现手动或以编程方式更改WiFi睡眠策略对于许多设备来说已经足够了,并且不需要使用唤醒锁。但是,在某些HTC设备上,我发现此设置在晚上根本不起作用。我监控了我的应用程序,发现 WiFi 会在早上 00:00(午夜(到 7:00 之间关闭 - 其余时间就像一个魅力。我还在其他地方(不是stackoverflow(找到了一篇文章,作者提到了HTC手机能够处理此问题的特殊设置:

Settings.System.putInt(getContentResolver(), "smartsync_turn_off_wifi", 0);

这发生在大约一年半前,使用此设置至少在最近之前,我可以在任何HTC设备上使用Android 3.1。不久前,我们应用程序的一些用户报告说,他们的HTC配备了Android 4.x,没有做他们应该做的事情,因为WiFi在晚上关闭,所以似乎我使用的神秘设置在较新的设备上不再有效。

无论如何,@AndroidDev,由于您的问题和我的问题似乎有些相关,我想知道您是否设法解决了它,以及如果回答是肯定的,如何解决。

我认为有一种方法可以获取现有唤醒锁(带有标签(的列表,但我质疑这是否是正确的解决方案。 查看像"唤醒锁检测器"这样的应用程序 - 我相信它会检索列表并将标签与已知的标签列表匹配,以确定哪个应用程序创建了它。 另请注意唤醒锁的持续时间 - CPU 唤醒锁适用于非常短期的使用。 我不知道你的闹钟周期是多少,但听起来你可能打算保持唤醒锁太久。

当您提到"Wi-Fi 上的唤醒锁"时,我假设您只是指常规唤醒锁 - 屏幕和 CPU 有唤醒锁,但没有 wifi 的唤醒锁这样的东西。 此外,通过标签查找自己的唤醒锁对我来说没有意义 - 如果您仍然没有对唤醒锁的引用,那么您如何释放它?

写道,你"需要Wi-Fi才能始终保持连接"。 如果 wifi AP 仍然可用,则只要用户未更改"在睡眠期间保持 wifi 打开"设置,Wi-Fi 将保持连接状态 - 即使设备进入睡眠状态。 你的应用可以检查此设置。

最新更新