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.
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.
Tags und Links android usb intentfilter broadcastreceiver host