首页 > 系统 > Android > 正文

android电源信息查看(电量、温度、电压)实例代码

2020-04-11 11:24:43
字体:
来源:转载
供稿:网友

本文实例讲述了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;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Set the layout for this activity. You can find it    // in res/layout/hello_activity.xml    setContentView(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);  }  @Override  public 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() + "/n" + 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("/n当前电量:").append(intent.getIntExtra("level", 0));        sb.append("/n电池电量:").append(intent.getIntExtra("scale", 100));        // 电池伏数        sb.append("/n当前电压:").append(intent.getIntExtra("voltage", 0));        // 电池温度        sb.append("/n当前温度:").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("/n当前状态:").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("/n充电方式:").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("/n电池状态:").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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表