当前位置: 移动技术网 > IT编程>移动开发>Android > android电源信息查看(电量、温度、电压)实例代码

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

皮肤病痤疮,葫芦岛招聘信息,遁形窥像

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网