本文实例讲述了android电源信息查看方法。分享给大家供大家参考。具体如下:
1. PowerTestActivity:
import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.BatteryManager;import android.os.Bundle;import android.os.PowerManager;import android.view.View;import android.widget.CheckBox;import android.widget.TextView;import java.text.DateFormat;import java.util.Date;/** * So you thought sync used up your battery life. */public class PowerTestActivity extends Activity {TextView mLog;DateFormat mDateFormat;IntentFilter mFilter;PowerManager.WakeLock mWakeLock;SpinThread mThread;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Set the layout for this activity. You can find it// in res/layout/hello_activity.xmlsetContentView(R.layout.main);findViewById(R.id.checkbox).setOnClickListener(mClickListener);mLog = (TextView)findViewById(R.id.log);mDateFormat = DateFormat.getInstance();mFilter = new IntentFilter();mFilter.addAction(Intent.ACTION_BATTERY_CHANGED);mFilter.addAction(Intent.ACTION_BATTERY_LOW);mFilter.addAction(Intent.ACTION_BATTERY_OKAY);mFilter.addAction(Intent.ACTION_POWER_CONNECTED);PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "BatteryWaster");mWakeLock.setReferenceCounted(false);}@Overridepublic void onPause() {stopRunning();}View.OnClickListener mClickListener = new View.OnClickListener() {public void onClick(View v) {CheckBox checkbox = (CheckBox)v;if (checkbox.isChecked()) {startRunning();} else {stopRunning();}}};void startRunning() {log("Start");registerReceiver(mReceiver, mFilter);mWakeLock.acquire();if (mThread == null) {mThread = new SpinThread();mThread.start();}}void stopRunning() {log("Stop");unregisterReceiver(mReceiver);mWakeLock.release();if (mThread != null) {mThread.quit();mThread = null;}}void log(String s) {mLog.setText(mLog.getText() + "
" + mDateFormat.format(new Date()) + ": " + s);}BroadcastReceiver mReceiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {StringBuffer sb = new StringBuffer();String action = intent.getAction();/* * 如果捕捉到的action是ACTION_BATTERY_CHANGED, 就运行onBatteryInfoReceiver() */if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {sb.append("
当前电量:").append(intent.getIntExtra("level", 0));sb.append("
电池电量:").append(intent.getIntExtra("scale", 100));// 电池伏数sb.append("
当前电压:").append(intent.getIntExtra("voltage", 0));// 电池温度sb.append("
当前温度:").append(intent.getIntExtra("temperature", 0));String BatteryStatus = null;switch (intent.getIntExtra("status",BatteryManager.BATTERY_STATUS_UNKNOWN)) {case BatteryManager.BATTERY_STATUS_CHARGING:BatteryStatus = "充电状态";break;case BatteryManager.BATTERY_STATUS_DISCHARGING:BatteryStatus = "放电状态";break;case BatteryManager.BATTERY_STATUS_NOT_CHARGING:BatteryStatus = "未充电";break;case BatteryManager.BATTERY_STATUS_FULL:BatteryStatus = "充满电";break;case BatteryManager.BATTERY_STATUS_UNKNOWN:BatteryStatus = "未知道状态";break;}sb.append("
当前状态:").append(BatteryStatus);String BatteryStatus2 = null;switch (intent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_AC)) {case BatteryManager.BATTERY_PLUGGED_AC:BatteryStatus2 = "AC充电";break;case BatteryManager.BATTERY_PLUGGED_USB:BatteryStatus2 = "USB充电";break;}sb.append("
充电方式:").append(BatteryStatus2);String BatteryTemp = null;switch (intent.getIntExtra("health",BatteryManager.BATTERY_HEALTH_UNKNOWN)) {case BatteryManager.BATTERY_HEALTH_UNKNOWN:BatteryTemp = "未知错误";break;case BatteryManager.BATTERY_HEALTH_GOOD:BatteryTemp = "状态良好";break;case BatteryManager.BATTERY_HEALTH_DEAD:BatteryTemp = "电池没有电";break;case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:BatteryTemp = "电池电压过高";break;case BatteryManager.BATTERY_HEALTH_OVERHEAT:BatteryTemp = "电池过热";break;}sb.append("
电池状态:").append(BatteryTemp);log(sb.toString());}}};class SpinThread extends Thread {private boolean mStop;public void quit() {synchronized (this) {mStop = true;}}public void run() {while (true) {synchronized (this) {if (mStop) {return;}}}}}}
2. 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"><CheckBox android:id="@+id/checkbox"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginLeft="25dp"android:layout_marginTop="25dp"android:textSize="18sp"android:textColor="#ffffffff"android:text="电源测试"/><ScrollView android:id="@+id/scroll"android:layout_width="fill_parent"android:layout_height="0px"android:layout_weight="1"><TextView android:id="@+id/log"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp"android:textSize="12sp"android:textColor="#ffffffff"/></ScrollView></LinearLayout>
3. AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.lenovo.android" android:versionCode="1" android:versionName="1.0"><uses-sdk android:minSdkVersion="8" /><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".PowerTestActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.DEVICE_POWER" /></manifest>
希望本文所述对大家的Android程序设计有所帮助。