Мое приложение работает следующим образом, пользователь записывает время в минутах, например 40. Затем приложение вызовет будильник через 40 минут. Неважно, является ли приложение активным или работает в фоновом режиме, оно все еще работает.
Моя проблема заключается в следующем, так как я использую метод System.currentTimeMillis (); тогда это делает мое приложение зависимым от системного времени. Поэтому, если я изменю системное время в настройках, мое приложение будильника не будет вызываться в установленное время, оно изменится.
например: если время 10:00, и я установил будильник, который будет вызван через 20 минут, то он будет называться 10:20. Однако, если я перейду к настройкам и изменит системное время на 9:00 после установки будильника, то мое приложение будет вызываться через 100 минут. Как я могу предотвратить это, чтобы, когда установлено время для будильника и какое бы системное время не было, будильник будет вызываться после этих минут.
вот мой код:
public void newSetAlarm(View view) {
timeEntered = Integer.parseInt(editTextForTime.getText().toString());
Intent AlarmIntent = new Intent(this, Alarm.class);
AlarmIntent.putExtra(TIME_LEFT, timeEntered);
pendingIntentForAlarm = PendingIntent.getBroadcast(getApplicationContext(), 0, AlarmIntent, 0);
amAlarm = (AlarmManager) getSystemService(ALARM_SERVICE);
amAlarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeEntered * 60000, pendingIntentForAlarm);}
удалось решить эту проблему с
<receiver android:name=".TimeChangeBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_SET"/>
<action android:name="android.intent.action.TIMEZONE_CHANGED"/>
</intent-filter>
в файле манифеста, а затем создайте этот класс
public class TimeChangeBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DoWhatEverYouWantHere();
}}
Теперь проблема в том, что всякий раз, когда я меняю время в настройке, вызывается этот широковещательный приемник. Но я хочу, чтобы он вызывался только тогда, когда работает мой будильник, и пользователь переходит к настройке, чтобы изменить время. Когда нет тревоги, и пользователь меняет время в настройках, я не хочу, чтобы широковещательный приемник работал в фоновом режиме.
Как мне решить это