gpt4 book ai didi

android - 如何在无根安卓设备上访问外部 USB 摄像头

转载 作者:行者123 更新时间:2023-11-29 00:08:24 27 4
gpt4 key购买 nike

我想在 android 上通过 v4l 访问外部 USB 摄像头。

我试过了 SimpleWebCam .在对原始源代码进行一些细微修改后,我实现了使其在 Root过的 android 设备上运行。然而,在没有开启Root的设备上,它一直提示“没有权限访问”/dev/video*。我用“ls -l/dev/video*”检查了/dev/video*的权限,并得到了

crw-rw---- system camera 81, 0 2015-08-18 18:31 video0

我理解这意味着/dev/video* 由系统拥有,并且对组“camera”中的用户可读/可写。所以我想如果我添加

<uses-permission android:name="android.permission.CAMERA" />

在我的应用程序 list 中,我的应用程序的用户 ID 将被添加到组“camera”,然后我的应用程序将被允许从/dev/video* 读取数据。

但是,它现在仍然提示“没有权限访问/dev/video*”。

我也试过

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

,但仍然无法正常工作。

我是错过了什么还是误解了什么。任何帮助或讨论将不胜感激。

我用来打开设备的代码是

int opendevice(int i)
{
struct stat st;

sprintf(dev_name,"/dev/video%d",i);

if (-1 == stat (dev_name, &st)) {
LOGE("Cannot identify '%s': %d, %s", dev_name, errno, strerror (errno));
return ERROR_LOCAL;
}

if (!S_ISCHR (st.st_mode)) {
LOGE("%s is no device", dev_name);
return ERROR_LOCAL;
}

fd = open (dev_name, O_RDWR);// | O_NONBLOCK, 0);

if (-1 == fd) {
LOGE("Cannot open '%s': %d, %s", dev_name, errno, strerror (errno));
return ERROR_LOCAL;
}
return SUCCESS_LOCAL;
}

open的返回值一直是-1,用logcat:

 Cannot open '/dev/video3': 13, Permission denied

最佳答案

我终于实现了使用名为 uvccamera 的开源项目在无根 android 设备上从外部 USB 摄像头读取图像。这是链接,https://github.com/saki4510t/UVCCamera

关于android - 如何在无根安卓设备上访问外部 USB 摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com