Как андроид планирует устройство, чтобы проснуться из спящего состояния?
При использовании AlarmManager Android-устройство может проснуться в какое-то время.
Как Android планирует пробуждение на более низком уровне?
Я пытался с помощью rtcwake
, но это не с rtcwake: /dev/rtc0 not enabled for wakeup events
(если я заставлю rtcwake продолжить и сделать необходимые ioctls, я все равно не увижу устройство вовремя проснувшимся)
Какие системные вызовы Android использует для установки будильника и как это сделать с консоли самостоятельно?
1 ответ
Android использует /dev/alarm device для настройки сигналов тревоги, которые могут вывести систему из режима ожидания. Из JNI он может получить доступ к этому устройству с помощью ioctl. Смотрите файл frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp. Android имеет эксклюзивный доступ к этому устройству, и, насколько я понимаю, интерфейс доступен только из Java с использованием службы AlarmManager. Если вам нужно настроить эти аварийные сигналы на уровне Java, вы можете получить доступ к этому сервису с помощью getSystemservice(ALARM_SERVICE), из нативного это немного сложно, у меня в настоящее время также возникает такая же проблема. Мне нужны аварийные сигналы в нативном процессе, и я использую сокеты для связи со службой Java для планирования аварийных сигналов. Возможно, это не тот ответ, который вы ищете, но я хотел бы поделиться своим опытом с этим.