Я пытаюсь запланировать, чтобы мой AlarmManager каждый день просыпался с различным случайным временем, которое происходит между 22:00 - 06:00.
Я пробовал эту технику, но она не работает:
public class AlarmReciver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
try
{
System.out.println(TAG+": Alert recieved");
schedualeNextTimeAlarming(context);
} catch (Exception e)
{
}
private void schedualeNextTimeAlarming(Context context)
{
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReciver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.cancel(pi);
getNextTime(am, pi);
}
private void getNextTime(AlarmManager am, PendingIntent pi)
{
int max = 8;
int min = 1;
final Random myRandom = new Random();
int result = myRandom.nextInt(max - min) + min;
int hourOfDay = 0;
switch (result)
{
case 0:
hourOfDay = 22;
break;
case 1:
hourOfDay = 23;
break;
case 2:
hourOfDay = 24;
break;
default:
hourOfDay = result;
}
hourOfDay = 15; //for testing
System.out.println("next time alert: "+hourOfDay+" seconds");
Calendar cal = Calendar.getInstance();
// cal.add(Calendar.DAY_OF_YEAR, 1); if i disable this line, the Alarm wont work at all.
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, hourOfDay);
am.cancel(pi);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
}
Я ожидаю, что каждые 15 секунд будут иметь тревогу.
это вывод:
08-02 11:56:48.188: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.198: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.218: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.228: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.248: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.248: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.278: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.278: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.308: INFO/System.out(9138): InformationReceiver: Alert recieved
Как видите, каждые 15 секунд не срабатывает Тревога.
Я хочу изменить ситуацию на новое время будильника, каждый раз, когда он входит в эту функцию
будет приветствоваться любое решение или другие эффективные предложения.
Спасибо.