🐙
Javaのコードでバッテリー残量を調べる
Tips💡
JavaのコードでAndroidのバッテリー残量を調べて、Kotlinで呼ぶのを試してみました。まさか本当にできるとは....
バッテリー残量を調べるコード
BatteryChecker.javaを作成して、以下のコードを書く。
package com.example.fromjavarun.functionjava;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
// バッテリーの残量を取得するクラス
public class BatteryChecker {
// バッテリーの残量を取得するメソッド
public int getBatteryPercentage(Context context) {
// バッテリーの残量を取得
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, filter);
// バッテリーの残量を計算
assert batteryStatus != null;
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// バッテリーの残量をパーセントで返す
float batteryPct = level / (float)scale;
// パーセントに変換
return (int) (batteryPct * 100);
}
}
KotlinからJavaのコードを呼ぶ!
Kotlinから、Javaのコードを呼び出して、View側にバッテリー残量を表示するコード。どうやら、newをしなくてもJavaクラスをインスタンス化できるよだな。
package com.example.fromjavarun
import android.content.Context
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.example.fromjavarun.functionjava.BatteryChecker
import com.example.fromjavarun.ui.theme.FromJavaRunTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
FromJavaRunTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
// BatteryStatusコンポーネントを呼び出し
BatteryStatus(context = this)
}
}
}
}
}
// BatteryStatusコンポーネント
@Composable
fun BatteryStatus(context: Context, modifier: Modifier = Modifier) {
// JavaのBatteryCheckerクラスをインスタンス化
val batteryChecker = BatteryChecker()
// getBatteryPercentageメソッドを呼び出し
val batteryPercentage = batteryChecker.getBatteryPercentage(context)
Column(modifier = modifier) {
Text(text = "Battery percentage: $batteryPercentage%")
}
}
実行結果:
最後に
Javaのコードでロジックを書いて、呼び出すコードを前回の記事で書いたのですが、今回はバッテリーの残量を調べるコードを書いてみました。なんで、Javaのコードを書いたのかというと、最近仕事でAndriod Javaのコードを読むことがあったのと、Kotlinから、Javaのコードを呼ぶことができるのを知って、試してやってみるかと、気になった機能を実装して、試しています。
Discussion