我想通过Android上的v4l访问extern usb相机。
我试过了SimpleWebCam。经过对原始源代码的一些细微修改后,我实现了它在一个有根的Android设备上工作。但是,在无根设备上,它一直在抱怨"没有权限访问" / dev / video *"。我用" ls -l / dev / video *"检查了/ dev / video *的许可,并得到了
crw-rw---- system camera 81, 0 2015-08-18 18:31 video0
据我所知,这意味着/ dev / video *归系统所有,并且对于组中的用户是可读/可写的#34;相机"。所以我想如果我添加
<uses-permission android:name="android.permission.CAMERA" />
在我的应用清单中,我的应用的用户ID将被添加到群组&#34;相机&#34;,然后我的应用将被允许从/ dev / video *读取数据。
但是,它仍然抱怨&#34;没有权限访问/ dev / video *&#34;现在
我也试过
<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
答案 0 :(得分:2)
我终于实现了使用名为uvccamera的开源项目在未经验证的Android设备上从外部USB摄像头读取图像。
这是链接OwnerDraw
答案 1 :(得分:0)
尝试添加
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
清单文件中的:
http://developer.android.com/reference/android/hardware/Camera.html