最終更新:
moonlight_aska 2013年07月04日(木) 22:50:54履歴
バッテリ関連の情報を取得するには, インテントアクション「ACTION_BATTERY_CHANGED」を利用する.
「ACTION_BATTERY_CHANGED」で, 以下の情報を取得できる.
詳細はここ参照.

定数値 | 取得できる情報 |
helth | バッテリの健康状態 |
icon-small | ステータスバーアイコンのリソースID |
level | バッテリの残量 |
plugged | ケーブルの接続状態 |
present | バッテリの有無 |
scale | バッテリ残量の最大値 |
status | 充電状態 |
technology | バッテリの種類 |
temperature | バッテリの温度 |
voltage | バッテリの電圧 |
- Battery01.java
- onCreateメソッド
- BroadcastReceiverのインスタンスを生成し, onReceiverメソッドを実装する.
- Intent#getActionメソッドでインテントのアクションを取得し, アクションが"Intent.ACTION_BATTERY_CHANGED"か判断する.
- Intent.getIntExtra/getBooleanExtra/getStringExtraメソッドで, 上記定数値を指定して各種情報を取得する.
- onResumeメソッド
- "Intent.ACTION_BATTERY_CHANGED"を指定して, IntentFilterのインスタンスを生成する.
- registerReceiverメソッドでブロードキャストレシーバを登録する.
- onPauseメソッド
- unregisterReceiverメソッドでブロードキャストレシーバの登録を解除する.
- onCreateメソッド
package com.moonlight_aska.android.battery01;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class MainActivity extends Activity {
private BroadcastReceiver mReceiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ブロードキャストレシーバ
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
String str = "";
str += "バッテリの健康状態:" + intent.getIntExtra("health", 0) + "\n";
str += "アイコンのリソースID:" + intent.getIntExtra("icon-small", 0) + "\n";
str += "バッテリの残量:" + intent.getIntExtra("level", 0) + "\n";
str += "ケーブルの接続状態:" + intent.getIntExtra("plugged", 0) + "\n";
str += "バッテリの有無:" + intent.getBooleanExtra("present", false) + "\n";
str += "バッテリ残量の最大値:" + intent.getIntExtra("scale", 0) + "\n";
str += "充電状態:" + intent.getIntExtra("status", 0) + "\n";
str += "バッテリの種類:" + intent.getStringExtra("technology") + "\n";
str += "バッテリの温度;" + (float)(intent.getIntExtra("temperature", 0) / 10) + " [℃]\n";
str += "バッテリの電圧:" + intent.getIntExtra("voltage", 0) + " [mV]\n";
TextView text = (TextView)findViewById(R.id.text_id);
text.setText(str);
}
}
};
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
// インテントフィルタ
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
// ブロードキャストレシーバ登録
registerReceiver(mReceiver, filter);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
// ブロードキャストレシーバ登録解除
unregisterReceiver(mReceiver);
}
}

コメントをかく