假设我正在使用Android应用程序。突然,我将我的Android手机连接到了我的电脑。 Android是否有机制来检测此类硬件中断?
答案 0 :(得分:2)
是的,在后台运行的linux内核可以处理中断。
您甚至可以通过输入以下内容来查看它们:
cat /proc/interrupts
在adb shell中。
答案 1 :(得分:2)
还有通过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>
然后每当Action发生时调用onReceive()(在这种情况下,每当发生ACTION_POWER_DISCONNECTED时)。
希望有所帮助!
答案 2 :(得分:1)
是的,Android操作系统始终会观察到中断,并且基本上所有系统行为和事件都会由android负责通知用户有关该特定事件或中断的信息。
首先,中断只是用户的操作或系统状态更改而已。例如USB连接,电池电量低或任何单击或触摸事件等。
设备固件负责从硬件传输这些信号,然后任何中断都会被I2C总线捕获。
然后这些信号将由Linux内核中的设备驱动程序解码 输入设备驱动程序负责通过Linux输入协议将设备特定的信号转换为标准输入事件格式。
Android EventHub组件从内核读取输入事件。
最后,InputReader将输入事件发送到InputDispatcher,后者将它们转发到适当的窗口。
答案 3 :(得分:0)
这绝对不是安卓的做事方式。手机插入和拔出时有广播可以收听
答案 4 :(得分:0)
在frameworks \ base \ services \ java \ com \ android \ server中查找UEventObserver.java,在frameworks \ base \ core \ java \ android \ os中查找SystemServer.java