libro
www.tuyano.com
Google androidプログラミング入門

ノーティフィケーションの利用 (2/5)

作成:2011-10-10 10:35
更新:2011-10-10 10:35

■ノーティフィケーションを表示する

では、実際に簡単なノーティフィケーションを表示させてみましょう。画面にボタンを作成し、On clickプロパティに「doAction」と設定してください。これでボタンクリック時にdoActionメソッドが実行されるようになります。

続いて、アクティビティのソースコードを作成します。ここでは、jp.tuyano.sampleパッケージの「MySampleActivity」クラスとして作成してあります。それぞれのプロジェクトにあわせてパッケージ名とクラス名は修正してください。

アプリを実行してボタンを押すと、ステータスバーにノーティフィケーションが追加されます。バーを下に引き出して、「TEST INFO」というタイトルのノーティフィケーションが表示されるのを確認しましょう。アプリを終了し、他のアプリを実行したりしてから、ノーティフィケーションをクリック(タッチ)してみてください。終了したMySampleActivityが起動して表示されます――では、ノーティフィケーション作成の流れを整理して行きましょう。

1. Intentの用意
Intent intent = new Intent(this,jp.tuyano.sample.MySampleActivity.class);
まず、ノーティフィケーションをタッチしたときにアクティビティを起動するためのIntentを用意します。これは、thisと、起動クラスを指定して明示的インテントとして用意しておけばよいでしょう。

2. PendingIntentの用意
PendingIntent pending = PendingIntent.getActivity(this, 0, 
        intent, PendingIntent.FLAG_CANCEL_CURRENT);
続いて、Intentを使ってPendingIntentを作成します。これはサービスなどの所で登場したものですが、何かのイベントなどに応じてインテントを実行するのに用いるものです。引数が4つもありますが、最初から「Contextthis)」「リクエストコード」「インテント」「フラグ値」を示します。

リクエストコードというのは、リクエストに関する情報として受渡渡される数値で、これは自分で決めてしまってかまいません。またフラグ値というのは、PendingIntentの振る舞いに関する設定を示す値で、ここではFLAG_CANCEL_CURRENTというのを指定しています。これは既に同じPendingIntentがあるときにそれをキャンセルしてから新しいインスタンスを作るもので、一般的なノーティフィケーションではこれが指定されると考えていいでしょう。

3. Notificationの作成
Notification notify = new Notification();
ノーティフィケーションの本体であるNotificationインスタンスを作成します。これは引数もなく、簡単ですね。

4. Notificationの設定
notify.flags = Notification.FLAG_AUTO_CANCEL;
notify.icon = R.drawable.icon;
notify.tickerText = "Notification!!";
作成したNotificationに必要な設定を行います。ここでは2つのプロパティにそれぞれ値を設定しています。利用しているのは以下のプロパティです。

flags――挙動に関するフラグ。<<R[FLAG_AUTO_CANCELで、既にPendingIntentがある状態で起動した時、前のものをキャンセルするように設定。
icon――表示するアイコン。通常はアプリのアイコンであるR.drawable.iconを指定。

5. PendingIntentをNotificationに設定
notify.setLatestEventInfo(this, "TEST INFO", 
        "テストのノーティフィケーションです。", pending);
setLatestEventInfo」でステータスバーに表示されるノーティフィケーションのタイトルや表示メッセージ、タッチしたイベント時に実行するPendingIntentなどを設定します。これでNotificationの準備は完了です。

6. NotificationManagerの取得
NotificationManager manager = (NotificationManager)this.
        getSystemService(Activity.NOTIFICATION_SERVICE);
後は、Notificationを、サービスに追加するだけです。ノーティケーションはNotificationManagerというサービスで管理されています。これを「getSystemService」で取得します。引数にNOTIFICATION_SERVICEと指定すれば、NotificationManagerが得られます。

7. Notificationの登録
manager.notify(0, notify);
取得したNotificationManagerに、用意したNotificationを登録します。引数には、IDNotificationインスタンスを指定します。IDは、それぞれで決めてかまいません。

――けっこう面倒くさい手順ですが、とりあえずこれでノーティフィケーションの表示はできるようになりました!

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano.sample;

import android.app.*;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.EditText;

public class MySampleActivity extends Activity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	public void doAction(View view){
		Intent intent = new Intent(this,jp.tuyano.sample.MySampleActivity.class);
		PendingIntent pending = PendingIntent.getActivity(this, 0, 
				intent, PendingIntent.FLAG_CANCEL_CURRENT);
		Notification notify = new Notification();
		notify.flags = Notification.FLAG_AUTO_CANCEL;
		notify.icon = R.drawable.icon;
		notify.setLatestEventInfo(this, "TEST INFO", 
				"テストのノーティフィケーションです。", pending);
		NotificationManager manager = (NotificationManager)this.
				getSystemService(Activity.NOTIFICATION_SERVICE);
		manager.notify(0, notify);
	}
}

※関連コンテンツ

「Google androidプログラミング入門」に戻る