summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAnnie Chin <afchin@google.com>2015-01-05 16:06:49 -0800
committerAnnie Chin <afchin@google.com>2015-01-09 14:18:20 -0800
commit7e6864814023f0a35f90cc16042bc3ff96eba86c (patch)
tree34fbd9cb3567302264ae5f715df62e86a21c9d6d /src
parent3b7ed22e5e1c40cdda943fc5c699fa1171a0d1e9 (diff)
downloadandroid_packages_apps_DeskClock-7e6864814023f0a35f90cc16042bc3ff96eba86c.tar.gz
android_packages_apps_DeskClock-7e6864814023f0a35f90cc16042bc3ff96eba86c.tar.bz2
android_packages_apps_DeskClock-7e6864814023f0a35f90cc16042bc3ff96eba86c.zip
Add contentaction to upcoming alarm notifications.
The contentaction will send a "SHOW_ALL_ALARMS" message to the wear. Refactor DeskClockExtensions. Change-Id: Ia7b5914fc22ab04f457861704c6dfb3b2a5dcda6
Diffstat (limited to 'src')
-rw-r--r--src/com/android/deskclock/AlarmClockFragment.java7
-rw-r--r--src/com/android/deskclock/DeskClock.java1
-rw-r--r--src/com/android/deskclock/DeskClockExtensions.java26
-rw-r--r--src/com/android/deskclock/ExtensionsFactory.java96
-rw-r--r--src/com/android/deskclock/alarms/AlarmNotifications.java39
5 files changed, 39 insertions, 130 deletions
diff --git a/src/com/android/deskclock/AlarmClockFragment.java b/src/com/android/deskclock/AlarmClockFragment.java
index 98892fca5..681a5c85d 100644
--- a/src/com/android/deskclock/AlarmClockFragment.java
+++ b/src/com/android/deskclock/AlarmClockFragment.java
@@ -104,8 +104,6 @@ public class AlarmClockFragment extends DeskClockFragment implements
private static final String KEY_UNDO_SHOWING = "undoShowing";
private static final String KEY_PREVIOUS_DAY_MAP = "previousDayMap";
private static final String KEY_SELECTED_ALARM = "selectedAlarm";
- private static final DeskClockExtensions sDeskClockExtensions = ExtensionsFactory
- .getDeskClockExtensions();
private static final int REQUEST_CODE_RINGTONE = 1;
private static final long INVALID_ID = -1;
@@ -1361,8 +1359,6 @@ public class AlarmClockFragment extends DeskClockFragment implements
ContentResolver cr = context.getContentResolver();
AlarmStateManager.deleteAllInstances(context, alarm.id);
Alarm.deleteAlarm(cr, alarm.id);
- sDeskClockExtensions.deleteAlarm(
- AlarmClockFragment.this.getActivity().getApplicationContext(), alarm.id);
}
return null;
}
@@ -1386,9 +1382,6 @@ public class AlarmClockFragment extends DeskClockFragment implements
// Create and add instance to db
if (newAlarm.enabled) {
- sDeskClockExtensions.addAlarm(
- AlarmClockFragment.this.getActivity().getApplicationContext(),
- newAlarm);
return setupAlarmInstance(context, newAlarm);
}
}
diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java
index 0dd9c5ca7..c5eb58d27 100644
--- a/src/com/android/deskclock/DeskClock.java
+++ b/src/com/android/deskclock/DeskClock.java
@@ -260,7 +260,6 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe
// We need to update the system next alarm time on app startup because the
// user might have clear our data.
AlarmStateManager.updateNextAlarm(this);
- ExtensionsFactory.init(getAssets());
}
@Override
diff --git a/src/com/android/deskclock/DeskClockExtensions.java b/src/com/android/deskclock/DeskClockExtensions.java
index 09c73569d..29cd09a53 100644
--- a/src/com/android/deskclock/DeskClockExtensions.java
+++ b/src/com/android/deskclock/DeskClockExtensions.java
@@ -1,28 +1,20 @@
package com.android.deskclock;
import android.content.Context;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
-import com.android.deskclock.provider.Alarm;
+import com.android.deskclock.provider.AlarmInstance;
/** DeskClockExtensions. */
public interface DeskClockExtensions {
- /**
- * Notify paired device that a new alarm has been created on the phone, so that the alarm can be
- * synced to the device.
- *
- * @param context the application context.
- * @param newAlarm the alarm to add.
- */
- public void addAlarm(Context context, Alarm newAlarm);
+ public void sendNotification(NotificationManagerCompat nm,
+ NotificationCompat.Builder notification,
+ AlarmInstance instance);
- /**
- * Notify paired device that an alarm has been deleted from the phone so that it can also be
- * deleted from the device.
- *
- * @param context the application context.
- * @param alarmId the alarm id of the alarm to delete.
- */
- public void deleteAlarm(Context context, long alarmId);
+ public void sendNotification(NotificationManagerCompat nm,
+ NotificationCompat.Builder notification, AlarmInstance instance, Context context);
+ public void clearNotification(NotificationManagerCompat nm, AlarmInstance instance);
}
diff --git a/src/com/android/deskclock/ExtensionsFactory.java b/src/com/android/deskclock/ExtensionsFactory.java
index 7dd773085..1f19190db 100644
--- a/src/com/android/deskclock/ExtensionsFactory.java
+++ b/src/com/android/deskclock/ExtensionsFactory.java
@@ -1,94 +1,40 @@
package com.android.deskclock;
import android.content.Context;
-import android.content.res.AssetManager;
-import android.util.Log;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
-import com.android.deskclock.provider.Alarm;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
+import com.android.deskclock.provider.AlarmInstance;
public class ExtensionsFactory {
-
- private static String TAG = "ExtensionsFactory";
- // Config filename for mappings of various class names to their custom
- // implementations.
- private static String EXTENSIONS_PROPERTIES = "deskclock_extensions.properties";
- private static String DESKCLOCKEXTENSIONS_KEY = "DeskclockExtensions";
- private static Properties sProperties = new Properties();
private static DeskClockExtensions sDeskClockExtensions = null;
- public static void init(AssetManager assetManager) {
- try {
- InputStream fileStream = assetManager.open(EXTENSIONS_PROPERTIES);
- sProperties.load(fileStream);
- fileStream.close();
- } catch (FileNotFoundException e) {
- // No custom extensions. Ignore.
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "No custom extensions.");
- }
- } catch (IOException e) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, e.toString());
- }
- }
- }
+ private ExtensionsFactory() { }
- private static <T> T createInstance(String className) {
- try {
- Class<?> c = Class.forName(className);
- return (T) c.newInstance();
- } catch (ClassNotFoundException e) {
- if (Log.isLoggable(TAG, Log.ERROR)) {
- Log.e(TAG, className + ": unable to create instance.", e);
- }
- } catch (IllegalAccessException e) {
- if (Log.isLoggable(TAG, Log.ERROR)) {
- Log.e(TAG, className + ": unable to create instance.", e);
- }
- } catch (InstantiationException e) {
- if (Log.isLoggable(TAG, Log.ERROR)) {
- Log.e(TAG, className + ": unable to create instance.", e);
- }
- }
- return null;
+ public static void init(DeskClockExtensions extensions) {
+ sDeskClockExtensions = extensions;
}
public static DeskClockExtensions getDeskClockExtensions() {
- if ((sDeskClockExtensions != null)) {
- return sDeskClockExtensions;
+ if (sDeskClockExtensions == null) {
+ sDeskClockExtensions = new NullDeskClockExtensions();
}
- String className = sProperties.getProperty(DESKCLOCKEXTENSIONS_KEY);
- if (className != null) {
- sDeskClockExtensions = createInstance(className);
- } else {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, DESKCLOCKEXTENSIONS_KEY + " not found in properties file.");
- }
- }
+ return sDeskClockExtensions;
+ }
- if (sDeskClockExtensions == null) {
- sDeskClockExtensions = new DeskClockExtensions() {
- @Override
- public void addAlarm(Context context, Alarm newAlarm) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Add alarm: Empty inline implementation called.");
- }
- }
+ private static class NullDeskClockExtensions implements DeskClockExtensions {
+ @Override
+ public void sendNotification(NotificationManagerCompat nm,
+ NotificationCompat.Builder notification, AlarmInstance instance) { }
- @Override
- public void deleteAlarm(Context context, long alarmId) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Delete alarm: Empty inline implementation called.");
- }
- }
- };
+ @Override
+ public void sendNotification(NotificationManagerCompat nm,
+ NotificationCompat.Builder notification, AlarmInstance instance, Context context) {
+ }
+
+ @Override
+ public void clearNotification(NotificationManagerCompat nm, AlarmInstance instance) {
}
- return sDeskClockExtensions;
}
}
diff --git a/src/com/android/deskclock/alarms/AlarmNotifications.java b/src/com/android/deskclock/alarms/AlarmNotifications.java
index 555429bcd..9ba1c69bf 100644
--- a/src/com/android/deskclock/alarms/AlarmNotifications.java
+++ b/src/com/android/deskclock/alarms/AlarmNotifications.java
@@ -22,25 +22,19 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import com.android.deskclock.AlarmClockFragment;
import com.android.deskclock.AlarmUtils;
import com.android.deskclock.DeskClock;
+import com.android.deskclock.ExtensionsFactory;
import com.android.deskclock.LogUtils;
import com.android.deskclock.R;
import com.android.deskclock.provider.Alarm;
import com.android.deskclock.provider.AlarmInstance;
public final class AlarmNotifications {
- /*
- * Given the hash code for a phone notification, return the hash code for the corresponding
- * notification on the wear.
- */
- private static int getWearNotificationHashCode(int phoneNotificationHash) {
- return -phoneNotificationHash;
- }
-
public static void registerNextAlarmWithAlarmManager(Context context, AlarmInstance instance) {
// Sets a surrogate alarm with alarm manager that provides the AlarmClockInfo for the
// alarm that is going to fire next. The operation is constructed such that it is ignored
@@ -72,7 +66,7 @@ public final class AlarmNotifications {
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
Resources resources = context.getResources();
- Notification.Builder notification = new Notification.Builder(context)
+ NotificationCompat.Builder notification = new NotificationCompat.Builder(context)
.setContentTitle(resources.getString(R.string.alarm_alert_predismiss_title))
.setContentText(AlarmUtils.getAlarmText(context, instance))
.setSmallIcon(R.drawable.stat_notify_alarm)
@@ -110,7 +104,7 @@ public final class AlarmNotifications {
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
Resources resources = context.getResources();
- Notification.Builder notification = new Notification.Builder(context)
+ NotificationCompat.Builder notification = new NotificationCompat.Builder(context)
.setContentTitle(resources.getString(R.string.alarm_alert_predismiss_title))
.setContentText(AlarmUtils.getAlarmText(context, instance))
.setSmallIcon(R.drawable.stat_notify_alarm)
@@ -139,14 +133,8 @@ public final class AlarmNotifications {
nm.cancel(instance.hashCode());
nm.notify(instance.hashCode(), notification.build());
- // Set up non-ongoing wear notification
- notification.setOngoing(false)
- .setGroup(Integer.toString(instance.hashCode()))
- .setGroupSummary(false)
- .setLocalOnly(false);
-
- nm.cancel(getWearNotificationHashCode(instance.hashCode()));
- nm.notify(getWearNotificationHashCode(instance.hashCode()), notification.build());
+ ExtensionsFactory.getDeskClockExtensions().sendNotification(
+ nm, notification, instance, context);
}
public static void showSnoozeNotification(Context context, AlarmInstance instance) {
@@ -154,7 +142,7 @@ public final class AlarmNotifications {
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
Resources resources = context.getResources();
- Notification.Builder notification = new Notification.Builder(context)
+ NotificationCompat.Builder notification = new NotificationCompat.Builder(context)
.setContentTitle(instance.getLabelOrDefault(context))
.setContentText(resources.getString(R.string.alarm_alert_snooze_until,
AlarmUtils.getFormattedTime(context, instance.getAlarmTime())))
@@ -183,14 +171,7 @@ public final class AlarmNotifications {
nm.cancel(instance.hashCode());
nm.notify(instance.hashCode(), notification.build());
- // Set up non-ongoing wear notification
- notification.setOngoing(false)
- .setGroup(Integer.toString(instance.hashCode()))
- .setGroupSummary(false)
- .setLocalOnly(false);
-
- nm.cancel(getWearNotificationHashCode(instance.hashCode()));
- nm.notify(getWearNotificationHashCode(instance.hashCode()), notification.build());
+ ExtensionsFactory.getDeskClockExtensions().sendNotification(nm, notification, instance);
}
public static void showMissedNotification(Context context, AlarmInstance instance) {
@@ -291,9 +272,7 @@ public final class AlarmNotifications {
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
nm.cancel(instance.hashCode());
- // Also clear corresponding watch notification when an upcoming or snoozed alarm is
- // dismissed from either the phone or the wear.
- nm.cancel(getWearNotificationHashCode(instance.hashCode()));
+ ExtensionsFactory.getDeskClockExtensions().clearNotification(nm, instance);
}
private static Intent createViewAlarmIntent(Context context, AlarmInstance instance) {