您的位置:首页 > 移动开发 > Android开发

获取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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息