5

UsbManager次のコードを書いてAPIを使用したい:

アクティビティ コード内:

        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();

        Log.d(TAG, "size =" + deviceList.size());

マニフェストで:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

    <permission android:name="android.hardware.usb.host" >

</permission>

<uses-feature android:name="android.hardware.usb.host" android:required="true" />

私もこの質問に従い、Galaxy SII 9100Gをチェックしました。/system/etc/permissions/android.hardware.usb.host.xml、および適切な権限があります。

しかしmanager.getDeviceList()、フラッシュドライバーとマウスを試したとき、常にゼロを返します。

誰でも私に何か提案をしてもらえますか?

4

4 に答える 4

2

あなたの質問に対する一般的な答えはありません。お使いのデバイスに大きく依存します。エミュレーターは USB ホストをまったくサポートしていません。一部のデバイスはそれを行うために root を必要とし、一部のデバイスはすぐに使用できる適切な USB ホスト サポートを備えています。

編集

私は最近、デバイス TF-MID1007G のこの問題について独自の調査を終了しました。これは後で誰かに役立つかもしれません。デバイスの USB ホスト機能の診断を実行するための優れたアプリがあります - USB Host Diagnostic (ところで、著者に感謝します。本当に助かります)。このアプリは、デバイスの USB ホスト サポートに関する判定を示します。私の場合は、カーネルでサポートされている USB ホストでしたが、サード パーティのアプリには制限されていました。幸いなことに、このアプリは (root 化されたデバイスのみ) デバイス システムを修正して、USB ホストで動作する機能を追加することもできます。この修正は、デバイスをリセットした後も残ります。この修正後、標準の Android API で説明されているように、私のアプリは USB ホスト デバイスを列挙したり、許可を要求したりできます。このデバイスでサポートされている通常の USB ホストを有効にするアクションの短いリスト

  • VRootまたはBaidu Rootを備えたルートデバイス(近くにウィンドウがないため、最後のデバイスを使用しました)
  • USB ホスト診断をインストールする
  • 診断を開始し、正常に完了しなかった後、ルート権限を要求し、システムを修正することを確認し、それに同意します
  • 修正後、VERDICT 部分にサードパーティ製アプリが含まれていることを確認してください - フル
  • 結局、ルートを削除するためにデバイスをリセットしました (一般的に危険であり、Baidu Root は常にいくつかのブロートウェアのインストールを要求します)。

これで、このデバイスは USB デバイスで動作する準備が整いました。

于 2014-11-04T06:15:45.260 に答える
0

このコードは私にとってはうまくいきます。コードは似ていますが、再確認できます。

  UsbManager usbManager = (UsbManager) getSystemService(USB_SERVICE);
  HashMap<String, UsbDevice> map = usbManager.getDeviceList();
  Iterator<UsbDevice> it = map.values().iterator();

  while(it.hasNext()) {
    UsbDevice device = it.next();
    // use device info
  }
于 2013-04-15T04:22:49.407 に答える
0

おそらく、Androidエミュレーターを実行しようとしていますが、...エミュレーターのAndroid仕様によると:http://developer.android.com/tools/devices/emulator.html#limitations

エミュレータの機能制限には、次のものがあります。

No support for USB connections

したがって、実際のデバイスでのみ UsbManager をテストできます

于 2013-10-04T10:44:09.390 に答える