原理概述:

手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时)、Intent.ACTION_BATTERY_LOW(电池电量达到下限时)、和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时)。

当需要在程序中获取电池电量的信息时,需要为应用程序注册BroadcastReceiver组件,当特定的Action事件发生时,系统将会发出相应的广播,应用程序就可以通过BroadcastReceiver来接受广播,并进行相应的处理。

main.xml布局文件

              <?        xml version        =        "        1.0        "         encoding        =        "        utf-8        "        ?>        
< LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
android:orientation
= " vertical "
android:layout_width
= " fill_parent "
android:layout_height
= " fill_parent " >
< ToggleButton android:id = " @+id/tb "
android:layout_width
= " fill_parent "
android:layout_height
= " wrap_content "
android:textOn
= " 停止获取电量信息 "
android:textOff
= " 获取电量信息 " />
< TextView android:id = " @+id/tv "
android:layout_width
= " fill_parent "
android:layout_height
= " wrap_content " />
</ LinearLayout >

BatteryActivity类

              package         com.ljq.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.widget.CompoundButton.OnCheckedChangeListener;


public class BatteryActivity extends Activity {
private ToggleButton tb = null ;
private TextView tv = null ;
private BatteryReceiver receiver = null ;


@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);

receiver
= new BatteryReceiver();
tv
= (TextView)findViewById(R.id.tv);
tb
= (ToggleButton)findViewById(R.id.tb);
tb.setOnCheckedChangeListener(
new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
// 获取电池电量
if (isChecked){
IntentFilter filter
= new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, filter);
// 注册BroadcastReceiver
} else {
// 停止获取电池电量
unregisterReceiver(receiver);
tv.setText(
null );
}

}
});

}

private class BatteryReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
int current = intent.getExtras().getInt( " level " ); // 获得当前电量
int total = intent.getExtras().getInt( " scale " ); // 获得总电量
int percent = current * 100 / total;
tv.setText(
" 现在的电量是 " + percent + " %。 " );
}
}


}

运行结果

更多相关文章

  1. android 百度API定位以及获取天气
  2. 如何在低版本的Android(安卓)SDK中生成缩略图——ThumbnailUtils
  3. android使用百度地图SDK获取定位信息示例
  4. 获取Android(安卓)光感Sensor的值
  5. Android开发:Wifi基础
  6. Android(安卓)获取传感器列表整理及简单实例
  7. 黑马程序员.Android攻城狮.JAVA基础.1.6.String类
  8. Android(安卓)App兼容android10.0系统需要修改那些东西,看这个就
  9. Android从ftp服务器获取文件

随机推荐

  1. Android小米5安装包解析失败问题
  2. android布局控件的用法
  3. Android(安卓)使用Handler的PostDelayed
  4. Activity的android:launchMode
  5. Android:简单的开场界面
  6. Android编译过程详解(一)
  7. android中使用wakelock
  8. android之SMS
  9. android测试器
  10. 获取Android设备基本信息