Android アプリ開発「MATRIX」

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


ブロードキャストレシーバーの基本的な使い方(その1)

ブロードキャストレシーバーの使い方(その1)

ブロードキャストレシーバーは端末が送信している様々なメッセージや情報を受信するクラスです。これを利用すると、時間やタイムゾーンの変化、バッテリーの残量や充電状態など、細かな端末の状態を知ることができます。また、自分で情報を発信してそれを受信することも可能です。

今回は自分で情報(インテント)を発信(ブロードキャスト)して、それをブロードキャストレシーバーで受信する方法の説明です。

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

詳しい説明はコード内のコメントで記述してあります。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//レイアウトファイルをViewにセット
setContentView(R.layout.activity_main);

//レイアウトファイルのボタンに直にクリックイベントリスナーを設定
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//ブロードキャストレシーバーに自作インテントを送信する
Intent intent1 = new Intent(); //空のインテントを生成
intent1.setAction("MY_INTENT"); //インテントのアクション名を設定
sendBroadcast(intent1); //インテントを送信
}
});
}
}

サンプルコード②(mBroadcastReceiver.java

詳しい説明はコード内のコメントで記述してあります。

public class mBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

//送信されたブロードキャストを受信してトーストで表示
Toast.makeText(context, "受信しました…", Toast.LENGTH_SHORT).show();
}
}

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

マニフェストファイルにブロードキャストレシーバーを登録します。以下の <receiver> タグを追記してください。追記する場所は <activity> タグと同じ並びです。

<!-- ブロードキャストレシーバーと受け取るアクション名「MY_INTENT」を登録 -->
<receiver android:name=".mBroadcastReceiver">
<intent-filter>
<action android:name="MY_INTENT"></action>
</intent-filter>
</receiver>

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

画面構成は中央に以下のボタンを配置しただけの簡単なものです。

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

実行結果

① 起動すると画面の中央にボタンが表示されるのでそれをクリックして自作のインテントを発信(ブロードキャスト)します。

アンドロイド開発「ブロードキャストレシーバー」①

② 送信されたインテントをブロードキャストレシーバーが受信してトーストで「受信しました…」というメッセージを表示します。

アンドロイド開発「ブロードキャストレシーバー」②

備考・その他

ブロードキャストレシーバーの使い方は特に難しいものではありませんが、ついうっかりマニフェストファイルに登録するのを忘れて「あれ、動かないぞ・・・」となることがよくあるので、それには注意してください。次回は、自作のインテントではなく端末の状態などの情報をブロードキャストレシーバーで受信する方法を説明する予定です。

END