小编Hav*_*voc的帖子

Android 2.0检查电池电量/充电的最佳方法?

好吧,首先让我说我一直在寻找这个问题的答案.我想弄清楚什么是最佳做法以及最适合电池续航时间.这是我的情况:

我希望我的应用程序在设备达到某个用户定义的电池级别时暂停其活动,而不必使用Intent.ACTION_BATTERY_LOW和Intent.ACTION_BATTERY_OKAY.我在很多程序中都看到了这个选项,并希望用我的应用程序来模拟它.

我知道Intent.ACTION_BATTERY_CHANGED必须是注册事件.您不能在清单中声明它以使BroadcastReceiver获取该接收器以获取Intent.我知道如何编码如何获得电池电量/电平,并查看设备是否通过USB或AC充电

我目前的思考过程给我带来了两个选择,我不知道哪个是最好的选择,或者是否有另一个我不知道的选项?也许有人可以帮我找到帮助我的选项的优缺点?

选项1:使用AlarmManager创建重复警报,以便经常轮询设备以检查电池电量.因此,当我的警报触发时,它将为我的清单注册接收器发送一个自定义Intent来检查电池电量.
PRO没有后台服务可能会被杀死或耗尽电池寿命.
CON没有实时检测到将设备从充电源插入/拔出,并且必须依靠下一个点火警报来检测变化.

选项2:创建一个为Intent.ACTION_BATTERY_CHANGED注册接收器的服务,这样它不仅可以在系统广播时获得电池电量,还可以检测实时充电的变化.
PRO实时检测电池寿命变化和充电方法的变化.
CON持续的服务运行可能会被杀死
CON将耗尽处理时间和电池寿命,以保持检测



电池电量:

在广播接收器响应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;
Run Code Online (Sandbox Code Playgroud)



正在充电:

android USB连接充电信号

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;
}
Run Code Online (Sandbox Code Playgroud)

}


在此先感谢 …

service android battery broadcastreceiver

5
推荐指数
1
解决办法
3574
查看次数

android长时间运行服务没有通知

我看到这个例子有Advance Task杀手,Watch Dog,eBay,电池小部件等程序.有一个运行后台服务监视设备活动,一个广播接收器,但有一个选项可以禁用显示的通知图标.目前我的应用程序通过调用完美无缺地工作:

Context context = getApplicationContext();
Intent intent = new Intent(context, SomeBackGroundService.class);
context.startService(intent) 
Run Code Online (Sandbox Code Playgroud)

然后在我的服务中我打电话:

startForeground(NOTIFICATION_ID, notification);
Run Code Online (Sandbox Code Playgroud)

那么这些其他应用程序如何能够在没有通知图标的情况下运行长时间运行的广播接收器呢?我需要做什么才能禁用/设置以隐藏图标并将此功能添加到我的应用程序中?

提前致谢

service notifications android

2
推荐指数
1
解决办法
2948
查看次数