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

前端技术 2023/09/05 Android

本文实例讲述了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程序设计有所帮助。

本文地址:https://www.stayed.cn/item/13663

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。