Android usb hostモードでusbの抜き差しを傍受
6496 ワード
。 , , !
USb hostモードの書面の叙述は私は多く言わないで、私は私の理解を話して、実はusb hostモードは実はコンピュータのusbポートモードで、この情況はあなたがハードウェアの外付けコンピュータのusbポートを変えることができて、元のusbポートの外付けの変換ポートで、例えばOTGです.このときSDの抜き差し放送で
Intent.ACTION_MEDIA_MOUNTED //sd
Intent.ACTION_MEDIA_EJECT //sd
USb hostのマウス、uディスクなどの抜き差しは聞こえません.
このときに使うandroid.hardware.usb.action.USB_DEVICE_ATTACHED android.hardware.usb.action.USB_DEVICE_DETACHED
ネット上では、この2つの放送の記述はすべて千編一律で、実際には2つの放送は静的に傍受することができて、動的に傍受することができて、また設備のフィルタリングを実行することができます.
スタティツクリスニング
他の放送と同じようにAndroidManifestでしか必要ありません.xmlにはこの2つの放送を登録すればいいです
最も重要なのは権限を加えることです
そしてactivityで処理しますpublic class braost extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { String action = intent.getAction(); if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { Log.e("pangsheng", " "); } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) { Log.e("pangsheng", " "); } } }
動的登録IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); intentFilter.addDataScheme("file"); registerReceiver(broadcastRec, intentFilter);
private final BroadcastReceiver broadcastRec = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { Log.e("pangsheng", "usb attached"); } if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) { Log.e("pangsheng", "usb unattached "); } } };
デバイスフィルタ
これは実は静的登録で、自分のactivityをカスタマイズして開くことができて、ゲームの設備に多く使って、また弾窓を実現してユーザーに選択させることができます
AndroidManifestでxml対応activityプラス
xmlフォルダでdevice_filter.xml
activity
private static final String ACTION_USB_DEVICE_PERMISSION = "com.android.accessorydisplay.sink.ACTION_USB_DEVICE_PERMISSION";//
IntentFilter filter = new IntentFilter(); filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); filter.addAction(ACTION_USB_DEVICE_PERMISSION); mReceiver = new DeviceReceiver(); registerReceiver(mReceiver, filter);
class DeviceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { UsbDevice device = intent.
} } }getParcelableExtra(UsbManager.EXTRA_DEVICE); if (device != null) { String action = intent.getAction(); if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { Log.e("pangsheng", ""); } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) { Log.e("pangsheng", ""); } else if (action.equals(UsbManager.ACTION_USB_DEVICE_PERMISSION)) { Log.e("pangsheng", " , "); }