gpt4 book ai didi

android - 确定 Android 设备中的 3G/WIFI radio 状态机当前状态

转载 作者:行者123 更新时间:2023-11-29 20:59:44 24 4
gpt4 key购买 nike

我的应用程序不断接收位置更新和 Activity 识别更新,并每隔一段时间将所有收集到的 Activity 和位置记录一批发送到服务器。

我知道每次我执行网络操作时 - WIFI 或移动设备的 radio 状态(取决于当前 Activity 连接是什么)将进入 Activity 状态,并保持一段时间的待机状态 - 这会极大地影响执行频繁网络请求时的电池使用情况,因此我安排警报执行与服务器的同步,仅在 2 小时内执行一次,或者当用户明确使用我的应用程序时执行。

另一方面,如果可能的话,我们希望以更短的时间间隔将收集到的数据与服务器同步。

我在想,如果我能知道 radio 状态何时因任何原因(例如,当另一个应用程序执行网络操作时)变为 Activity 状态 - 这将是执行同步的好机会,以利用 radio 是无论如何打开或待机并消耗更多电量。

我的问题:

  • 是否有可能像我描述的那样检测到这种 radio 状态?
  • 如果是,那么如何?你认为这样做是个好主意吗?

我期待在 android 5.0 中引入的新的 JobScheduler 将支持在网络 radio 处于 Activity 状态时调度作业,但根据 API 似乎并非如此。我相信它会同时批处理所有需要网络的作业,但只有在设备上的所有应用程序都明智地使用它的理想世界中它才会好。

最佳答案

简短的回答是否定的,您目前无法确定网络适配器的当前状态。

Android 不允许您深入系统。但是,您可以在查看这四个文件中的值时自行估计状态:

/sys/devices/virtual/net/<InterfaceName>/statistics/tx_packets
/sys/devices/virtual/net/<InterfaceName>/statistics/rx_packets
/sys/devices/virtual/net/<InterfaceName>/statistics/tx_bytes
/sys/devices/virtual/net/<InterfaceName>/statistics/rx_bytes

您可以读取这些文件的当前流量并将其映射到所用网络适配器的适当状态模型。但是,该模型在 Wifi、UMTS、LTE 等方面差异很大。In this whitepaper of the PowerTutor developers (page 4) ,您可以看到 Wifi 和 3G 的状态机以及转换条件和时间(它们是根据经验找到的)。

在大多数情况下,最好坚持使用 network usage tips由 Android 开发者页面提供。老实说,我也记得读过一些关于网络计时器的内容,但找不到来源了。

编辑:我找到了丢失的来源:Project Volta已随 Android 5.0 引入,为您提供额外的电池功能。

关于android - 确定 Android 设备中的 3G/WIFI radio 状态机当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26483822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com