Set alarms with setExactAndAllowWhileIdle()
This commit is contained in:
parent
cdacf1ff50
commit
bcfa85e0c1
|
@ -1,6 +1,5 @@
|
|||
package sh.ftp.rocketninelabs.meditationassistant;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
|
@ -124,21 +123,8 @@ public class DailyReminderReceiver extends BroadcastReceiver {
|
|||
PendingIntent.FLAG_CANCEL_CURRENT
|
||||
);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
/* Don't use setAlarmClock here as it will always place an alarm icon in the status bar */
|
||||
getMeditationAssistant().reminderAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
|
||||
calendar.getTimeInMillis(),
|
||||
getMeditationAssistant().reminderPendingIntent);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
getMeditationAssistant().reminderAlarmManager.setExact(AlarmManager.RTC_WAKEUP,
|
||||
calendar.getTimeInMillis(),
|
||||
getMeditationAssistant().reminderPendingIntent);
|
||||
} else {
|
||||
getMeditationAssistant().reminderAlarmManager.set(AlarmManager.RTC_WAKEUP,
|
||||
calendar.getTimeInMillis(),
|
||||
getMeditationAssistant().reminderPendingIntent);
|
||||
}
|
||||
|
||||
/* Don't use setAlarmClock here as it will always place an alarm icon in the status bar */
|
||||
getMeditationAssistant().setAlarm(false, calendar.getTimeInMillis(), getMeditationAssistant().reminderPendingIntent);
|
||||
Log.d("MeditationAssistant", "Set daily reminder alarm for " + calendar.toString());
|
||||
}
|
||||
|
||||
|
|
|
@ -7,11 +7,8 @@ import android.database.sqlite.SQLiteDatabase;
|
|||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.util.Log;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
private static final int DATABASE_VERSION = 5;
|
||||
|
|
|
@ -13,7 +13,6 @@ import android.content.res.Configuration;
|
|||
import android.content.res.Resources;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
@ -146,15 +145,8 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
getApplicationContext(), ID_INTERVAL,
|
||||
intent_interval, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am_interval = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am_interval.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(MainActivity.this, 0, new Intent(MainActivity.this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent_interval);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am_interval.setExact(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
} else {
|
||||
am_interval.set(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
}
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent_interval);
|
||||
|
||||
handler.postDelayed(this, interval * 1000);
|
||||
}
|
||||
}
|
||||
|
@ -1208,20 +1200,11 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
pendingintent = PendingIntent.getActivity(
|
||||
getApplicationContext(), ID_END, intent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent);
|
||||
} else {
|
||||
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent);
|
||||
}
|
||||
|
||||
Log.d("MeditationAssistant", "Setting MAIN WAKEUP alarm for "
|
||||
+ String.valueOf(cal.getTimeInMillis()) + " (Now: "
|
||||
+ System.currentTimeMillis() + ", in: " + String.valueOf((cal.getTimeInMillis() - System.currentTimeMillis()) / 1000) + ")");
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent);
|
||||
}
|
||||
|
||||
getMeditationAssistant().ispaused = false;
|
||||
|
@ -1362,20 +1345,11 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
pendingintent = PendingIntent.getActivity(
|
||||
getApplicationContext(), ID_END, intent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(MainActivity.this, 0, new Intent(MainActivity.this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent);
|
||||
} else {
|
||||
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent);
|
||||
}
|
||||
|
||||
Log.d("MeditationAssistant", "Setting MAIN WAKEUP alarm for "
|
||||
+ String.valueOf(cal.getTimeInMillis()) + " (Now: "
|
||||
+ System.currentTimeMillis() + ", in: " + String.valueOf((cal.getTimeInMillis() - System.currentTimeMillis()) / 1000) + ")");
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent);
|
||||
}
|
||||
|
||||
if (!skipDelay) {
|
||||
|
@ -1438,16 +1412,7 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
pendingintent_delay = PendingIntent.getActivity(
|
||||
getApplicationContext(), ID_DELAY, intent_delay,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am_delay = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am_delay.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent_delay);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am_delay.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent_delay);
|
||||
} else {
|
||||
am_delay.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
|
||||
pendingintent_delay);
|
||||
}
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent_delay);
|
||||
} else {
|
||||
handler.postDelayed(meditateRunnable, 50);
|
||||
}
|
||||
|
@ -1476,16 +1441,7 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
pendingintent_interval = PendingIntent.getActivity(
|
||||
getApplicationContext(), ID_INTERVAL,
|
||||
intent_interval, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am_interval = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am_interval.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent_interval);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am_interval.setExact(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
} else {
|
||||
am_interval.set(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
}
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent_interval);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1906,16 +1862,7 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
pendingintent_interval = PendingIntent.getActivity(
|
||||
getApplicationContext(), ID_INTERVAL,
|
||||
intent_interval, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
am_interval = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am_interval.setAlarmClock(new AlarmManager.AlarmClockInfo(cal.getTimeInMillis(), PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingintent_interval);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am_interval.setExact(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
} else {
|
||||
am_interval.set(AlarmManager.RTC_WAKEUP,
|
||||
cal.getTimeInMillis(), pendingintent_interval);
|
||||
}
|
||||
getMeditationAssistant().setAlarm(true, cal.getTimeInMillis(), pendingintent_interval);
|
||||
} else {
|
||||
Log.d("MeditationAssistant", "Skipping INTERVAL WAKEUP alarm");
|
||||
}
|
||||
|
|
|
@ -121,6 +121,7 @@ public class MeditationAssistant extends Application {
|
|||
private Integer webview_scale = null;
|
||||
private String timerMode = null;
|
||||
private SharedPreferences prefs = null;
|
||||
private AlarmManager am;
|
||||
private WakeLocker wakeLocker = new WakeLocker();
|
||||
String pausedTimerHoursMinutes;
|
||||
String pausedTimerSeconds;
|
||||
|
@ -310,6 +311,22 @@ public class MeditationAssistant extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
public void setAlarm(boolean allowAlarmClock, long triggerAtMillis, PendingIntent pendingIntent) {
|
||||
if (am == null) {
|
||||
am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
|
||||
} else if (Build.VERSION.SDK_INT >= 21 && allowAlarmClock) {
|
||||
am.setAlarmClock(new AlarmManager.AlarmClockInfo(triggerAtMillis, PendingIntent.getActivity(this, 0, new Intent(getApplicationContext(), MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)), pendingIntent);
|
||||
} else if (Build.VERSION.SDK_INT >= 19) {
|
||||
am.setExact(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
|
||||
} else {
|
||||
am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
|
||||
}
|
||||
}
|
||||
|
||||
public void setNotificationControl() {
|
||||
previousRingerFilter = getRingerFilter();
|
||||
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
|
|
Loading…
Reference in New Issue