Estoy intentando aprovechar la capacidad de host USB en la tableta Samsung Galaxy. Compré el dispositivo de seguridad de Samsung (http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA). Cuando conecté por primera vez un dispositivo usb a través de este dispositivo de seguridad, tuve un error de alta potencia de la tableta Galaxy. Para su información, utilizo un concentrador USB con alimentación externa y puede realizar esto.Problema de host USB Android con la tableta Samsung Galaxy 10.1
Ahora que el dispositivo reconoce la existencia de un periférico USB cuando lo conecto, intenté usar el android.hardware.usb.UsbDevice de Android; import android.hardware.usb.UsbManager; biblioteca. Vi que hay dos métodos para el reconocimiento de un dispositivo USB, registrando un receptor de radiodifusión para escuchar las intenciones a través de
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);
Esto no es disparar cualquier intenciones cuando hay que adjuntar cualquier dispositivo, extrañas ... ok. Así que fui a probar el siguiente método: consultando explícitamente para una lista de dispositivos a través de la UsbManager - esto se realizó de la siguiente manera:
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);
}
Esto presumiblemente agarrar el uno (sólo un dispositivo USB compatible actualmente por Google Documentación) Dispositivo USB que está actualmente conectado. Para probar esto, llamaré al código anterior al hacer clic en un botón y mostrar los resultados del dispositivo. Por alguna razón, obtengo un dispositivo de la lista de dispositivos cada vez, ya sea que esté conectado o no un dongle USB. Además, el dispositivo es el mismo siempre, independientemente de la llave USB (o la falta de ella). La salida es la siguiente:
dispositivo usbDevice [mName =/dev/bus/usb/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid .os.Parcelable; @ 406ff4d8]
^^ el valor @ 406ff4d8 cambia cada vez que consultar este código (acabo de poner un solo ejemplo de arriba)
he buscado por todas partes y no han sido capaces de encuentre cualquier problema o solución similar que pueda aplicarse a mi situación. He intentado implementar los ejemplos de USB de Google (que es exactamente lo que tengo en esencia, arranqué los suyos) y me encuentro con estos problemas.
También debería mencionar que el maquillaje de mi manifiesta:
<?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>
y el dispositivo de filtro:
(I eliminado criterios sobre el filtro de dispositivo, pero También he intentado insertar información específica sobre la d evice que estoy buscando ... ambos en vano.)
¡Cualquier ayuda con respecto a este problema sería muy apreciada!
Otra actualización: El dispositivo que se quejó de siempre empadronado en la lista de dispositivos
dispositivo usbDevice [MNAME =/dev/bus/usb/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]
debe ser el puerto usb del lado de Android o algo así ...porque comencé a conectar un montón de dispositivos diferentes a mi código y encontré eso (similar a este enlace: USB_DEVICE_ATTACHED Intent not firing) Dispositivos HID, dispositivos arduino ... y tristemente ... mi dispositivo USB no parece disparar un intento o ser enumerado por el concentrador USB. Lo probé con una unidad flash USB y lo DIFUNDIÓ y funcionó ... sin embargo, aparece como el SEGUNDO dispositivo en la lista, siendo el primero el dispositivo usb omnipresente enumerado anteriormente. Sin embargo, los intentos encienden con esto.
¿Alguien sabe una solución para disparar intenciones con dispositivos HID y otros dispositivos USB, excepto los pocos que parece que Android ahora?
¿Puedes verificar que el host USB funciona para otras aplicaciones? Intente conectar una cámara PTP y vea si la galería nota la intención de transmitir. Supongo que has intentado reiniciar y has actualizado tu pestaña a la última versión. –
Cuando enchufo un teclado, parece que funciona. Recibo un mensaje de "Dispositivo USB conectado" cuando lo conecto. Sin embargo, el código anterior me da la misma salida con un teclado, otro dispositivo usb enchufado o nada enchufado. No entiendo por qué está reclamando ver un dispositivo usb sin importar.Sé que debe ser algo con mi código ya que el teclado se reconoce muy bien. Por cierto: cuando conecto otro dispositivo dice "dispositivo USB desconocido conectado" – hinklecw
Otra actualización: el dispositivo del que me he quejado siempre enumerado en la lista de dispositivos debe ser el puerto usb de Android o algo así ... porque comencé a conectar un montón de diferentes dispositivos a mi código y encontré que (similar a este enlace: USB_DEVICE_ATTACHED intención de no disparar) Los dispositivos HID, los dispositivos arduino y mi dispositivo USB no se activan ni se enumeran en el concentrador USB. Lo probé con una unidad flash USB y lo DIFUNDIÓ y funcionó ... sin embargo, aparece como el SEGUNDO dispositivo en la lista, siendo el primero el dispositivo usb omnipresente enumerado anteriormente. Sin embargo, los intentos encienden con esto. – hinklecw