Marshall and unmarshall Alarms passed to and from UpcomingAlarmReceiver.

This commit is contained in:
Phillip Hsu 2017-02-28 15:07:56 -08:00
parent e68ac72629
commit dd4c6d417b
2 changed files with 8 additions and 4 deletions

View File

@ -29,6 +29,7 @@ import com.philliphsu.clock2.R;
import com.philliphsu.clock2.alarms.Alarm; import com.philliphsu.clock2.alarms.Alarm;
import com.philliphsu.clock2.alarms.misc.AlarmController; import com.philliphsu.clock2.alarms.misc.AlarmController;
import com.philliphsu.clock2.util.ContentIntentUtils; import com.philliphsu.clock2.util.ContentIntentUtils;
import com.philliphsu.clock2.util.ParcelableUtil;
import static android.app.PendingIntent.FLAG_ONE_SHOT; import static android.app.PendingIntent.FLAG_ONE_SHOT;
import static com.philliphsu.clock2.util.TimeFormatUtils.formatTime; import static com.philliphsu.clock2.util.TimeFormatUtils.formatTime;
@ -45,7 +46,9 @@ public class UpcomingAlarmReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(final Context context, final Intent intent) { public void onReceive(final Context context, final Intent intent) {
final Alarm alarm = intent.getParcelableExtra(EXTRA_ALARM); final byte[] alarmBytes = intent.getByteArrayExtra(EXTRA_ALARM);
// Unmarshall the bytes into a parcel and create our Alarm with it.
final Alarm alarm = ParcelableUtil.unmarshall(alarmBytes, Alarm.CREATOR);
if (alarm == null) { if (alarm == null) {
throw new IllegalStateException("No alarm received"); throw new IllegalStateException("No alarm received");
} }
@ -84,7 +87,7 @@ public class UpcomingAlarmReceiver extends BroadcastReceiver {
Intent dismissIntent = new Intent(context, UpcomingAlarmReceiver.class) Intent dismissIntent = new Intent(context, UpcomingAlarmReceiver.class)
.setAction(ACTION_DISMISS_NOW) .setAction(ACTION_DISMISS_NOW)
.putExtra(EXTRA_ALARM, alarm); .putExtra(EXTRA_ALARM, ParcelableUtil.marshall(alarm));
PendingIntent piDismiss = PendingIntent.getBroadcast(context, (int) id, dismissIntent, FLAG_ONE_SHOT); PendingIntent piDismiss = PendingIntent.getBroadcast(context, (int) id, dismissIntent, FLAG_ONE_SHOT);
Notification note = new NotificationCompat.Builder(context) Notification note = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_alarm_24dp) .setSmallIcon(R.drawable.ic_alarm_24dp)

View File

@ -36,6 +36,7 @@ import com.philliphsu.clock2.ringtone.playback.AlarmRingtoneService;
import com.philliphsu.clock2.util.ContentIntentUtils; import com.philliphsu.clock2.util.ContentIntentUtils;
import com.philliphsu.clock2.util.DelayedSnackbarHandler; import com.philliphsu.clock2.util.DelayedSnackbarHandler;
import com.philliphsu.clock2.util.DurationUtils; import com.philliphsu.clock2.util.DurationUtils;
import com.philliphsu.clock2.util.ParcelableUtil;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT; import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_NO_CREATE; import static android.app.PendingIntent.FLAG_NO_CREATE;
@ -213,7 +214,7 @@ public final class AlarmController {
public void removeUpcomingAlarmNotification(Alarm a) { public void removeUpcomingAlarmNotification(Alarm a) {
Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class) Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class)
.setAction(UpcomingAlarmReceiver.ACTION_CANCEL_NOTIFICATION) .setAction(UpcomingAlarmReceiver.ACTION_CANCEL_NOTIFICATION)
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, a); .putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, ParcelableUtil.marshall(a));
mAppContext.sendBroadcast(intent); mAppContext.sendBroadcast(intent);
} }
@ -238,7 +239,7 @@ public final class AlarmController {
private PendingIntent notifyUpcomingAlarmIntent(Alarm alarm, boolean retrievePrevious) { private PendingIntent notifyUpcomingAlarmIntent(Alarm alarm, boolean retrievePrevious) {
Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class) Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class)
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, alarm); .putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, ParcelableUtil.marshall(alarm));
if (alarm.isSnoozed()) { if (alarm.isSnoozed()) {
intent.setAction(UpcomingAlarmReceiver.ACTION_SHOW_SNOOZING); intent.setAction(UpcomingAlarmReceiver.ACTION_SHOW_SNOOZING);
} }