gpt4 book ai didi

android - 轮询 ACTION_BATTERY_LOW

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:23 28 4
gpt4 key购买 nike

当电池电量不足时,Android 将发送一个 ACTION_BATTERY_LOW Intent 。然后当它再次正常时,它会发送 ACTION_BATTERY_OKAY。

不幸的是,如果我的应用程序在电池电量不足时启动,那么我不会收到 Intent ;它不粘,所以我无法检测到当前是否存在电池警报。 ACTION_BATTERY_CHANGED 很粘,但它只告诉我当前的电池充电状态,而不是系统是否已发出低电量警报。

有什么方法可以在任何给定时刻检测电池电量是否不足?

最佳答案

这是一个非常棘手的问题。Android Developer上的相关代码有错误。

基本上,您可以在这个链接上了解如何检测它:

https://developer.android.com/training/monitoring-device-state/battery-monitoring.html

您可以使用方法 OnReceive(Context context, Intent intent){}

但是,这个链接有一个错误,用于监控显着变化。[这里注意, Action 名称是android.intent.action.ACTION_BATTERY_LOW]

[1]

但是让我们看看它在Intent中是如何描述的。

ACTION_BATTERY_LOW

在 API 级别 1 中添加字符串 ACTION_BATTERY_LOW广播 Action :表示设备电池电量不足。此广播对应于“低电量警告”系统对话框。

这是一个 protected Intent ,只能由系统发送。

常量值:“android.intent.action.BATTERY_LOW”您可以在 Android Developers Intent 中找到它。

也就是说,这里发生了错误。它应该是 action.BATTERY_LOW 而不是 action.ACTION_BATTERY_LOW。所以你在 AndroidManifest 中的代码应该是:

<receiver android:name=".receiver.BatteryLevelReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW"/>

<!--instead of android.intent.action.ACTION_BATTERY_LOW-->
</intent-filter>
</receiver>

还要确保您的接收器正确无误。

public class BatteryLevelReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

Toast.makeText(context, "BAttery's dying!!", Toast.LENGTH_LONG).show();
Log.e("", "BATTERY LOW!!");

}

在笔记本电脑上调试或获取日志很困难,使用 Toast 可能会有所帮助。

        Toast.makeText(context, "BAttery's dying!!", Toast.LENGTH_LONG).show();
//Toast.makeText(Context context, String str, Integer integer).show();

希望能帮到您解决问题。

关于android - 轮询 ACTION_BATTERY_LOW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103969/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com