Android ndk から USB ウェブカメラにアクセスしようとしています。
Android システムには V4L カーネル モジュールがあるため、V4L ライブラリを使用するのが最適であると考えました。それらは ndk にバンドルされているため、それらを私のプロジェクトに含めることは大したことではありませんでした。
私の問題は次のとおりです。
/dev/video4 を開き、ioctl をそのファイル記述子に送信する必要がありますが、/dev/video4 にアクセスする権限がありません。次の3つのことを考えました。
1) /dev/video4 に対する権限がないのはなぜですか? 私のアプリは android.permission.CAMERA パーミッションを使用するため、アプリを実行するユーザーはカメラ グループに属している必要があり、カメラ グループには /dev/video4 に対する r+w パーミッションがあるのに、なぜ開けないのですか?
2) UsbManager クラスで可能である Java 側からファイル記述子を取得しようとしましたが、そのファイル記述子ポイントは /dev/bus/usb/001/004 を行います。Java 側から /dev/video4 の許可を要求する方法はありますか? または、ユーザー空間 V4L ライブラリを含めて、ポインタを /dev/bus/usb/001/004 の汎用 USB デバイスに渡すことはできますか?
3) Android バージョンの OpenCV には V4L サポートが付属していますか? /dev/video4 にアクセスせずにカメラをプレビューするために使用できますか?
誰かが前にこのようなことを試したことがありますか?
また、libusb と libuvc を使用してカメラに接続するライブラリ ( https://github.com/saki4510t/UVCCameraなど) があることは知っていますが、このライブラリは非常に不安定で、満足のいく結果が得られません。