Будильник не работает, когда телефон находится в глубоком спящем режиме

#android

#Android

Вопрос:

У меня есть приложение для будильника, которое работает отлично, за исключением случаев, когда телефон находится в глубоком сне.
Когда я действительно сплю, моя активность будильника появляется после того, как пользователь разбудит телефон. Я хочу, чтобы телефон разбудил пользователя…

Приложение запускает мою сигнализацию непосредственно с BroadcastReceiver. (Не из службы.)

Одна подсказка:
Log D DeepSleepService: AlarmManager выйти из глубокого сна

PowerManagerService: putReleasedWakeLock
PowerManagerService: * Содержимое mAcquiredLocks ****
PowerManagerService: запись в списке блокировки: flags=0x10000006 tag=com.solidllc.foo.WakeLock
PowerManagerService: запись в списке блокировки: флаги = 0x1 тег = RILJ
PowerManagerService: запись в списке блокировки: флаги = 0x1 тег = сетевое местоположение
PowerManagerService: запись в списке блокировки: flags= 0xa tag= KEEP_SCREEN_ON_FLAG
PowerManagerService: putReleasedWakeLock -> удалить частичные блокировки в список, размер i

//
// Мой манифест:
android.permission.ИНТЕРНЕТ
android.разрешение.WAKE_LOCK
android.разрешение.DEVICE_POWER
android.разрешение.DISABLE_KEYGUARD

Будильник, который поставляется с Android, имеет вышеупомянутый плюс: «Изменить глобальные системные настройки» и «Получить запущенные приложения».

Кто-нибудь знает, что можно сделать?

Большое спасибо.

Вот код, который устанавливает будильник:

 void armAlarm(int hour, int minute) {

    Calendar alarmtime = new GregorianCalendar();

    alarmtime.set(Calendar.HOUR_OF_DAY, hour);
    alarmtime.set(Calendar.MINUTE, minute);
    alarmtime.set(Calendar.SECOND, 0);

    Intent intent = new Intent(RatActivity.this, AlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(RatActivity.this, 0,
            intent, 0);

    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    am.cancel(pi);
    am.setRepeating(AlarmManager.RTC_WAKEUP, alarmtime.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);
}
  

Комментарии:

1. Пожалуйста, рассмотрите возможность публикации исходного кода, в котором вы планируете будильник.

2. Режим глубокого сна доступен только на некоторых устройствах (например, на планшете Archos), и там он также предупреждает пользователя при включении: «В глубоком сне ничего не будет работать, включая сигналы тревоги». Обычные телефоны Android используют режим мягкого сна (приостановки).

3. Большое спасибо. Я только что протестировал встроенный будильник, и он тоже не работает (хорошо), когда устройство находится в глубоком сне. (В меню «Параметры телефона» вы можете выбрать «Режим сна», который переводит Moto Droid в глубокий сон.) Первоначальная проблема, которую я пытаюсь решить, заключается в том, что мой будильник не срабатывает, когда телефон долгое время простаивает; например, целую ночь. Как я могу быстро перевести телефон в этот (мягкий сон?) Режим, Чтобы я мог его отладить?

Ответ №1:

Я выяснил, что не так с моим кодом: я обращался к базе данных в BroadcastReceiver.
Это плохо / неправильно (как указано в документации).
Тот факт, что он появляется только после долгого сна, только усложняет поиск ошибки.

Комментарии:

1. Пожалуйста, дайте ссылку и / или процитируйте документацию для этого 😉