電池の状態を取得する | ||||||||||||||||||||||
ここでは電池の状態を取得する方法を確認していきます。
電池の情報はインテントから「 ACTION_BATTERY_CHANGED 」というブロードキャストレシーバを受け取ることによって取得できます。 実際に取得できる内容は以下の表の通りです。
BatteryActivity.java package goodroid.sample.battery; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.util.Log; public class BatteryActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onResume(){ super.onResume(); // インテントフィルタの登録 IntentFilter filter = new IntentFilter(); // インテントフィルタへACTION_BATTERY_CHANGEDアクションを追加 filter.addAction(Intent.ACTION_BATTERY_CHANGED); // ブロードキャストレシーバを登録する registerReceiver(mBroadcastReceiver, filter); } @Override protected void onPause(){ super.onPause(); // ブロードキャストレシーバを取り除く unregisterReceiver(mBroadcastReceiver); } private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent){ String action = intent.getAction(); // インテントのアクションが「 ACTION_BATTERY_CHANGED 」だった場合 if(action.equals(Intent.ACTION_BATTERY_CHANGED)){ // 電池の(健康)状態を取得 int health = intent.getIntExtra("health", 0); // バッテリ状態のアイコンのリソースIDを取得 int icon = intent.getIntExtra("icon-small", 0); // 電池の残量を取得 int level = intent.getIntExtra("level", 0); // 電池の最大値を取得 int scale = intent.getIntExtra("scale", 0); // ケーブルの接続状態を取得 int plugged = intent.getIntExtra("plugged", 0); // バッテリの有無を取得 boolean present = intent.getBooleanExtra("present", false); // 充電の状態を取得 int status = intent.getIntExtra("status", 0); // 充電池の種類を取得 String technology = intent.getStringExtra("technology"); // 電池の温度を取得 int temperature = intent.getIntExtra("temperature", 0); // 電池の電圧を取得 int voltage = intent.getIntExtra("voltage", 0); // 電池の状態を表示 switch (health) { case BatteryManager.BATTERY_HEALTH_UNKNOWN: Log.d("BATTERY", "電池の(健康)状態: NKNOWN"); break; case BatteryManager.BATTERY_HEALTH_DEAD: Log.d("BATTERY", "電池の(健康)状態: DEAD"); break; case BatteryManager.BATTERY_HEALTH_GOOD: Log.d("BATTERY", "電池の(健康)状態: GOOD"); break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: Log.d("BATTERY", "電池の(健康)状態: OVERHEAT"); break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: Log.d("BATTERY", "電池の(健康)状態: OVER VOLTAGE"); break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: Log.d("BATTERY", "電池の(健康)状態: UNSPECIFIED FAILURE"); break; } Log.d("BATTERY", "電池状態のアイコンのリソースID:" + icon); Log.d("BATTERY", "電池の残量:" + level); Log.d("BATTERY", "電池の最大値:" + scale); switch (plugged) { case BatteryManager.BATTERY_PLUGGED_AC: Log.d("BATTERY", "ケーブルの接続状態: AC"); break; case BatteryManager.BATTERY_PLUGGED_USB: Log.d("BATTERY", "ケーブルの接続状態: USB"); break; } Log.d("BATTERY", "電池の有無:" + present); switch (status) { case BatteryManager.BATTERY_STATUS_CHARGING: Log.d("BATTERY", "充電の状態 : CHARGING"); break; case BatteryManager.BATTERY_STATUS_DISCHARGING: Log.d("BATTERY", "充電の状態 : DISCHARGING"); break; case BatteryManager.BATTERY_STATUS_FULL: Log.d("BATTERY", "充電の状態 : FULL"); break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: Log.d("BATTERY", "充電の状態 : NOT CHARGING"); break; case BatteryManager.BATTERY_STATUS_UNKNOWN: Log.d("BATTERY", "充電の状態 : UNKNOWN"); break; } Log.d("BATTERY", "充電池の種類:" + technology); Log.d("BATTERY", "電池の温度:" + (float)temperature); Log.d("BATTERY", "電池の電圧:" + (float)voltage); } } }; } エミュレータでは電池の温度と電圧は取得できないようです。 実行結果 ![]() |
||||||||||||||||||||||
8023 views | コメント:0 | 2012-06-14 |
コメント
|
|
まだこの記事にコメントはありません |