Android之手机电池电量应用
16lz
2021-01-26
原理概述:
手机电池电量的获取在应用程序的开发中也很常用,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 百度API定位以及获取天气
- 如何在低版本的Android(安卓)SDK中生成缩略图——ThumbnailUtils
- android使用百度地图SDK获取定位信息示例
- 获取Android(安卓)光感Sensor的值
- Android开发:Wifi基础
- Android(安卓)获取传感器列表整理及简单实例
- 黑马程序员.Android攻城狮.JAVA基础.1.6.String类
- Android(安卓)App兼容android10.0系统需要修改那些东西,看这个就
- Android从ftp服务器获取文件