使用Android SDK获取电池级别一次

我在网上search,找不到我的问题的答案。 我的问题是只获取一次电池电量信息,例如。 调用函数getBatteryLevel() 。 只有使用BroadcastReceiver实现的解决scheme,但据我所知,每当电池电量发生变化时都会调用它。 请告诉我,我怎样才能得到这个信息只有一次?

Solutions Collecting From Web of "使用Android SDK获取电池级别一次"

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

获取电池电量而不接收更新的function如下所示:

 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类中概述的其他附加function。