我正在开发一个 Android 应用程序,它使用来自/dev/videoN 的 Video for Linux 2 API 获取相机帧,其中 N 是从 0 开始的整数,例如/dev/video1、/dev/video2 等。我出于性能原因,我在 C/C++ 中这样做;我无法在 Java 中进行足够快的相机帧处理。我遇到的问题是默认情况下/dev/videoN 设备具有所有者和组只读/写的 Unix 文件权限,因此我需要做
chmod a+rxw/dev/video1
让我的程序能够从/dev/video1 中读取。这仅在获得 root 权限的设备上可行。
有没有办法允许 native 代码在非 root Android 设备上访问/dev/videoN?我试图为我的应用程序授予访问相机硬件的 Android 权限(在 AndroidManifest.xml 中),但这在这种情况下没有任何效果,默认情况下我仍然没有从/dev/videoN 读取的 Unix 权限。
(在运行Android 4.4的Nexus 7上,/dev/videoN属于Unix组“camera”,但是有camera权限的app默认好像没有放在那个组里)
最佳答案
我认为您需要 JNI 胶水才能通过 Java 代码访问相机。您可以使用 native 代码进行帧处理。
关于android - 从 native 代码读取 Android 相机设备,无需 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610755/