当应用程序处于电池优化白名单时,如何在瞌睡模式下使用wifi?

问题描述 投票:0回答:1

我目前正在开发一个Android应用程序,它应该从蓝牙periperal读取传感器值并将其发送到后台服务器。为了使这个应用能够在屏幕关闭时工作,获取部分唤醒锁定,并由用户将该应用放在电池优化白名单上。我知道,电池白名单只应该在没有其他选项的情况下使用,但对于我的用例来说,这似乎是唯一的解决方案,正如本文最后的表格上所描述的那样。https:/developer.android.comtrainingmonitoring-device-statedoz-standby。. 表中指出,当 "App的核心功能是保持与外围设备的持久连接,目的是为外围设备提供互联网访问 "时,白名单是一个可接受的App解决方案。

这正好描述了我的用例。

然而,当我调试应用程序时,我可以看到唤醒锁定正在生效,因为当屏幕关闭时,应用程序没有暂停,蓝牙API仍然在接收通知。但是,在几分钟后,wifi停止工作,导致所有的请求都处于 "未决 "状态。这种情况在使用移动网络而不是wifi时也会发生。我已经尝试过缓冲接收数据,直到网络再次可用,但我不认为这是一个有效的解决方案,因为在用户再次解锁设备之前,应用程序可能会耗尽内存。

我读到在安卓7之前的安卓版本中,应用程序可以使用wifi锁来保持该特定应用程序的wifi工作。请问在android8或9版本中是否也有类似的功能?或者是在设备设置中,我错过了一个配置选项来保持wifi的清醒?

既然这个用例是在android开发者文章中描述的,那么建议有人已经实现了一个应用程序,做了完全相同的事情。是否有一个代码示例可以演示如何实现这个功能?

我的手机应用是用cordova实现的。我尝试了以下插件来保持我的应用程序的唤醒。

  • 唤醒锁: cordova-plugin-powermanagement。1.0.5或更高版本。

  • 提示用户将应用列入白名单:cordova-plugin-doze-optimize.0.5.4或更高。0.5.4或更高。

android cordova wakelock android-doze android-doze-and-standby
1个回答
0
投票

好吧,我自己想通了。Powermanagement插件没有为我工作,我的预期。我现在用的是这个。https:/github.comoltexcordova-plugin-powermanagement.git。.

现在一切都能如愿以偿。

© www.soinside.com 2019 - 2024. All rights reserved.