Android アプリ開発 「MATRIX」

Androidアプリの開発に役立つサンプル集

端末のバッテリー充電レベルを監視する方法

端末のバッテリー充電レベルを監視する

バッテリーの充電レベルを監視するには、バッテリーの充電レベルが変化するたびに端末から発信されるバッテリー充電レベルのインテントをブロードキャストレシーバーで受信する必要があります。

<流れ>

1.端末のバッテリー受電レベルが変化
       ↓
2.システムがバッテリー充電レベルの変化インテントを発信する
       ↓
3.アプリがブロードキャストレシーバーでインテントを受信
       ↓
4.アプリがバッテリー充電レベルの表示を更新する

サンプルコード①(MainActivity.java

ブロードキャストレシーバーのコードは別ファイルではなく MainActivity.java 内に記述します。(※詳しい説明はコード内のコメントを見てください。)

public class MainActivity extends Activity {

//インテントフィルターの箱を用意
private IntentFilter intentFilter1;
//テキストビューの箱を用意
public static TextView textView1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトファイルをViewにセットする
setContentView(R.layout.activity_main);
//レイアウトファイルにあるテキストビュー「disp_level」を取得して格納
textView1 = (TextView)findViewById(R.id.disp_level);
//インテントフィルターをインスタンス
intentFilter1 = new IntentFilter();
//インテントフィルターにバッテリー残量のアクションを追加
intentFilter1.addAction(Intent.ACTION_BATTERY_CHANGED);

//ブロードキャストレシーバーとインテントフィルターを登録
registerReceiver(mbroadcastReceiver, intentFilter1);
}

//アプリが破棄(終了)される時に呼び出される
@Override
protected void onDestroy() {
super.onDestroy();
//ブロードキャストレシーバーの登録を解除
unregisterReceiver(mbroadcastReceiver);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////ブロードキャストレシーバー//////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
private static BroadcastReceiver mbroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//バッテリー関連のインテントを受信した場合
if (intent.getAction() == Intent.ACTION_BATTERY_CHANGED) {
//テキストビューにバッテリー残量レベルの値をセット
textView1.setText(intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) + "%");
}
}
};
}

サンプルコード②(AndroidManifest.xml

今回はマニフェストファイルにブロードキャストレシーバーを登録する必要はありません。

サンプルコード③(activity_main.xml

レイアウトファイルは画面の中央に大きめの TextView を配置しただけの単純なものです。

<TextView
android:id="@+id/disp_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0%"
android:textSize="100sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

実行結果

① 起動すると画面の中央にテキストが表示されるので、そのままバッテリー充電レベルが変化するのを待つか、エミュレーターであれば、エミュレーターの「拡張コントロール」でバッテリーの充電レベルをマウスで操作します。

アンドロイド開発「バッテリー残量の監視」①

② バッテリー充電レベルが増えたり減ったりすると、画面中央のバッテリー残量レベルの数値もそれに合わせて更新されます。

アンドロイド開発「バッテリー残量の監視」②

備考・その他

今回のサンプルは「ホームボタン」や「バックボタン」でバックグラウンドに移行しても動作し続けます。バックグラウンドから削除(onDestroy)されると完全に終了します。

END