当前位置: 首页 > news >正文

Android获取手机电压,电流,电量,BatteryManager

//手机电流
BatteryManager mBatteryManager = (BatteryManager)getSystemService(Context.BATTERY_SERVICE);
int energy = mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW);
BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {

        int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
              //电池电量最大值
        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
        //电压
        int intExtra = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1)/1000;


        if ((rawlevel >= 0) && (scale > 0)) {
//当前电量
            mBatteryLevel = (rawlevel * 100) / scale;
            Log.e("电量情况", mBatteryLevel + "");
        } else {
            mBatteryLevel = -1;

        }
        int status = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        if (status != -1) {
            switch (status) {
                case 0:
                    mPowerSource = "电池供电";
                    if (mBatteryLevel < powerlow) {// 低于电量下限值向平台发充电质量
                        Log.e(TAG, "onReceive: =======低电量==========" );

                    } else {
                        Log.e(TAG, "onReceive: =======未充电==========" );

                    }
                    break;
                case BatteryManager.BATTERY_PLUGGED_AC:
                    mPowerSource = "交流供电";
                    Log.e(TAG, "onReceive: =======正在充电==========" );

                    if (mBatteryLevel > powerhigh) {// 充电的时候发现当前的电量高于上限向平台发送断电指令
                        Log.e(TAG, "onReceive: =======已充满,请断电!==========" );
                    }
                    break;

                case BatteryManager.BATTERY_PLUGGED_USB:
                    mPowerSource = "USB供电";
                    Log.e(TAG, "onReceive: =======正在充电==========" );
                    if (mBatteryLevel > powerhigh) {
                        Log.e(TAG, "onReceive: =======已充满,请断电!==========" );
                    }
                    break;
            }
        }
    }
};

Activity注册

// 定义电池电量更新广播的过滤器,只接受带有ACTION_BATTERRY_CHANGED事件的Intent
IntentFilter batteryChangedReceiverFilter = new IntentFilter();
batteryChangedReceiverFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//
// 向系统注册batteryChangedReceiver接收器,本接收器的实现见代码字段处
registerReceiver(batteryChangedReceiver, batteryChangedReceiverFilter);

反注册

unregisterReceiver(batteryChangedReceiver);

相关文章:

  • 光纤通信数字孪生系统架构及关键技术研究
  • 数据结构与算法复习:第三十四弹
  • 元宇宙会场APP功能系统软件源码开发
  • 【反诈拒赌 支付在行动】涉赌资金转移典型案例及风险提示
  • 【Python黑科技】把秘密写在照片里(保姆级图文+实现代码)
  • OpenGL ES学习(7)——混合
  • Spoon Kettle 连接之记录集连接详解(Merge join)
  • 光传送网管控融合研究与智能化演进思考
  • 应对三大行业痛点,利尔达用芯打造智能换电系统平台
  • RedHat Linux修改SSHD默认22端口
  • Docker: hello world
  • 08.文件操作
  • linux上redis单机的安装
  • 云服务器CentOS8 安装 Oracle19c
  • 沃尔玛、eBay、wish、新蛋等美系平台对于测评风控点有哪些?怎么解决
  • 【剑指offer】让抽象问题具体化
  • CentOS从零开始部署Nodejs项目
  • CSS实用技巧干货
  • Git同步原始仓库到Fork仓库中
  • Mithril.js 入门介绍
  • React Transition Group -- Transition 组件
  • Redis 懒删除(lazy free)简史
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer插入数据
  • Vue2 SSR 的优化之旅
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 计算机常识 - 收藏集 - 掘金
  • 理解在java “”i=i++;”所发生的事情
  • 聊一聊前端的监控
  • 那些年我们用过的显示性能指标
  • 前端路由实现-history
  • 数组大概知多少
  • 项目实战-Api的解决方案
  • 原生 js 实现移动端 Touch 滑动反弹
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​一些不规范的GTID使用场景
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)Nginx简介和安装教程
  • (C++)八皇后问题
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (小白学Java)Java简介和基本配置
  • (一)SpringBoot3---尚硅谷总结
  • (一)为什么要选择C++
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET MVC 验证码
  • .Net mvc总结
  • .NET 反射的使用