0

デバイスが複数のデバイスを備えた USB ハブに接続されている場合、USBDevice から USBInterface を取得する際に問題があります。

OTG を介して、または OTG を介して接続されたハブを介して USB デバイスを直接接続すると、すべて正常に動作しますが、ハブに追加のデバイスを接続するとすぐに、接続を開くことができません。

すべての USB デバイス ドライバーを取得し、通信したいデバイスが見つかるまで繰り返します。

次のコード スニペットには、USB デバイスを取得するためのメソッドが含まれています。

String manufacturer = "MY_MANUFACTURER" // Dummy text for this snippet
int interfaceCount; // Number of USB interfaces
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> drivers UsbSerialProber.getDefaultProber().findAllDriver(manager);

for (UsbSerialDriver serialDriver : drivers) {
    // Check for my specific USB device
    if (serialDriver.getDevice().getManufacturerName().equals(manufacturer)) {
        interfaceCount = driver.getInterfaceCount();
    }
}

デバイスがハブ内の唯一のデバイスである場合、インターフェイスの数は 2 ですが、他のデバイスを追加するとすぐにカウントが 0 になり、システムは接続を開こうとするとすぐに getInterfaceCount で ArrayIndexOutOfBoundException をスローします。

追加情報:デバイスと通信するためのラッパーとしてusb-serial-for-androidライブラリを使用します。arduino (テスト用) または FTDI チップのいずれかです。

4

2 に答える 2

1

私たちは同じ問題に苦しんでいます。Android 5 のバグのようです (少なくとも私たちにとっては、Android のバージョンについて言及していませんでした)。バグは次の場所にあります。

https://code.google.com/p/android/issues/detail?id=159529

また

https://www.reddit.com/r/androiddev/comments/37v2c0/usbdevice_getinterface_seems_to_be_broken_in_5x/

また

https://code.google.com/p/android/issues/detail?id=159897

Android バージョン < 5 および Android 6.0 でも動作することに注意してください。そのため、Android をアップグレードまたはダウングレードすることが解決策になる可能性があります。

よろしく、

ダニエル

于 2015-11-27T08:13:26.233 に答える