获取电池电量只有一次使用Android SDK [复制](Get battery level onl

2019-08-18 16:31发布

这个问题已经在这里有一个答案:

  • 获取电量之前广播接收机Intent.ACTION_BATTERY_CHANGED响应 6回答

我在网上搜索上找不到答案,我的问题。 我的问题是让电池电量信息只有一次,如。 调用函数getBatteryLevel() 只有被利用实施方案BroadcastReceiver ,但我知道它会被称为对电池电量的变化事件每次。 请告诉我,我怎样才能得到这些信息只有一次?

Answer 1:

Intent.ACTION_BATTERY_CHANGED广播是什么所谓的“粘滞广播。” 因为这是粘性的,你可以用一个空接收器,当你调用将只能获得电池电量一次广播注册registerReceiver

该功能可让电池电量没有收到更新会是这个样子:

public float getBatteryLevel() {
    Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

    // Error checking that probably isn't needed but I added just in case.
    if(level == -1 || scale == -1) {
        return 50.0f;
    }

    return ((float)level / (float)scale) * 100.0f; 
}

更多的数据可以从这个粘广播拉动。 使用返回batteryIntent作为概述,您可以访问其他额外BatteryManager类。



文章来源: Get battery level only once using Android SDK [duplicate]