Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【Android】アプリ起動10秒後にステータス通知するサンプルアプリ

f:id:qstairs:20160601221351j:plain


アプリ起動後、
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);
    }
}
広告