Sto tentando di sfruttare la funzionalità host USB sul Samsung Galaxy Tablet. Ho acquistato il dongle allegato da Samsung (http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA). Quando ho collegato per la prima volta un dispositivo USB tramite questo dongle, ho ricevuto un errore di alta potenza dal Galaxy Tablet. FYI usa un hub USB alimentato esternamente e puoi bipassare questo.Problema di host USB di Android con Tablet Samsung Galaxy 10.1
Ora che il dispositivo stesso è riconoscere l'esistenza di una periferica USB quando attacco, ho tentato di utilizzare android.hardware.usb.UsbDevice di Android; import android.hardware.usb.UsbManager; biblioteca. Ho visto che ci sono due metodi per il riconoscimento di un dispositivo USB, registrando un ricevitore di broadcast ad ascoltare per gli effetti tramite
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);
Questo non è sparare alcun intenti quando attacco tutti i dispositivi, strane ... ok. Così sono andato a provare il metodo successivo: in modo esplicito l'esecuzione di query per un elenco dei dispositivi tramite l'UsbManager - questo è stato compiuto nel modo seguente:
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);
}
Ciò presumibilmente afferrare l'uno (solo dispositivo USB attualmente supportato per Google Documentazione) Dispositivo USB attualmente connesso. Per testare questo, richiamerei il codice sopra riportato su un clic del pulsante e visualizzerò i risultati del dispositivo. Per qualche motivo, ogni volta ricevo un dispositivo dall'elenco dei dispositivi, indipendentemente dal fatto che un dongle USB sia collegato o meno. Inoltre, il dispositivo è lo stesso ogni volta, indipendentemente dal dongle USB (o dalla sua mancanza). L'output è il seguente:
dispositivo usbDevice [mName =/dev/bus/usb/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid .os.Parcelable; @ 406ff4d8]
^^ il valore @ 406ff4d8 cambia ogni volta che mi interrogo questo codice (ho appena messo una singola istanza di fino)
ho cercato dappertutto e non sono stati in grado di trovare problemi o soluzioni simili che potrebbero applicarsi alla mia situazione. Ho provato a implementare esempi USB di google (che è esattamente quello che ho in sostanza, ho strappato loro) e sto correndo in questi problemi.
Vorrei anche menzionare la composizione del mio 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 dispositivo di filtro:
(ho tolto i criteri sul filtro dispositivo, ma ho anche provato ad inserire informazioni specifiche sul d evice Sto cercando ... entrambi inutilmente.)
Qualsiasi aiuto in merito a questo problema sarebbe molto apprezzato!
altro aggiornamento: I dispositivi di I lamentato sempre essendo enumerato nella lista dei dispositivi
dispositivo USBDevice [MNAME =/dev/bus/usb/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]
deve essere la porta USB di Android o qualcosa del genere ...perché ho iniziato a collegare diversi dispositivi al mio codice e ho scoperto che (simile a questo collegamento: USB_DEVICE_ATTACHED Intent not firing) Dispositivi HID, dispositivi arduino..e purtroppo ... il mio dispositivo USB non sembra attivare un intent o essere enumerato da l'hub USB. Ho provato con una chiavetta USB e l'ho numerata e ha funzionato ... tuttavia si presenta come SECONDO dispositivo nell'elenco, il primo è il sempre presente dispositivo usb elencato sopra. Gli intenti fanno fuoco con esso però.
Qualcuno sa una soluzione alternativa per far sparare gli intenti con dispositivi HID e altri dispositivi USB, ad eccezione dei pochi androidi selezionati che sembra fare ora?
puoi verificare che l'host USB funzioni per qualsiasi altra app? Prova a connettere una fotocamera PTP e vedere se la galleria rileva l'intento che viene trasmesso. Presumo che hai provato a riavviare e hai aggiornato la tua scheda alla versione più recente. –
Quando collego una tastiera, sembra funzionare. Ricevo un messaggio "USB Device Connected" quando lo inserisco. Tuttavia, il codice sopra riportato mi dà lo stesso risultato con una tastiera, un altro dispositivo USB collegato o niente collegato. Non capisco perché stia affermando di vedere un dispositivo USB a prescindere.So che deve essere qualcosa con il mio codice da quando la tastiera è riconosciuta bene. BTW: quando collego un altro dispositivo dice "Unknown USB Device Connected" – hinklecw
Un altro aggiornamento: il dispositivo che mi sono lamentato di essere sempre enumerato nell'elenco dei dispositivi deve essere la porta USB Android o qualcosa del genere ... perché ho iniziato ad allegare un sacco di diversi dispositivi al mio codice e ho scoperto che (simile a questo link: USB_DEVICE_ATTACHED Intenzione non attiva) I dispositivi HID, i dispositivi arduino e il mio dispositivo USB non attivano un intent o vengono enumerati dall'hub USB. Ho provato con una chiavetta USB e l'ho numerata e ha funzionato ... tuttavia si presenta come SECONDO dispositivo nell'elenco, il primo è il sempre presente dispositivo usb elencato sopra. Gli intenti fanno fuoco con esso però. – hinklecw