Alarm: recover alarm after reboot in AlarmBootReceiver
This commit is contained in:
parent
496e530761
commit
9d5d317d07
|
@ -5,6 +5,7 @@
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -54,9 +55,14 @@
|
||||||
<service
|
<service
|
||||||
android:name=".AlarmService"
|
android:name=".AlarmService"
|
||||||
android:enabled="true" />
|
android:enabled="true" />
|
||||||
<receiver android:name=".AlarmReceiver">
|
<receiver android:name=".AlarmReceiver" />
|
||||||
|
<receiver
|
||||||
|
android:name=".AlarmBootReceiver"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="true"
|
||||||
|
android:label="AlarmBootReceiver">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
</application>
|
</application>
|
||||||
|
|
|
@ -55,10 +55,10 @@ public class AlarmActivity extends AppCompatActivity {
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
Log.d(TAG, "Current API functions have been executed");
|
Log.d(TAG, "Current API functions have been executed");
|
||||||
setTime(calendar);
|
setTime(calendar, editor);
|
||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "Legacy API functions have been executed");
|
Log.d(TAG, "Legacy API functions have been executed");
|
||||||
setTimeLegacy(calendar);
|
setTimeLegacy(calendar, editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, "Alarm On");
|
Log.d(TAG, "Alarm On");
|
||||||
|
@ -72,7 +72,7 @@ public class AlarmActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private void setTimeLegacy(Calendar calendar) {
|
private void setTimeLegacy(Calendar calendar, SharedPreferences.Editor editor) {
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
|
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
|
||||||
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
|
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
|
||||||
|
|
||||||
|
@ -81,11 +81,12 @@ public class AlarmActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
|
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
|
||||||
|
editor.putLong("alarm_time", calendar.getTimeInMillis());
|
||||||
Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getCurrentHour() + " hour(s) " + alarmTimePicker.getCurrentMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getCurrentHour() + " hour(s) " + alarmTimePicker.getCurrentMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.M)
|
@TargetApi(Build.VERSION_CODES.M)
|
||||||
private void setTime(Calendar calendar) {
|
private void setTime(Calendar calendar, SharedPreferences.Editor editor) {
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
|
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
|
||||||
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
|
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
|
||||||
|
|
||||||
|
@ -94,6 +95,7 @@ public class AlarmActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
|
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
|
||||||
|
editor.putLong("alarm_time", calendar.getTimeInMillis());
|
||||||
Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getHour() + " hour(s) " + alarmTimePicker.getMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getHour() + " hour(s) " + alarmTimePicker.getMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.example.yink.amadeus;
|
||||||
|
|
||||||
|
import android.app.AlarmManager;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.v4.content.WakefulBroadcastReceiver;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class AlarmBootReceiver extends WakefulBroadcastReceiver {
|
||||||
|
|
||||||
|
final String TAG = "A.AlarmBootReceiver";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
|
||||||
|
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
|
||||||
|
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())
|
||||||
|
&& settings.getBoolean("alarm_toggle", false)) {
|
||||||
|
AlarmManager alarmManager = (AlarmManager) context.getSystemService(
|
||||||
|
Context.ALARM_SERVICE);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
|
||||||
|
Alarm.ALARM_ID, new Intent(context, AlarmReceiver.class), 0);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
|
||||||
|
} else {
|
||||||
|
alarmManager.set(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
|
||||||
|
}
|
||||||
|
Log.d(TAG, "Alarm has been recovered");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue