获取Android设备电池电量状态
2013-07-22 15:03
387 查看
Android开发者可以利用BroadcastReceiver机制,获取电池电量变化的ACTION_BATTERY_CHANGED intent,进而获取当前android设备的电池状态。
具体操作步骤:
1. 创建一个监听ACTION_BATTERY_CHANGED事件的intentFilter。
2. 创建一个BroadcastReceiver对象,该对象可以接收broadcast intent。
3. 注册BroadcastReceiver对象来监听ACTION_BATTERY_CHANGED事件。
4. 在BroadcastReceiver对象中,重写onReceive方法,在onReceive方法的传入参数intent里获取需要的电池状态信息。
5. 在生命周期结束时,取消step4中的注册。
package com.chen.battery;
import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.TextureView;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
private TextView batterLevel;
private BroadcastReceiver batteryLevelRcvr;
private IntentFilter batteryLevelFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
batterLevel = (TextView)findViewById(R.id.batteryLevel);
monitorBatteryState();
}
private void monitorBatteryState(){
batteryLevelRcvr = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
int health = intent.getIntExtra("health", -1);
int level = -1;
if(rawlevel >= 0 && scale > 0){
level = (rawlevel*100)/scale;
}
sb.append("电池状态: ");
sb.append(level + "% ");
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
sb.append("[没有安装电池]");
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
sb.append("[正在充电]");
break;
default:
if(level <= 10)
sb.append("[电量过低,请充电]");
else if (level <= 100) {
sb.append("[未连接充电器]");
}
break;
}
sb.append(' ');
batterLevel.setText(sb.toString());
}
};
batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelRcvr, batteryLevelFilter);
}
}
具体操作步骤:
1. 创建一个监听ACTION_BATTERY_CHANGED事件的intentFilter。
2. 创建一个BroadcastReceiver对象,该对象可以接收broadcast intent。
3. 注册BroadcastReceiver对象来监听ACTION_BATTERY_CHANGED事件。
4. 在BroadcastReceiver对象中,重写onReceive方法,在onReceive方法的传入参数intent里获取需要的电池状态信息。
5. 在生命周期结束时,取消step4中的注册。
package com.chen.battery;
import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.TextureView;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
private TextView batterLevel;
private BroadcastReceiver batteryLevelRcvr;
private IntentFilter batteryLevelFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
batterLevel = (TextView)findViewById(R.id.batteryLevel);
monitorBatteryState();
}
private void monitorBatteryState(){
batteryLevelRcvr = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
int health = intent.getIntExtra("health", -1);
int level = -1;
if(rawlevel >= 0 && scale > 0){
level = (rawlevel*100)/scale;
}
sb.append("电池状态: ");
sb.append(level + "% ");
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
sb.append("[没有安装电池]");
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
sb.append("[正在充电]");
break;
default:
if(level <= 10)
sb.append("[电量过低,请充电]");
else if (level <= 100) {
sb.append("[未连接充电器]");
}
break;
}
sb.append(' ');
batterLevel.setText(sb.toString());
}
};
batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelRcvr, batteryLevelFilter);
}
}
相关文章推荐
- 获取Android设备电池电量状态
- 获取Android设备电池电量状态
- 获取Android设备电池电量状态
- 获取Android设备电池电量状态
- 获取Android设备电池电量状态
- native层获取Android设备电池电量
- Android设备的电池续航时间优化(Optimizing Battery Life)——(一)监听电池电量和电池的充电状态
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- 【Android Training - Performance】优化电池续航能力[Lesson 1 - 监测设备的电量与充电状态]
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- 获取设备电池电量及状态
- Android 获取设备电池电量
- unity3d 获取电量电池状态等 android and ios
- Android设备的电池续航时间优化(Optimizing Battery Life)——(一)监听电池电量和电池的充电状态
- android 获取充电状态 电池电量
- Android通过反射的方法获取手机存储设备的状态信息
- Android 系列 2.5监控Android设备的电池电量
- Android 蓝牙开发(二)开启蓝牙,获取状态,发现设备。
- Android获取设备电池信息,玩些新花样
- ios获取设备的系统版本,设备信息,电池电量