C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

バッテリ関連の情報を取得するには, インテントアクション「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メソッドでブロードキャストレシーバの登録を解除する.
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);
  }
}





コメントをかく


ユーザーIDでかく場合はこちら
「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます