Android Usb Host Problem with Samsung Galaxy 10.1 Tablet

Я пытаюсь использовать возможности USB-хоста на планшете Samsung Galaxy Tablet. Я приобрел приставку от samsung (http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA). Когда я впервые подключил USB-устройство через этот донгл, у меня возникла ошибка высокой мощности от Galaxy Tablet - FYI используйте USB-концентратор с внешним питанием, и вы сможете обойти это.

Теперь, когда устройство само подтверждает существование периферийного USB-устройства при подключении, я попытался использовать Android android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; library. Я увидел, что есть два метода распознавания USB-устройства, регистрация широковещательного приемника для прослушивания намерений через

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);

Это не вызывает никаких намерений, когда я подключаю какие-либо устройства, странно... хорошо. Поэтому я попробовал следующий метод: явный запрос списка устройств через UsbManager - это было сделано следующим образом:

HashMap deviceList = manager.getDeviceList();
    int count = deviceList.size();
    Iterator iterator = deviceList.values().iterator();

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

Предположительно, это захватит одно (только одно USB-устройство, поддерживаемое в настоящее время согласно документации Google) USB-устройство, которое подключено в данный момент. Для проверки этого я бы вызвал вышеприведенный код при нажатии на кнопку и отобразил результаты работы устройства. По какой-то причине я получаю устройство из списка устройств каждый раз, независимо от того, подключен USB-ключ или нет. Более того, устройство каждый раз одно и то же, независимо от наличия (или отсутствия) USB-ключа. Вывод выглядит следующим образом:

устройство usbDevice[mName=/dev/bus/usb/001/002,mVendorId=1256,mProductId=27033,mClass=0,mSubClass=0,mProtocol=0,mInterfaces=[Landroid.os. Parcelable;@406ff4d8]

^^ значение @406ff4d8 меняется каждый раз, когда я запрашиваю этот код (я только что разместил его единственный экземпляр)

Я искал везде и не смог найти никаких похожих проблем или решений, которые могут быть применимы к моей ситуации. Я пытался реализовать примеры Google для USB (именно это я и сделал по сути, я содрал их) и столкнулся с этими проблемами.

Я также должен упомянуть состав моего манифеста:









    
        
            
            
        

        
            
        

        

    


и фильтра устройств:


(Я удалил критерии в фильтре устройств, но также попробовал вставить конкретную информацию об устройстве, которое я ищу... оба безрезультатно.)

Любая помощь по этой проблеме будет очень признательна!


Еще одно обновление: устройство, на которое я жаловался, всегда перечисляется в списке устройств

устройство usbDevice[mName=/dev/bus/usb/001/002,mVendorId=1256,mProductId=27033,mClass=0,mSubClass=0,mProtocol=0,mInterfaces=[Landroid. os.Parcelable;@406ff4d8]

должно быть, usb-порт на стороне android или что-то в этом роде... потому что я начал подключать кучу разных устройств к своему коду и обнаружил, что (аналогично этой ссылке: USB_DEVICE_ATTACHED Intent not firing) устройства HID, устройства arduino... и, к сожалению... мои USB-устройства не вызывают намерений и не перечисляются USB-концентратором. Я попробовал с USB-флешкой, и она ДЕЙСТВИТЕЛЬНО перечислилась и заработала... однако она отображается как ВТОРОЕ устройство в списке, первым является вечно присутствующее usbDevice, перечисленное выше. Однако намерения с ним выполняются.

Кто-нибудь знает обходной путь, чтобы заставить намерения работать с HID-устройствами и другими USB-устройствами, кроме избранных, которые, похоже, теперь делает android?

6
задан Community 23 May 2017 в 12:32
поделиться