android - 获取电池电量

标签 android broadcast batterylevel

我正在尝试获取电池状态。我使用这段代码:

public class BatteryLevelReceiver extends BroadcastReceiver {
SharedPreferences prefs;
int scale = -1;
int level = -1;

@Override
public void onReceive(Context context, Intent intent) {
    prefs = PreferenceManager.getDefaultSharedPreferences(context);
    level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
    // temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
    // voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
    float nivel = level / (float) scale;
    Log.e("level",level+"");
    Log.e("scale",scale+"");
    Log.e("batteryLevel",nivel+"");
}

在 AndroidManifest.xml 中:

    <uses-permission android:name="android.permission.BATTERY_STATS" />

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

通过这些线程,我获得了该代码:

Get battery level and state in Android

BatteryManager stats not working on Android

但每次,级别和规模的值为-1。

我不知道我错过了什么......

最佳答案

BatteryManagerACTION_BATTERY_CHANGED 提供常量 Intent 不是BATTERY_LOWBATTERY_OKAY。此外,ACTION_BATTERY_CHANGED 必须以编程方式注册,您可以在 onCreate 中执行此操作。由于 BroadcastReceiver 无法接收它,因此请确保您不需要使用 Service 来代替,例如您需要在启动时接收电池事件。

关于android - 获取电池电量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792130/

相关文章:

php - 事件广播 : Laravel Echo fails receiving broadcasts

java - 如何将麦克风音频流式传输到同一设备 throw 扬声器

java - BroadcastReceiver onReceive 方法没有被调用?

java - 如何通过 Android 的帐户管理器类检索 Twitter 和 facebook 身份验证和 token

java - 如何在模拟器上为所有 api 安装 android 市场

android - 从网页安装apk

安卓开发: How do I predict expected battery life based on current battery level?

android - EMV - 生成 AC - 验证码

javascript - 我们如何覆盖 navigator.getBattery()?

arduino - 如何在 Arduino IDE 中将 4.15V 锂 ionic 电池的电池电压转换为电池百分比? (我正在制作某种 LED 电池指示灯)