Android之手机电池电量应用

原理概述:

    手机电池电量的获取在应用程序的开发中也很常用,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 + " %。 " );
}
}


}

运行结果

Android之手机电池电量应用

你可能感兴趣的:(android)