Kann keine Broadcast-Absicht von UsbManager.ACTION_USB_DEVICE_ATTACHED / UsbManager.ACTION_USB_DEVICE_DETACHED empfangen

8

Ich habe vor kurzem eine USB-Host-App programmiert, aber sie ist steckengeblieben, weil ich das Ereignis "Gerät angeschlossen / gelöst" nicht erkennen kann. Ich folgte der Codierungsnotiz von Ссылка und beziehen sich auf andere Codierung im Netzwerk, Nach mehreren Prüfungen kann ich das Problem immer noch nicht finden. Nach meinem Debugging scheint es, dass die Absicht UsbManager.ACTION_USB_DEVICE_ATTACHED / UsbManager.ACTION_USB_DEVICE_DETACHED nicht passiert ist, weil ich versuche, Context.sendBroadcast () zu verwenden, um eine benutzerdefinierte Absicht zu senden, und mein BroadcastReceiver kann die Absicht empfangen. Aber wenn ich das USB-Gerät anschließe / entferne, läuft der BroadcastReceiver nicht. Das Handy, das ich benutze, ist HTC One-X, ich bin mir sicher, dass die OTG-Funktion korrekt ist, da die Mausfunktion perfekt funktioniert. Hier ist mein Codestück.

%Vor%

Der BroadcastReceiver

%Vor%

Manifest.xml

%Vor%

device_filter in res / xml, alle 3 Einstellungen sind ausprobiert und nicht verwendbar:

%Vor%

Wenn jemand weiß, was passiert ist? oder sag mir, wie ich herausfinden kann, ob die Broadcast-Absicht aktiv ist oder nicht, vielen Dank.

    
user2645035 02.08.2013, 11:21
quelle

2 Antworten

3

Vielleicht ein bisschen spät, aber es kann anderen helfen. Habe gerade ein ähnliches Problem mit der Erkennung von USB-Geräten gelöst. Es stellt sich heraus, dass - weil Sie im Manifest einen Intent-Filter angegeben haben - Android onResume aufruft, wenn etwas eingesteckt ist. Sie könnten Folgendes hinzufügen:

%Vor%

Dann brauchen Sie auch nicht den Aufruf registerReceiver() in onCreate() . Beachten Sie auch, dass die IDs im Intent-Filter dezimal sind. Also müssten Sie die Werte wie in Befehlszeilen-Tools wie 'lsusb' dargestellt konvertieren.

    
fredvanl 15.10.2013 09:00
quelle
1

Das Empfänger-Tag ist auskommentiert, ich nehme an, Sie wissen das, aber nur im Fall. Außerdem sollte es als <receiver android:name="mUsbReceiver"> deklariert sein. das muss nicht da sein

    
Cob50nm 02.08.2013 11:37
quelle