Android Notification(通知) サンプル
開始したサービスから、通知を行い、通知をクリックしたら Activity を表示する。
https://github.com/pppiroto/KaigiUtil/tree/73bfa6c6a624207552066129b157353b159f2ca5
1.通知アイコン
通知アイコンを準備。
AndroidStudio から、res/drawable のコンテキストメニューから、New-Image Asset を選択、Icon Type に、Notification icons を指定
2.Notificationの作成
https://developer.android.com/guide/topics/ui/notifiers/notifications.html?hl=ja
package info.typea.kaigiutil; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.os.Vibrator; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; import android.widget.Toast; public class SleepDefenderService extends Service { private Vibrator vibrator; public SleepDefenderService() { } @Override public IBinder onBind(Intent intent) { throw null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { vibrator = (Vibrator)this.getSystemService(Context.VIBRATOR_SERVICE); if (!vibrator.hasVibrator()) { Toast.makeText(this, "no vibrator.", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "start vibe as service", Toast.LENGTH_SHORT).show(); long pattern[] = {1000, 100}; int repeatIndex = 0; // 繰り返し開始位置 -1の場合繰り返しなし vibrator.vibrate(pattern, repeatIndex); } doNnotify(); return START_STICKY; } /** * notifications */ private void doNnotify(){ // 通知を作成 NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_notification) .setContentTitle("Kaigi Util") .setContentText("Stop sleep defender for click here.") .setTicker("Sleep defender started."); // Activity を起動 Intent resultIntent = new Intent(this, ContentActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(ContentActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent pendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); builder.setContentIntent(pendingIntent); int notificationId = 1; NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); manager.notify(notificationId, builder.build()); } @Override public void onDestroy() { super.onDestroy(); vibrator.cancel(); Toast.makeText(this, "stop vibe as service", Toast.LENGTH_SHORT).show(); } }