#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. Пожалуйста, дайте ссылку и / или процитируйте документацию для этого 😉