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_CHANGED
Intent
。允许用户控制轮询周期(例如,每分钟、每 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 通过清单访问电池统计信息或监控电池电量的主要内容,如果未能解决你的问题,请参考以下文章