Androidベース_通知(Notification)


Notification(Notification)は、Androidシステムにおいて比較的特色のある機能であり、あるアプリケーションがフロントで実行されていないアプリケーションに対してユーザにヒントを与えたい場合に通知を利用して実現することができる.通知を出すと、携帯電話の一番上のステータスバーに通知のアイコンが表示され、ドロップダウンステータスバーの後ろに通知の詳細が表示されます.通知は、アクティブ、ブロードキャスト、サービスで作成できます.
一、通知作成プロセス
1.通知を管理するためにNotificationManagerが必要です.一般的にgetSystemService()メソッドでオブジェクトを取得します.
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
2.次に、Notificationを作成するオブジェクトです.
Notification notification = new Notification(R.drawable.icon, "This is ticker text",System.currentTimeMillis());
パラメータ1:通知バーのアイコン
パラメータ2:通知のプロンプト内容を指定する
パラメータ3:通知が作成された時間を設定する
3.通知のレイアウトの設定
標準レイアウトsetLatestEventInfo()
notification.setLatestEventInfo(context, "This is content title", "This is content text", null);
パラメータ1:context
パラメータ2:通知のタイトル
パラメータ3:通知の具体的な内容
パラメータ4:通知の応答をクリックしnullに応答なしを表す
後でカスタムレイアウトを学びます
4.通知を表示
manager.notify(1,notification);
パラメータ1:通知のid、便利なNotificationManagerは通知に対して管理を行います
パラメータ2:作成された通知
二、通知クリック後の応答(PendingIntent)を設定する
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(this, "This is content title", "This is content text", pi);
三、簡単な例
MainActivity.java
package com.myNotification;

import java.io.File;
import com.example.mytest_notification.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
	
	Button open, close;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_layout);
		initObjects();
	}
	
	private void initObjects(){
		open = (Button) findViewById(R.id.xml_open);
		close = (Button) findViewById(R.id.xml_close);
		open.setOnClickListener(this);
		close.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch(v.getId()){
			case R.id.xml_open:
				openNotification();
				break;
			case R.id.xml_close:
				closeNotification();
				break;
			default:
				break;
		}
	}
	
	@SuppressLint("SdCardPath") @SuppressWarnings("deprecation")
	private void openNotification(){
		NotificationManager manage = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		Notification notification = new Notification(R.drawable.ic_launcher, "     ", System.currentTimeMillis());
		Intent intent = new Intent(this, NotificationActivity.class);
		PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
		notification.setLatestEventInfo(this, "  ", "    ", pi);
		Uri soundUri = Uri.fromFile(new File("/sdcard/Music/You Are Beautiful.mp3"));
		notification.sound = soundUri;
		long[] vibrates = {0, 500, 500, 500};
		notification.vibrate = vibrates;
		manage.notify(1, notification);
	}
	
	private void closeNotification(){
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.cancelAll();
	}

}

NotificationActivity.java
package com.myNotification;

import com.example.mytest_notification.R;

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;

public class NotificationActivity extends Activity{
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.notification_layout);
		NotificationManager manage = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manage.cancel(1);
	}

}