Android Notificationの簡単な応用


Notificationは、携帯電話のステータスバーに表示される通知で、携帯電話のステータスバーは携帯電話の画面の一番上にあり、携帯電話の現在のネットワーク状態、バッテリー状態、時間などが一般的に表示されています.Notificationロックは、一般的にNotificationManagerサービスを介してNotificationを送信するグローバル効果のある通知を表します.
MainActivity.java
public class MainActivity extends Activity {
	final int  NOTIFICATION_ID=1;
	NotificationManager nm;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
		
	}
	public void send(View view){
		Intent intent = new Intent(MainActivity.this,NextActivity.class);
		//PendingIntent       Intent,         
		PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
		Builder builder = new Notification.Builder(MainActivity.this);
		//       ,       
		Notification notification = builder.setAutoCancel(true)
		//               
		.setTicker("    ")
		//       
		.setSmallIcon(R.drawable.ic_launcher)
		//         
		.setContentTitle("        ")
		//       
		.setContentText("     。。。。。。。。。。。。")
		//           ,  LED 
		.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS)
		//        Intent
		.setContentIntent(pi)
		.build();
		
		//    ,    
		nm.notify(NOTIFICATION_ID, notification);
	}
	public void cancel(View view){
		//     ID    
		nm.cancel(NOTIFICATION_ID);
	}
}
デフォルト設定を使用したくない場合は、次のコードを使用します.
		//       
		setSound((Uri.parse("file:///sdcard/click.mp3")));
		//       
		setVibrate(new long[]{0,50,100,150});

効果図:
皆さんは疑問を持っていますか?AlertDialog.ビルダーはなぜ内部クラスに書くのですか?これはコンストラクタモードです(複雑なコンストラクションとその表現を分離し、同じコンストラクションプロセスで異なる表現を作成できるようにする.相手が一人で出てきた.より簡単に言えば、オブジェクトの表示はきれいで、作成プロセスが煩雑で、他の人にやらせます.
カスタム通知バー
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void btn(View view) {
		//         ,         
		NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		// Android3.0    NotificationCompat     Notification
		NotificationCompat.Builder builder = new NotificationCompat.Builder(
				this);
		RemoteViews rv = new RemoteViews(getPackageName(), R.layout.layout_buju);
		rv.setTextViewText(R.id.tv1, "  ");
		rv.setTextViewText(R.id.tv2, "  -----------");
		rv.setImageViewResource(R.id.img, R.drawable.ic_launcher);
		//      
		builder.setContent(rv);
		//         :   、    、  
		builder.setSmallIcon(R.drawable.ic_launcher).setTicker("       ").setContentTitle("  1");
		//         
		Intent intent = new Intent(this,NextActivity.class);
		PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
		builder.setContentIntent(pendingIntent);
		//          
		builder.setAutoCancel(true);
		//     
		manager.notify(2, builder.build());
	};
}

上記のコードから分かるように、簡単なinfalterでビューを埋め込むわけではありません.通知はグローバルなので、通知がトリガーされる可能性があるときにAPPが閉じてXMLレイアウトファイルを取得できないため、ここではRemoteViewクラスを借りています.builder.setSmallIcon(R.drawable.ic_launcher).setTicker(「新しいメッセージがあります」).setContentTitle(「タイトル1」);この3つのメソッドは、少なくとも1つ呼び出されて表示されます.NotificationCompatとNotificationの違いは、前者が3.0以降、後者が3.0以前ということです.Notification 3 : smallIcon:setSmallIcon() Title:setContentTitle()
Detail text:setContentText()
効果図: