android - 从 native 代码读取 Android 相机设备,无需 root

标签 android permissions camera v4l2

我正在开发一个 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/

相关文章:

android - 如何在安装或删除其他应用程序时让我的应用程序接收广播

c# - 将相机图像渲染到 WPF 图像控件

ios - 相机模式下的 UIImagePickerView 在 iPad 上的 dismissViewController 上显示全黑

ios - 访问相机和照片库

android - 如何在 Android 中创建登录表单?

c - 如何更改 linux 套接字文件的权限?

android - 使用 ProgressDialog 和 AsyncTask 避免样板文件?

apache - 在 Mac OS X10.8 上访问 localhost 时出现 403 Forbidden 错误

java - 应用工具栏时崩溃

android - 如何使用带有自定义入口点的 FlutterFragment 在我的 Android 应用程序中嵌入 Flutter 布局?