Android手机设备信息

本文介绍了一种在Android设备上监测电池状态的方法,包括电源类型、当前电量、最大电量、电池健康状态、电池状态等详细信息,并提供了注册和注销广播接收器的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class BatteryData(var context: Context?) {

    private val batteryReceiver by lazy { BatteryReceiver() }

    fun charger(intent: Intent): String {
        val plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
        when (plugged) {
            BatteryManager.BATTERY_PLUGGED_AC ->
                // 电源是AC charger.[应该是指充电器]
                return "Power supply is AC charger."
            BatteryManager.BATTERY_PLUGGED_USB ->
                // 电源是USB port
                return "Power supply is USB port"
            else -> {
                return ""
            }
        }
    }

    //当前电量
    fun currentBattery(intent: Intent): String {
        val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
        return level.toString()
    }

    //最大电量
    fun maxCurrent(intent: Intent): String {
        val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
        return scale.toString()
    }

    //更多状态
    fun otherBattery(intent: Intent): String {
        val voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1)
        // 电池使用的技术。比如,对于锂电池是Li-ion
        val techPronology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY)
        // 当前电池的温度
        val temperaProture = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1)
        val str = ("voltage = " + voltage + " technology = "
                + techPronology + " temperature = " + temperaProture)
        return str
    }

    //电池健康状态
    fun healthBattery(intent: Intent): String {
        val health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1)
        return when (health) {
            BatteryManager.BATTERY_HEALTH_GOOD -> {
                "BATTERY_HEALTH_VERY_GOOD"
            }
            BatteryManager.BATTERY_HEALTH_COLD -> {
                "BATTERY_HEALTH_COLD"
            }
            BatteryManager.BATTERY_HEALTH_DEAD -> {
                "BATTERY_HEALTH_DEAD"
            }
            BatteryManager.BATTERY_HEALTH_OVERHEAT -> {
                "BATTERY_HEALTH_OVERHEAT"
            }
            BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE -> {
                "BATTERY_HEALTH_OVER_VOLTAGE"
            }
            BatteryManager.BATTERY_HEALTH_UNKNOWN -> {
                "BATTERY_HEALTH_UNKNOWN"
            }
            BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE -> {
                "BATTERY_HEALTH_UNSPECIFIED_FAILURE"
            }
            else -> {
                ""
            }
        }
    }

    //电池状态
    fun statusBattery(intent: Intent): String {
        val status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1)
        return when (status) {
            BatteryManager.BATTERY_STATUS_CHARGING ->
                // 正在充电
                "Charging"
            BatteryManager.BATTERY_STATUS_DISCHARGING ->
                "BATTERY_STATUS_DISCHARGING"
            BatteryManager.BATTERY_STATUS_FULL ->
                // 充满
                "Battery full"
            BatteryManager.BATTERY_STATUS_NOT_CHARGING ->
                // 没有充电
                "The battery is not charged"
            BatteryManager.BATTERY_STATUS_UNKNOWN ->
                // 未知状态
                "unknown state"
            else -> ""
        }
    }

    var current = ""
    var max_current = ""
    var battery_health = ""
    var battery_status = ""
    var other_battery = ""
    var charger = ""

    inner class BatteryReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            if (intent != null) {
                //当前电量
                current = currentBattery(intent)
                //最大电量
                max_current = maxCurrent(intent)
                //电池健康状态
                battery_health = healthBattery(intent)
                //电池状态
                battery_status = statusBattery(intent)
                //电源
                charger = charger(intent)
                //更多
                other_battery = otherBattery(intent)
            }

        }

    }


    fun registBattery(handler: Handler) {
        val intent = IntentFilter()
        intent.addAction(Intent.ACTION_BATTERY_CHANGED)
        intent.addAction(Intent.ACTION_BATTERY_LOW)
        intent.addAction(Intent.ACTION_BATTERY_OKAY)
        context?.registerReceiver(batteryReceiver, intent)
        handler.sendEmptyMessageDelayed(1, 4 * 1000)
    }

    fun unRegistBattery() {
        context?.unregisterReceiver(batteryReceiver)
    }

    /**
     * 获取手机电池容量
     */
    fun batterySize(context: Context?): String {
        val profile: Any
        var s = 0.0
        try {
            profile = Class.forName("com.android.internal.os.PowerProfile")
                .getConstructor(Context::class.java)
                .newInstance(context)
            s = Class.forName("com.android.internal.os.PowerProfile")
                .getMethod("getBatteryCapacity")
                .invoke(profile) as Double
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return "$s mAh"
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值