Как получить доступ к внешней USB-камере на рутированных устройствах Android
Я хочу получить доступ к внешним USB-камерам через v4l на Android.
Я попробовал SimpleWebCam. После некоторых небольших модификаций исходных кодов, я добился того, чтобы он работал на рутированном устройстве Android. Тем не менее, на некорневых устройствах он продолжает жаловаться на то, что "у него нет прав доступа" / dev / video * ". Я проверил разрешение / dev / video * с помощью" ls -l / dev / video * "и получил
crw-rw---- system camera 81, 0 2015-08-18 18:31 video0
Я понимаю, что это означает, что / dev / video * являются собственностью системы и доступны для чтения / записи пользователям в группе "камера". Так что я думаю, если я добавлю
<uses-permission android:name="android.permission.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
2 ответа
Наконец-то я добился чтения изображений с внешней USB-камеры на неподключенных устройствах Android с помощью проекта с открытым исходным кодом uvccamera. Вот ссылка, https://github.com/saki4510t/UVCCamera
Попробуйте добавить также
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
в вашем файле манифеста:
http://developer.android.com/reference/android/hardware/Camera.html