Android是否支持检测硬件中断?

时间:2010-08-31 06:17:25

标签: android hardware

假设我正在使用Android应用程序。突然,我将我的Android手机连接到了我的电脑。 Android是否有机制来检测此类硬件中断?

5 个答案:

答案 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