好的,让我首先说,我一直在四处寻找这个问题的答案。我试图找出什么是最佳实践,什么是最好的电池寿命。以下是我的情况:
我希望我的应用程序在设备达到某个用户定义的电池级别时暂停其活动,而不必使用Intent.ACTION_BATTERY_LOW和Intent.ACTION_BATTERY_OKAY。我已经在很多程序中看到了这个选项,并希望通过我的应用程序来模仿它。
我知道Intent.ACTION_BATTERY_CHANGED必须是一个注册的事件。您不能仅仅在清单中声明它,以便BroadcastReceiver获得接收方的意图。我知道如何编码,如何获得电池的水平/规模,看看设备是通过USB或AC充电。
我目前的思维过程已经让我有了两个选择,我不知道哪一个是最好的选择,还是我不知道的另一个选择??也许有人能帮我解决各种选择的利弊??
选项1:创建一个重复的警报,使用AlarmManager基本上每隔一段时间轮询设备,以检查电池的电量。因此,当我的警报器开火时,它会发送一个自定义的意图,让我的清单注册接收器检查电池的水平。
专业无后台服务运行,可能会被杀死或消耗电池寿命。
没有实时检测到从充电源中插入/拔出设备的故障,并且必须依赖下一次触发警报来检测更改。
选项2:创建一个为Intent.ACTION_BATTERY_CHANGED注册接收器的服务,这样它不仅可以在系统广播时获得电池电平,而且可以实时检测充电的变化。
实时实时检测电池寿命变化及充电方式的变化。
持续运行的服务可能会被杀死
CON会消耗处理时间和电池寿命,以保持检测的进行。
电池级:
Get battery level before broadcast receiver responds for Intent.ACTION_BATTERY_CHANGED
Intent batteryIntent = context.getApplicationContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int rawlevel = batteryIntent.getIntExtra("level", -1);
double scale = batteryIntent.getIntExtra("scale", -1);
double level = -1;
if (rawlevel >= 0 && scale > 0) {
level = rawlevel / scale;
插入/充电:
android USB connection charging signals
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
}
}
提前感谢
-H
发布于 2012-01-28 18:00:12
这是我想出的解决办法
我创建了一个警报来触发X秒数,我想我把它设为90,以发送一个自定义的意图。然后,我发现android.intent.action.ACTION_POWER_DISCONNECTED和android.intent.action.ACTION_POWER_CONNECTED允许我检查设备是否已插入。使用以上提到的功能组合,我能够检查我的电池水平,如果设备是充电,而不必创建一个固定的服务与注册接收器。我希望这至少对外面的人有帮助。
https://stackoverflow.com/questions/8989180
复制相似问题