为了显示Wear OS上的电池电量,我尝试了许多方法,但是我仍然缺少一些要点,这使我无法解决问题。
在其中一个答案(Get battery level and state in Android)中,我找到了以下代码:
public static float getBatteryLevel(Context context, Intent intent) {
Intent batteryStatus = context.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int batteryLevel = -1;
int batteryScale = 1;
if (batteryStatus != null) {
batteryLevel = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, batteryLevel);
batteryScale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, batteryScale);
}
return batteryLevel / (float) batteryScale * 100;}
出于明显的原因,我无法将其放入onCreate()
方法中,因为它具有return语句。另外,我不应该将其放入onDraw()
方法中,以免计算过多。
我到底应该在哪里放置此代码以使其起作用?
答案 0 :(得分:0)
谢谢你的建议。经过几个小时的测试,我想到了一个不同的想法。因此,如果有人遇到同样的问题,下面的解决方案对我有用,因此值得尝试。 我将代码放在onCreateEngine()中,并将结果存储在一个变量中,然后在onDraw()方法中,我只需要使用此变量来表示所需的电池电量即可。
@Override
public Engine onCreateEngine() {
//Battery
getApplicationContext().registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context battContext, Intent battIntent) {
batteryLevel = (int) (100 * battIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) / ((float) (battIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1))));
calcBatteryAngle();
}
}, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
//Battery
return new Engine();
}
到目前为止,如果接下来的几天内发生任何更改,以上代码对我仍然有效,我将更新此帖子。