AutoJs : 获取手机电池状态

importClass(android.content.Intent);

importClass(android.content.IntentFilter);

importClass(android.os.BatteryManager);

let BatteryN; //目前电量

let BatteryV; //电池电压

let BatteryT; //电池温度

let BatteryStatus; //电池状态

let BatteryTemp; //电池使用情况

let mBatInfoReceiver = new JavaAdapter(android.content.BroadcastReceiver, {

  onReceive: function (context, intent) {

    log(intent);

    let action = intent.getAction();

    /*

     * 如果捕捉到的action是ACTION_BATTERY_CHANGED, 就运行onBatteryInfoReceiver()

     */

    if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {

      BatteryN = intent.getIntExtra("level", 0); //目前电量

      BatteryV = intent.getIntExtra("voltage", 0); //电池电压

      BatteryT = intent.getIntExtra("temperature", 0); //电池温度

      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;

      }

      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;

      }

      log(

        "目前电量为" +

          BatteryN +

          "% --- " +

          BatteryStatus +

          "\n" +

          "电压为" +

          BatteryV +

          "mV --- " +

          BatteryTemp +

          "\n" +

          "温度为" +

          BatteryT * 0.1 +

          "℃"

      );

    }

  },

});

// 注册一个系统 BroadcastReceiver,作为访问电池计量之用这个不能直接在AndroidManifest.xml中注册

let filter = new IntentFilter();

filter.addAction(Intent.ACTION_BATTERY_CHANGED);

context.registerReceiver(mBatInfoReceiver, filter);

events.on("exit", function () {

  unregisterReceiver();

});

function unregisterReceiver() {

  context.unregisterReceiver(mBatInfoReceiver);

  toastLog("关闭广播监听");

}

setInterval(function () {}, 1000);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 安卓系统通过广播来接受电池状态,下面是我写的一个简单电池管理项目。 广播接受类BatteryReceiver如下:...
    简单Liml阅读 1,589评论 0 1
  • 1.此广播需要一个广播接收者和一个意图 2.广播接收者 private BatteryReceiverbatter...
    StoneWay3阅读 807评论 0 0
  • 电池状态发生改变的时候系统会发送ACTION_BATTERY_CHANGED广播,通过注册这个广播就可以获得电池的...
    peter_RD_nj阅读 1,397评论 0 0
  • 概述 调用原生功能 嵌入原有项目 Flutter模块调试 一、调用原生功能 1.1、Camera某些应用程序可能需...
    IIronMan阅读 1,132评论 1 7
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,593评论 28 53