Как запланировать будильник случайное время между 12 и 3 каждый день в Android - PullRequest
0 голосов
/ 30 октября 2019

Я хочу перезапускать свой мобильный телефон ежедневно с 12:00 до 3:00. Вот вещи, созданные одним диспетчером аварий, которые создают случайное время между 12:00 и 3:00 и передают диспетчеру аварийных сигналов, который правильно работает, перезагрузив мой мобильный телефон. Создание случайного времени во время восстановления мобильного телефона и создание другого времени, кроме вещей, когда я создал другое время, если, если время уже прошло, оно будет перемещено на следующий день. Я не хочу пропустить этот день перезагрузить мой мобильный телефон. Значит, можно отменить эту тревогу, создать новую или любую другую идею?

public class MainActivity extends AppCompatActivity {

AlarmManager alarmManager;
PendingIntent pendingIntent;
private int hour;
private int min;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    Intent alarmIntent = new Intent(this, MyBroadCastReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);

    hour = generateRandomIntIntRange(0 , 2);
    min = generateRandomIntIntRange(0, 59);
    System.out.println("hour: " + hour);
    System.out.println("min: " + min);
    startAlarm(hour , min);

}

private void startAlarm( int hour, int min) {

    Calendar calendar = Calendar.getInstance();
    Calendar calendar1 = (Calendar) calendar.clone();
    calendar1.setTimeInMillis(System.currentTimeMillis());
    calendar1.set(Calendar.HOUR_OF_DAY, hour);
    calendar1.set(Calendar.MINUTE, min);
    calendar1.set(Calendar.SECOND, 0);
    calendar1.set(Calendar.MILLISECOND, 0);

    if(calendar1.compareTo(calendar) <=0){
        calendar1.add(Calendar.DATE, 1);
    }

    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(), AlarmManager.INTERVAL_DAY,pendingIntent);
 }
} 
}


  public class MyBroadCastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    try {
        // did some code and restarting mobile, which is working fine, assume it will start MainActivity-> onCreate, where random time will generate
    } catch (Exception e) {
        e.printStackTrace();
    }


}

}

Я ожидаю, что выходное значение - это случайное время между 12 и 3 днями, оно должно быть перезапущено, но перезапустить мобильное устройство, если пройдет время.

Пример: когда первый мобильный час запускается в 12:30 утра. Первый день: тигр в 12:30 и время генерируется в 2:30 утра. Первый день: тигр в 2:30 утра и время генерируется в 12:55. Третий день в 12 часов не бывает. : 55 утра, но тигр 4-й день 12:55 утра. Я пропускаю один день (Третий день: 12: 55 утра) здесь, я не хочу пропустить ни одного дня.

Я подумал, это может быть решением, если удалить тревогу после получения, это хорошая идея? и как это сделать?

...