Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 电池级别代码-如何放置在onCreate和onDraw中_Java_Android_Wear Os - Fatal编程技术网

Java 电池级别代码-如何放置在onCreate和onDraw中

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

为了在Wear操作系统上显示电池电量,我尝试了许多方法,但仍缺少一些关键点,这些关键点使我无法解决问题

在其中一个答案()中,我找到了以下代码:

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
。也许在其他方面。。。