電池残量を取得する方法 (2/4)

~ インテントを受け取る ~

前へ   1  2  3  4   次へ
androidの簡単な電池残量取得アプリを作っています。前回で、ブロードキャストレシーバーでインテントを受け取る準備ができました。今回は、インテントフィルターを設定して、電池の状態が変化したというインテントを受け取れるようにします。

5.電池の状態が変化したというインテントを受け取れるようにする

ブロードキャストレシーバを作っただけでは、まだインテントを受信できません。インテントフィルターに「電池の状態が変化した」をセットすることで、受信できるようになります。今回は、Activityで描写するので、Activityの中でインテントフィルターを設定することにします。マニフェストをいじらなくて済みます。

6.インテントフィルターを設定する

早い段階で実行されるように、onResume()で設定することにします。具体的には、インテントフィルターにアクション「電池状態変化」を加えて、これをregisterReceiverメソッドでブロードキャストレシーバーに登録します。registerReceiverメソッドが実行されたときと、登録されたアクションについてのインテントを受け取ったときに、ブロードキャストレシーバーのonReceiveメソッドが実行されます。ソースコードは次のようになります。

また、ポーズになってる時に、onReceiveメソッドが実行されては困るので、onPause()で登録を解除しておきます。コードは次のようになります。

SampleBattery01.java

package sample.android.battery01;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

public class SampleBattery01 extends Activity {

	@Override
	protected void onResume() {
		super.onResume();
		//受信を開始
		IntentFilter filter=new IntentFilter();
		filter.addAction(Intent.ACTION_BATTERY_CHANGED);
		registerReceiver(myReceiver,filter);
	}
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	@Override
	protected void onPause() {
		super.onPause();
		//受信を停止
		unregisterReceiver(myReceiver);
	}

	//受信機
	public BroadcastReceiver myReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
		}
	};
}

7.実際にインテントを取得できるようになった

これで、実際にインテントを取得できるようになりました。あとは、インテントから電池残量情報を取り出して表示するだけです。次回は、これをやって、アプリを完成させましょう。

前へ   1  2  3  4   次へ