从本机代码读取Android相机设备,无需root



我正在开发一个Android应用程序,该应用程序使用Video for Linux 2 API从/dev/videoN获取相机帧,其中N是从0开始的整数,例如/dev/video1、/dev/video2等。出于性能原因,我在C/C++中这样做;我无法用Java进行足够快速的相机帧处理。我遇到的问题是,默认情况下,/dev/videoN设备只有所有者和组的Unix文件读/写权限,因此我需要进行

chmod a+rxw/dev/video1

以允许我的程序能够从/dev/video1中读取。这只能在根设备上实现。

有没有一种方法可以允许本地代码在非根Android设备上访问/dev/videoN?我试图给我的应用程序访问相机硬件的Android权限(在AndroidManifest.xml中),但在这种情况下没有效果,默认情况下我仍然没有从/dev/videoN读取的Unix权限。

(在运行Android 4.4的Nexus 7上,/dev/videoN属于Unix组"相机",但默认情况下,具有相机权限的应用程序似乎不在该组中)

我认为您需要一个JNI胶水来通过java代码访问相机。您可以在本机代码中进行帧处理。

最新更新