如何触发电池百分比更改的事件?

Posted

技术标签:

【中文标题】如何触发电池百分比更改的事件?【英文标题】:How to Trigger event on battery percentage changed? 【发布时间】:2020-06-16 15:30:58 【问题描述】:

我正在尝试在后台更改电池百分比时触发一些代码。

我试过了, 报警管理器: 具有相同意图 ID 的警报管理器无法多次工作。所以,我每次都使用不同的 id 并从 alam 设置新的警报 但每次我打开应用程序时它都会运行多个警报。

广播接收器: android 8 后电池更换广播不起作用

【问题讨论】:

【参考方案1】:

您可以监控battery level

// Get the status
val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let  ifilter ->
    context.registerReceiver(null, ifilter)


// Get the battery level percentage
val batteryPct: Float? = batteryStatus?.let  intent ->
    val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
    val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
    level * 100 / scale.toFloat()

来自有关广播接收器的文档

'因为它是一个粘性意图,所以你不需要注册一个 BroadcastReceiver — 只需调用 registerReceiver 传入 null 作为接收器,如下一个 sn-p 所示,返回当前电池状态意图。'

【讨论】:

我想在应用不在前台运行时定期执行此操作。

以上是关于如何触发电池百分比更改的事件?的主要内容,如果未能解决你的问题,请参考以下文章

iphonexr如何显示电池电量百分比

如何计算电池寿命百分比 - android [重复]

如何检查系统上是不是存在电池,然后在 C# 中为我的 WPF 应用程序获取电池百分比

如何在android中获取电池电量变化(仅当有电量/百分比变化时)?

Linux 系统管理命令

如何获取 Mac(Cocoa 或 C)的电池充电水平,具体以 mWh(不是百分比)为单位