我希望能够在用户连接或断开USB设备时触发事件。我有以下代码:
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
return intent.getExtras().getBoolean("connected");
}
以上是另一个StackOverflow问题。
我怎样才能解决我面临的问题?如果状态发生变化,我认为每隔x秒检查一次是否切合实际。所以,我在网上查了一个关于USB_CONNECTION的事件监听器,但我似乎找不到任何东西。实际上,我确实找到了一些,但他们很混乱,而且很老。 (一两年前。)
审判代码
while(notFinished) {
if (!isConnected(this)) {
pause();
} else if (!mediaPlayer.isPlaying() && isConnected(this)) {
play();
} else {
Log.e("[ERROR]: ", "An error has occured at startSong!");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
^^^显然效率不高,但确实有效(有点)。那么,这就是为什么我来这里知道是否有USB_CONNECTION_STATUS的监听器。我认为这会快得多。
答案 0 :(得分:0)
您可以使用BroadcastReceiver接收连接和断开连接的操作:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getExtras().getBoolean("connected")) {
//start doing something for state - connected
} else {
//start doing something for state - disconnected
}
}
};
IntentFilter filter = new IntentFilter();
filter.addAction("android.hardware.usb.action.USB_STATE");
registerReceiver(receiver, filter);
每次连接或断开连接时,此BroadcastReceiver都会收到操作。