* Я разрабатываю приложение для Android, которое вызывает тревогу в определенное время, которое пользователь выбирает. Но проблема в том, что этот сигнал тревоги срабатывает только в том случае, если пользователь устанавливает его на небольшое количество времени. Так что, если приложение не работает, сигнал тревоги не будет срабатывать. Я уже приобрел блокировку, а также установил флаги, чтобы держать экран включенным. Иногда, когда я устанавливаю его на 15 минут, или что-то в этом роде, он работает, а затем я пытаюсь снова, а это не так. Я также включил широковещательный приемник в манифест. Вот мой график код тревоги:Сигнализация не всегда запускает андроид
public void schedule(Activity activity){
Context context = activity.getApplicationContext();
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmActivityBroadcastReceiver.class);
intent.putExtra("id", this.getId());
pendingIntent = PendingIntent.getBroadcast(context, 1234565666, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, this.getCalendarTime().getTimeInMillis(), pendingIntent);
}
Чтобы получить calendarTime я использую следующую функцию, где время является строка времени вводится пользователем:
private Calendar convertTimeStringToCalendar(){
String[] timeArray = this.time.split(":");
int minute = Integer.parseInt(timeArray[1]);
int hour = Integer.parseInt(timeArray[0]);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
int nowHour = c.get(Calendar.HOUR_OF_DAY);
int nowMinute = c.get(Calendar.MINUTE);
if (hour < nowHour || (hour == nowHour && minute <= nowMinute)) {
c.add(Calendar.DAY_OF_YEAR, 1);
}
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c;
}
И, наконец, это мой радиовещательный приемник:
public class AlarmActivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
WakeLock.acquire(context);
Alarm alarm = DataBaseSQL.getAlarm(intent.getLongExtra("id", 0L));
Intent alarmActivityIntent = new Intent(context, AlarmActivity.class);
alarmActivityIntent.putExtra("id", alarm.getId());
alarmActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
alarmActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alarmActivityIntent);
}
}
Я был бы признателен за любую помощь в том, что это может быть причиной срабатывания тревог только иногда.
', а также установить флаги, чтобы держать экран on' так, чтобы ** убить батарею пользователя **? –
Нет, это будильник, поэтому мне нужен экран, пока пользователь не уволит его! – Martina