From 440a14a780882cf29caf507835bf0f19654b0468 Mon Sep 17 00:00:00 2001 From: Volker Richert <v.richert@addmore.de> Date: Thu, 1 Dec 2016 15:29:20 +0100 Subject: [PATCH] use different methods to set alarm depending on OS version --- .../service/MedtronicCnlAlarmReceiver.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java index a0af992..6b766f0 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java +++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java @@ -4,6 +4,7 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.support.v4.content.WakefulBroadcastReceiver; import android.util.Log; @@ -16,8 +17,8 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { private static final String TAG = MedtronicCnlAlarmReceiver.class.getSimpleName(); private static final int ALARM_ID = 102; // Alarm id - private static PendingIntent pi = null; - private static AlarmManager am = null; + private static PendingIntent pendingIntent = null; + private static AlarmManager alarmManager = null; @Override public void onReceive(final Context context, Intent intent) { @@ -31,9 +32,9 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { public void setContext(Context context) { cancelAlarm(); - am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, MedtronicCnlAlarmReceiver.class); - pi = PendingIntent.getBroadcast(context, ALARM_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT); + pendingIntent = PendingIntent.getBroadcast(context, ALARM_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT); } // Setting the alarm in 15 seconds from now @@ -43,7 +44,7 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { // Setting the alarm to call onRecieve public void setAlarm(long millis) { - if (am == null || pi == null) + if (alarmManager == null || pendingIntent == null) return; cancelAlarm(); @@ -53,7 +54,12 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { millis = System.currentTimeMillis(); Log.d(TAG, "AlarmManager set to fire at " + new Date(millis)); - am.setExact(AlarmManager.RTC_WAKEUP, millis, pi); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, millis, pendingIntent); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + alarmManager.setExact(AlarmManager.RTC_WAKEUP, millis, pendingIntent); + } else + alarmManager.set(AlarmManager.RTC_WAKEUP, millis, pendingIntent); } // restarting the alarm after MedtronicCnlIntentService.POLL_PERIOD_MS from now @@ -63,10 +69,10 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { // Cancel the alarm. public void cancelAlarm() { - if (am == null || pi == null) + if (alarmManager == null || pendingIntent == null) return; - am.cancel(pi); + alarmManager.cancel(pendingIntent); } } -- GitLab