Android Usb Host Problem com o Samsung Galaxy 10.1 Tablet

Estou tentando aproveitar o recurso de host USB no Samsung Galaxy Tablet. Comprei o dongle de anexo da samsung http: //www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGST). Quando conectei pela primeira vez um dispositivo USB através deste dongle, ocorreu um erro de alta energia no Galaxy Tablet - FYI usa um hub USB com alimentação externa e você pode fazer bipass isso.

Agora que o próprio dispositivo está reconhecendo a existência de um periférico USB quando eu o conecto, tentei usar o android.hardware.usb.UsbDevice do Android; importar android.hardware.usb.UsbManager; biblioteca. Vi que existem dois métodos para reconhecer um dispositivo USB, registrando um receptor de transmissão para ouvir as intenções via

IntentFilter usbIntentFilter = new IntentFilter();
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_ATTACHED");          
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_DETACHED"); 
registerReceiver(mUsbReceiver,usbIntentFilter);

Isto não está disparando nenhuma intenção quando eu conecto dispositivos, estranho ... ok. Então, tentei o próximo método: consultar explicitamente uma lista de dispositivos por meio do UsbManager - isso foi feito da seguinte maneira:

HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
    int count = deviceList.size();
    Iterator<UsbDevice> iterator = deviceList.values().iterator();

    if(iterator.hasNext()){
    UsbDevice deviceVal = iterator.next();
    testTxtView1.setText("set device " + deviceVal); 
    }

Isso presumivelmente pegaria o dispositivo USB (apenas um dispositivo USB atualmente suportado pela documentação do Google) atualmente conectado. Para testar isso, eu chamaria o código acima em um clique e exibia os resultados do dispositivo. Por alguma razão, eu sempre recebo um dispositivo da lista de dispositivos, esteja um dongle USB conectado ou não. Além disso, o dispositivo é sempre o mesmo, independentemente do dongle USB (ou da falta dele). A saída é a seguinte:

device usbDevice [mName = / dev / bus / usb / 001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]

^^ o valor @ 406ff4d8 muda toda vez que eu consultar esse código (eu apenas coloquei uma única instância dele)

Procurei em todos os lugares e não consegui encontrar nenhum problema ou solução semelhante que possa ser aplicada à minha situação. Eu tentei implementar os exemplos USB do google (que é exatamente o que eu tenho essencialmente, rasguei o deles) e estou enfrentando esses problemas.

Também devo mencionar a composição do meu manifesto:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="edu.mit.ll.drm4000"
  android:versionCode="1"
  android:versionName="1.0">
<uses-feature android:name="android.hardware.usb.host" />
<uses-sdk android:minSdkVersion="12" />

<application android:icon="@drawable/icon" android:label="@string/app_name">


    <activity android:name=".DRM4000Activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
        </intent-filter>

        <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
            android:resource="@xml/device_filter" />

    </activity>

</application>

e filtro do dispositivo:


(Removi os critérios no filtro do dispositivo, mas também tentei inserir informações específicas sobre o dispositivo que estou procurando ... ambos sem sucesso.)

Qualquer ajuda sobre esse problema seria muito apreciad

Outra atualização: o dispositivo que reclamei sempre sendo enumerado na lista de dispositivos

device usbDevice [mName = / dev / bus / usb / 001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]

deve ser a porta usb do lado android ou algo assim ... porque comecei a conectar vários dispositivos diferentes ao meu código e descobri que (semelhante a este link:USB_DEVICE_ATTACHED Intenção não dispara) Dispositivos HID, dispositivos arduino ... e, infelizmente ... meu dispositivo USB não parece ter uma intenção ou ser enumerado pelo hub USB. Eu tentei com uma unidade flash USB e ela a enumerou e funcionou ... no entanto, aparece como o SEGUNDO dispositivo na lista, o primeiro sendo o sempre presente dispositivo USB listado acima. Porém, as intenções disparam contra el

Alguém conhece uma solução alternativa para fazer com que as intenções disparem com dispositivos HID e outros dispositivos USB, exceto os poucos andróides selecionados que parecem funcionar agora?

questionAnswers(6)

yourAnswerToTheQuestion