Как получить доступ к внешней 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

Другие вопросы по тегам