2014-06-24 4 views
6

На доске разработки Android, я пытаюсь проснуться AP на основе прерывания, полученного в GPIO, может кто-нибудь помочь мне в этом?Просыпайтесь на Android-телефоне на прерывании, на GPIO

Мое понимание на это:

Нам нужно создать устройство ввода и обновлять событие этого устройства на основе прерывания получил. Затем из приложения я полагаю, что ОС отправит уведомление о событии, а затем мы должны использовать wakelock для пробуждения AP.

Пожалуйста, дайте мне знать, если мое понимание верное? Если да, то можете ли вы сказать мне, какое устройство ввода необходимо зарегистрировать (EV_PWR, EV_KEY ..), как приложение получит уведомление, и можем ли мы разбудить AP из драйвера?

+0

Привет, я могу разбудить AP на основе прерывания. Я создал устройство ввода, которое дает событие KEY_POWER на прерывание, а код политики питания android позаботится о пробуждении точки доступа. – kumar

+0

Я пытаюсь понять, как это делается. Можете ли вы дать немного больше информации о своем решении. Некоторый пример был бы оценен или, по крайней мере, ссылки на документацию и примеры. – gfrigon

+0

Я хочу пробудить Android от драйвера зарядного устройства, например, когда устройство вставлено в подставку. Есть ли способ без создания устройства ввода? – pera

ответ

1

Общая модель распространения событий (упрощенная): при входе происходит событие, генерируемое ядром. Событие ввода считывается обработчиком событий и отправляется в приложение переднего плана. Несколько ключей отправляются в какое-то конкретное приложение вместо отправки в приложение переднего плана. Например, кнопка Windows на клавиатуре отправляется в меню «Пуск», кнопка воспроизведения/паузы отправляется в приложение для медиаплеера, даже если оно не находится на переднем плане.

В случае, если системный_источник системы Android считывает события из ядра, он переходит в приложение/представление переднего плана. Это делается для всех входных событий, за исключением кнопки питания, кнопки «домой» и т. Д., Которая обрабатывается оконным менеджером Android или системой. PhoneWindowManager.java имеет код оконного менеджера, он получает событие KEYCODE_POWER при нажатии клавиши питания. В этом случае, если экран включен и блокировка затвора для дисплея не удерживается, экран блокируется (вызывая goToSleep в PowerManager), аналогично, если экран выключен, тогда экран включается (вызывая wakeUp в PowerManager).

isWakeKey at http://androidxref.com/5.1.0_r1/xref/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#4512 будет установлен в true при нажатии кнопки питания &. Код будет вызывать wakeUp или goToSleep в зависимости от текущего состояния экрана.

 Смежные вопросы

  • Нет связанных вопросов^_^