6 Stimmen

Android Usb Host Problem mit Samsung Galaxy 10.1 Tablet

Ich versuche, die USB-Host-Funktion des Samsung Galaxy Tablet zu nutzen. Ich habe den Anschluss-Dongle von Samsung gekauft ( http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA ). Als ich zum ersten Mal ein USB-Gerät über diesen Dongle angeschlossen habe, hatte ich einen High-Power-Fehler vom Galaxy Tablet - FYI verwenden Sie einen extern mit Strom versorgten USB-Hub und Sie können dies umgehen.

Da nun das Gerät selbst die Existenz eines USB-Peripheriegeräts bestätigt, wenn ich es anschließe, habe ich versucht, Android.hardware.usb.UsbDevice zu verwenden; importieren Android.hardware.usb.UsbManager; Bibliothek. Ich habe gesehen, dass es zwei Methoden gibt, um ein USB-Gerät zu erkennen: die Registrierung eines Broadcast-Empfängers, der auf die Intents über

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

Es werden keine Absichten ausgelöst, wenn ich ein Gerät anschließe, seltsam...ok. Also habe ich die nächste Methode ausprobiert: explizites Abfragen einer Geräteliste über den UsbManager - dies wurde wie folgt erreicht:

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

Dies würde vermutlich das eine (laut Google-Dokumentation derzeit nur ein unterstütztes) USB-Gerät erfassen, das derzeit angeschlossen ist. Um dies zu testen, würde ich den obigen Code bei einem Tastenklick aufrufen und die Geräteergebnisse anzeigen. Aus irgendeinem Grund erhalte ich jedes Mal ein Gerät aus der Geräteliste, egal ob ein USB-Dongle angeschlossen ist oder nicht. Außerdem ist das Gerät jedes Mal dasselbe, unabhängig vom USB-Dongle (oder dessen Fehlen). Die Ausgabe ist wie folgt:

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

^^ der Wert @406ff4d8 ändert sich jedes Mal, wenn ich diesen Code abfrage (ich habe nur eine einzige Instanz davon hochgeladen)

Ich habe überall gesucht und konnte keine ähnlichen Probleme oder Lösungen finden, die auf meine Situation zutreffen könnten. Ich habe versucht, die USB-Beispiele von Google zu implementieren (was genau das ist, was ich im Wesentlichen habe, riss ich ihre) und bin in diese Probleme laufen.

Ich sollte auch die Zusammensetzung meines Manifests erwähnen:

<?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>

und Gerätefilter:

(Ich habe die Kriterien für den Gerätefilter entfernt, aber auch versucht, spezifische Informationen über das gesuchte Gerät einzugeben... beides ohne Erfolg.)

Für jede Hilfe zu diesem Problem wären wir sehr dankbar!


Ein weiteres Update: Das Gerät, über das ich mich beschwert habe, wird immer in der Geräteliste aufgeführt

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

muss der USB-Anschluss auf der Android-Seite sein oder so... denn ich habe angefangen, eine Reihe verschiedener Geräte an meinen Code anzuschließen und habe festgestellt, dass (ähnlich wie bei diesem Link: USB_DEVICE_ATTACHED Absicht, nicht zu feuern ) HID-Geräte, Arduino-Geräte... und leider... scheint mein USB-Gerät keine Absicht auszulösen oder vom USB-Hub aufgezählt zu werden. Ich habe es mit einem USB-Flash-Laufwerk versucht, und es hat funktioniert... allerdings wird es als ZWEITES Gerät in der Liste angezeigt, das erste ist das oben aufgeführte, allgegenwärtige usbDevice. Intents tun Feuer mit ihm aber.

Kennt jemand einen Workaround, um Intents mit HID-Geräten und anderen USB-Geräten zu aktivieren, außer den wenigen, die Android jetzt zu tun scheint?

-2voto

Ich habe meinen Arduino Uno erfolgreich an mein Samsung Galaxy Tab 10 P7500 angeschlossen. Wenn Sie ein Problem haben, es zu verbinden, Es ist, weil die Tablette verweigern die Erlaubnis für die USB-Geräte, die nicht über externe Stromversorgung. Versuchen Sie, Ihr Gerät extern mit 5 oder 3,3 Volt AC/DC-Adapter, zum ersten Mal, wenn Sie Ihr Gerät angeschlossen und Feuer die Absicht, ziehen Sie den Netzadapter, und Ihr Gerät würde ohne externe Stromversorgung zu betreiben, das Tablet selbst würde die Macht durch USB OTG geben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X