Ich versuche auf eine USB-Webcam von Android ndk zuzugreifen.Vorschau USB Webkamera auf Android über ndk und V4L
Das Android-System hat die V4L-Kernel-Module, so dachte ich, es wäre am besten, die V4L-Bibliotheken zu verwenden. Sie sind in der ndk gebündelt, also war es keine große Sache, sie in mein Projekt aufzunehmen.
Mein Problem ist folgendes:
Ich brauche zu öffnen/dev/video4 und die ioctl zu diesem Dateideskriptors senden, aber ich habe nicht das Recht auf Zugang/dev/video4. Ich dachte über drei Dinge nach:
1) Warum fehlen mir Berechtigungen für/dev/video4? Meine App verwendet die Berechtigung "android.permission.CAMERA", also sollte der Benutzer, der die App ausführt, in der Kameragruppe sein, und die Kameragruppe hat "+" - Berechtigungen für "/ dev/video4". Warum kann ich sie nicht öffnen?
2) Ich habe versucht, den Dateideskriptor von Java-Seite zu bekommen, das ist mit der UsbManager-Klasse möglich, aber diese Dateideskriptorpunkte tun/dev/bus/usb/001/004. Gibt es eine Möglichkeit, die Erlaubnis für/dev/video4 von Java-Seite zu verlangen? Oder kann ich eine Userspace-V4L-Bibliothek hinzufügen und den Zeiger an das generische USB-Gerät in/dev/bus/usb/001/004 übergeben?
3) Wird die Android-Version von OpenCV mit V4L-Unterstützung geliefert? Kann ich damit eine Vorschau der Kamera anzeigen, ohne auf/dev/video4 zugreifen zu müssen?
Hat jemand schon mal so etwas probiert?
Auch ich weiß, dass es Bibliotheken gibt, die libusb und libuvc verwenden, um die Kamera zu verbinden (wie https://github.com/saki4510t/UVCCamera), aber diese Bibliothek ist sehr ungesättigt und liefert keine befriedigenden Ergebnisse.
Hallo. afaik die android-berechtigungen fügen den benutzer der app einer bestimmten linux-gruppe hinzu, und die app erbt diese gruppenberechtigungen, aber du hast recht, ich habe gelesen, dass sogar ein benutzerdefinierter kernel, der die richtige gruppe hinzufügt, keine berechtigung zum öffnen/dev gibt/videoX. Der uvcvideo-Treiber scheint auf dem Samsung Galaxy S5 vorhanden zu sein und funktioniert ziemlich gut, wenn der Zugriff auf/dev/videoX mit root-Berechtigungen erreicht wird (mit Ausnahme von https://code.google.com/p/android/issues/detail) ? id = 159529). Das mache ich jetzt. – BT9