Предположим, что я работаю над Android-приложением. Внезапно я подключаю свой Android-телефон к своему компьютеру. Есть ли у Android механизм обнаружения таких аппаратных прерываний?
Да, ядро linux, работающее в фоновом режиме, может обрабатывать прерывания.
Вы даже можете взглянуть на них, набрав:
cat /proc/interrupts
в оболочке adb.
Существуют также способы обнаружения этих типов вещей через 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).
Надеюсь, что это поможет!
Ищите UEventObserver.java в frameworks\base\services\java\com\android\server и SystemServer.java в фреймворках\base\core\java\android\os
Это определенно не способ андроида делать вещи. Существуют широковещательные сообщения для прослушивания, когда телефон подключен и отсоединен.