【Android】アプリ起動10秒後にステータス通知するサンプルアプリ
アプリ起動後、
10秒後にステータス通知するサンプルアプリを作りました。
ソースはGitHubに置いています。
#今頃になってGitHubのアカウントを作りました(^_^;
github/AlarmSample at master · Qstairs/github · GitHub
キーとなる処理のソースは以下になります。
AlarmUtilクラスのsetLocalAlarmでアラームを設定します。
public class AlarmUtil { public static void setLocalAlarm(Context context, String message, int requestCode, int interval){ Intent intent = new Intent(context, AlarmReceiver.class); intent.putExtra("MESSAGE", message); PendingIntent sender = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, interval); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); } }
そして、設定したアラームが起動したら、
AlarmReceiverクラスのonReceiveが受け取り、
sendNotificationメソッドでステータス通知をします。
public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ String message = intent.getStringExtra("MESSAGE"); sendNotification(context, message); } private void sendNotification(Context context, String message) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); Notification notification = new Notification.Builder(context) .setContentTitle(message) .setContentText("text") .setContentIntent(pendingIntent) .setSmallIcon(R.mipmap.ic_launcher) .setAutoCancel(true) .build(); NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(1000, notification); } }