Поддерживает ли Android обнаружение аппаратных прерываний? - PullRequest
1 голос
/ 31 августа 2010

Предположим, я работаю над приложением для Android.Внезапно я подключаю свой телефон Android к компьютеру.Есть ли в Android механизм обнаружения таких аппаратных прерываний?

Ответы [ 5 ]

2 голосов
/ 19 мая 2011

Существуют также способы обнаружения этих типов вещей с помощью Intents и BroadcastReceivers, т.е.

http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_DISCONNECTED

Если вы делаете это таким образом, вам нужно написать класс, расширяющий BroadcastReceiver (http://developer.android.com/reference/android/content/BroadcastReceiver.html), и реализовать onReceive (), а затем зарегистрировать получателя где-нибудь (то есть в вашем классе Activity) как это:

MyReceiver receiver = new MyReceiver(); 
IntentFilter inf = new IntentFilter(); 
inf.addAction(Intent.ACTION_POWER_DISCONNECTED); 
this.registerReceiver(receiver , inf);

Кроме того, вам нужно добавить этот приемник в свой AndroidManifest.xml:

<application .. >
...
    <receiver android:enabled="true"
         android:exported="false"
         android:label="string resource"
         android:name=".MyReceiver"
    >
    </receiver>
</application>

Затем onReceive () должен вызываться всякий раз, когда происходит действие (в этом случае, когда происходит ACTION_POWER_DISCONNECTED).

Надеюсь, это поможет!

2 голосов
/ 31 августа 2010

Да, ядро ​​Linux, работающее в фоновом режиме, может обрабатывать прерывания.

Вы даже можете посмотреть на них, набрав:

cat /proc/interrupts

в оболочке adb.

1 голос
/ 27 октября 2018

Да, операционная система Android всегда наблюдает прерывание и, в основном, для всех действий и событий системы, android заботится об информировании пользователя об этом конкретном событии или прерывании.

Прежде всего, прерывания - это не что иное, как действие пользователя или изменение состояния системы. например, USB-соединение, низкий заряд батареи или любое другое нажатие или касание и т. д.

Микропрограмма устройства отвечает за передачу этих сигналов от оборудования, и тогда любой тип прерывания будет перехвачен шиной I2C.

Затем эти сигналы будут декодированы драйвером устройства в ядре Linux. Драйверы устройств ввода отвечают за перевод специфичных для устройства сигналов в стандартный формат событий ввода с помощью протокола ввода Linux.

Компонент Android EventHub считывает входные события из ядра.

Наконец, InputReader отправляет события ввода в InputDispatcher, который перенаправляет их в соответствующее окно.

0 голосов
/ 04 апреля 2011

Найдите UEventObserver.java в frameworks \ base \ services \ java \ com \ android \ server и SystemServer.java в frameworks \ base \ core \ java \ android \ os

0 голосов
/ 31 августа 2010

Это определенно не Android-способ ведения дел. Есть трансляции для прослушивания, когда телефон подключен и отключен

...