Android 通过清单访问电池统计信息或监控电池电量

Posted

技术标签:

【中文标题】Android 通过清单访问电池统计信息或监控电池电量【英文标题】:Android access battery stats or monitoring battery level through manifest 【发布时间】:2013-08-14 15:22:42 【问题描述】:

我想检测每个百分比的电池变化。我试图用

创建一个服务
context.registerReceiver(this.myBatteryReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

但是当应用程序关闭时,服务会被终止。

我尝试使用 <action android:name="android.intent.action.BATTERY_CHANGED" /> 在清单中注册我的广播接收器,但文档说:

您不能通过清单中声明的​​组件接收此信息,只能通过 Context.registerReceiver() 显式注册它。

即使应用关闭,我还能如何监控电池电量?

我看到了<uses-permission android:name="android.permission.BATTERY_STATS" />的权限。我可以使用它吗?如果是,如何?

【问题讨论】:

【参考方案1】:

即使应用程序关闭,我还能如何监控电池电量?

使用AlarmManager 定期检查电池电量。您可以拨打registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));检索最后一次广播ACTION_BATTERY_CHANGEDIntent。允许用户控制轮询周期(例如,每分钟、每 5 分钟),并且可能不要使用_WAKEUP 警报,因此您只会在设备处于其他使用状态时检查电池电量。

【讨论】:

是的,但是如果我注册了AlarmManager,需要启动应用程序吗?根据我的说法,如果应用程序关闭,此代码可能不起作用:AlarmManager alarm_manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarm_manager.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY , pending_intent); @user2683000:“但如果我注册了 AlarmManager 权限,则需要启动应用程序”——您需要控制一次以设置警报,例如在第一次运行应用程序时。您需要在重新启动时再次获得控制权,因为重新启动会清除所有预定的警报。否则,AlarmManager专门设计来触发您的代码您当时没有当前正在运行的进程。 好的,谢谢你的回答,我明白了。 AlarmManager 运行良好!

以上是关于Android 通过清单访问电池统计信息或监控电池电量的主要内容,如果未能解决你的问题,请参考以下文章

通过 SMBus 访问/监控电池状态

获取 Android 手机的电池电流值

手机电池材质、温度、电压等信息如何查看?

如何在 Android 的后台监控电池电量?

锂电池组如何实现远程监控?

Android之电池状态监控