Java 电池级别代码-如何放置在onCreate和onDraw中
为了在Wear操作系统上显示电池电量,我尝试了许多方法,但仍缺少一些关键点,这些关键点使我无法解决问题 在其中一个答案()中,我找到了以下代码:Java 电池级别代码-如何放置在onCreate和onDraw中,java,android,wear-os,Java,Android,Wear Os,为了在Wear操作系统上显示电池电量,我尝试了许多方法,但仍缺少一些关键点,这些关键点使我无法解决问题 在其中一个答案()中,我找到了以下代码: public static float getBatteryLevel(Context context, Intent intent) { Intent batteryStatus = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGE
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()
方法中,以免计算使其过载
我应该把这段代码放在哪里才能让它工作?谢谢你的建议。经过几个小时的测试,我想出了一个不同的主意。所以,如果有人会提出同样的问题,下面的解决方案对我来说很有效,所以值得一试。 我将代码放在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();
}
到目前为止,上面的代码对我来说是有效的,如果在未来几天内有任何变化,我将更新这篇文章。“由于明显的原因,我无法将其放入onCreate()方法中,因为它有一个return语句。”我不明白为什么它是明显的,甚至是真实的。您的onCreate()
方法可以调用该方法,接收结果,然后继续执行onCreate()
中的下一步操作。当然,要不时地更新电池电量,您需要不时地再次调用它。可能使用线程
和可运行
。可能使用AlarmManager
。也许在其他方面。。。