package com.jasonrobinson.racer.receiver; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; import com.jasonrobinson.racer.R; import com.jasonrobinson.racer.model.Race; import com.jasonrobinson.racer.ui.ladder.LadderActivity; import com.jasonrobinson.racer.util.AlarmUtils; import java.text.DateFormat; public class AlarmReceiver extends BroadcastReceiver { public static final String EXTRA_RACE = "race"; @Override public void onReceive(Context context, Intent intent) { Race race = intent.getParcelableExtra(EXTRA_RACE); AlarmUtils.cleanUpFinishedAlarm(context, race); DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(context); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setSmallIcon(R.drawable.ic_launcher); builder.setContentTitle(race.getRaceId()); builder.setContentInfo(context.getString(R.string.starts_at, timeFormat.format(race.getStartAt()))); builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); builder.setLights(context.getResources().getColor(R.color.primary), 1000, 10000); builder.setAutoCancel(true); Intent ladderIntent = new Intent(context, LadderActivity.class); ladderIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ladderIntent.putExtra(LadderActivity.EXTRA_ID, race.getRaceId()); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(LadderActivity.class); stackBuilder.addNextIntent(ladderIntent); PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent); NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(race.getRaceId(), 0, builder.build()); } }