Как Android планирует выход устройства из спящего режима?

При использовании AlarmManager устройство Android может в какой-то момент выйти из спящего режима.

Как Android планирует пробуждение на более низком уровне?

Я пытался использовать rtcwake, но не работает с rtcwake: /dev/rtc0 not enabled for wakeup events (если я заставлю rtcwake продолжить работу и сделаю необходимые ioctl, я все равно не увижу, что устройство просыпается вовремя)

Какие системные вызовы использует Android для установки будильника и как сделать это самостоятельно из консоли?


person Vi.    schedule 26.11.2012    source источник


Ответы (1)


Android использует устройство /dev/alarm для настройки сигналов тревоги, которые могут вывести систему из состояния ожидания. Из JNI он может получить доступ к этому устройству с помощью ioctl. См. файл frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp. Android имеет эксклюзивный доступ к этому устройству, и, насколько я понимаю, интерфейс доступен только из Java с использованием службы AlarmManager. Если вам нужно настроить эти сигналы тревоги на уровне Java, вы можете получить доступ к этой службе, используя getSystemservice (ALARM_SERVICE), из нативного это немного сложно, у меня сейчас такая же проблема. Мне нужны сигналы тревоги в собственном процессе, и я использую сокеты для связи со службой Java для планирования сигналов тревоги. Возможно, это не тот ответ, который вы ищете, но я хотел бы поделиться своим опытом.

person Arun    schedule 06.12.2012