因此,对于我的应用程序,我想监视电池电量,即使在我的应用程序关闭时,然后在电池电量低于一定百分比时发送通知。我已经知道如何创建像this这样的后台服务,但我不确定如何使用其监控电池电量。我会在Manifest文件中注册一个BroadcastReceiver,还是应该动态地执行它?另外,我担心BroadcastReceiver在接收到第一次更新后会被OS终止。如何在Android上监控背景中的电池电量?
回答
你必须动态注册它。
在服务中这样做可能是一个不错的选择。这是我用过:
this.registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
...
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
//this will give you battery current status
try{
int level = intent.getIntExtra("level", 0);
int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
String BStatus = "No Data";
if (status == BatteryManager.BATTERY_STATUS_CHARGING){BStatus = "Charging";}
if (status == BatteryManager.BATTERY_STATUS_DISCHARGING){BStatus = "Discharging";}
if (status == BatteryManager.BATTERY_STATUS_FULL){BStatus = "Full";}
if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING){BStatus = "Not Charging";}
if (status == BatteryManager.BATTERY_STATUS_UNKNOWN){BStatus = "Unknown";}
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
String BattPowerSource = "No Data";
if (chargePlug == BatteryManager.BATTERY_PLUGGED_AC){BattPowerSource = "AC";}
if (chargePlug == BatteryManager.BATTERY_PLUGGED_USB){BattPowerSource = "USB";}
String BattLevel = String.valueOf(level);
int BHealth = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1);
String BatteryHealth = "No Data";
if (BHealth == BatteryManager.BATTERY_HEALTH_COLD){BatteryHealth = "Cold";}
if (BHealth == BatteryManager.BATTERY_HEALTH_DEAD){BatteryHealth = "Dead";}
if (BHealth == BatteryManager.BATTERY_HEALTH_GOOD){BatteryHealth = "Good";}
if (BHealth == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE){BatteryHealth = "Over-Voltage";}
if (BHealth == BatteryManager.BATTERY_HEALTH_OVERHEAT){BatteryHealth = "Overheat";}
if (BHealth == BatteryManager.BATTERY_HEALTH_UNKNOWN){BatteryHealth = "Unknown";}
if (BHealth == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE){BatteryHealth = "Unspecified Failure";}
//Do whatever with the data here
} catch (Exception e){
Log.v(TAG, "Battery Info Error");
}
}
};
您是否知道为什么我必须动态地做它? –
http://developer.android.com/reference/android/os/BatteryManager.html - “您无法通过在manifest中声明的组件接收此消息,只能通过使用Context.registerReceiver()显式注册它。请参阅ACTION_BATTERY_LOW ,ACTION_BATTERY_OKAY,ACTION_POWER_CONNECTED和ACTION_POWER_DISCONNECTED为不同的电池相关的广播发送,并可以通过清单接收器接收。“ –
此代码只运行一次,当我启动应用程序....我需要它继续运行...如何要做到这一点? – Aradhna
- 1. 检查背景中的电池电量?
- 2. 监控Android手机上的电池电量
- 3. Android电池电量
- 4. iOS应用程序检查背景中的电池电量
- 5. Android应用程序电池监控
- 6. Android的电池电量低
- 7. 监控机器人电池
- 8. 检查背景中的电池电量与Android的服务限制O
- 9. iOS:监控电池电量使用更多电池?应该自动保存?
- 10. Phonegap上的电池电量
- 11. C#,持续监视电池电量
- 12. 从服务器监视电池电量
- 13. 我的应用程序在背景中耗尽大量电池
- 14. 如何以受控方式模拟Android手机上的电池电量?
- 15. 背景上的电台在线 - Android
- 16. 电池信息服务。要监控电池状态等
- 17. 如何在android中备份电池电量数据?
- 18. 如何在Android设备中模拟电池电量不足
- 19. 在没有永久监控的情况下在Android上获取电池电量的最佳方式是什么?
- 20. android准确的电池电量变化?
- 21. 在特定代码后获取Android上的电池电量
- 22. 正确优化的方式来监测android中的电池电量
- 23. Android开发:显示电池电量
- 24. 电池电量不足。 Android行为
- 25. 测量电池电量?
- 26. Android中麦克风阈值监控的最低电池消耗量
- 27. 如何测量android手机电池的电流电压和电流?
- 28. NStimer的电池电量
- 29. 如何在Galaxy Nexus Phone上设置电池电量
- 30. SocketScan在Swift中获取电池电量
http://stackoverflow.com/questions/24532934/checking-battery-level-in-the-background-with- a-service 请参阅行走食品解决方案 – Kriptite