GOOGLE ADS

четверг, 28 апреля 2022 г.

Ошибка доступа к внешней камере во флаттере - «Пользователь не дал разрешения на доступ к устройству»

Я хочу получить доступ к веб-камере USB через планшет.

Я скачал этот проект для изучения и тестирования. Это работает отлично. Камера открывается, делает снимок и сохраняет.

проект - гитхаб

Я создал проект во флаттере и сделал канал связи для доступа к приложению. Но в тот момент, когда я пытаюсь открыть камеру, я получаю сообщение:

Пользователь не предоставил 10404/com.example.monitoramento разрешение на доступ к устройству /dev/bus/usb/001/002.

У меня есть файл device_filter.xml, в который я добавляю PID и VID устройства:

<?xml version="1.0" encoding="utf-8"?>
<usb>
<usb-device class="239" subclass="2" /> <!-- all device of UVC -->
<!-- a few android 9.0 -->
<usb-device class="14" subclass="9" />
<usb-device class="2" subclass="0" />
<usb-device class="6" subclass="-1" />
<usb-device class="39" subclass="0" />
<usb-device product-id="4836" vendor-id="9573" />
<usb-device product-id="2229" vendor-id="1133" />
<usb-device product-id="640" vendor-id="1409" />
<usb-device product-id="258" vendor-id="9228" />
<usb-device product-id="2074" vendor-id="1133" />
</usb>

Об этих ошибках также сообщается.
введите описание изображения здесь

Я ценю любые комментарии!


Решение проблемы

Та же проблема с аналогичным приложением ( https://github.com/shengjunhu/android_uvc_camera ). Пользовательский интерфейс обоих приложений выглядит одинаково и даже имеет одинаковое название (UVCCamera), что заставляет меня подозревать, что они генетически связаны.

Android требует, чтобы приложения получали разрешение перед доступом к USB-устройству. Насколько я понимаю, есть два способа сделать это:


  • Определите фильтр намерений для приложения. Если подключено соответствующее USB-устройство, пользователю предлагается разрешить приложению доступ к USB-устройству, после чего приложение запускается. В этом случае у приложения уже есть разрешение. Для фильтра намерений требуется список устройств для прослушивания, например device_filter.xml.


  • Если приложение ищет устройство, а не ждет уведомления, разрешение должно быть получено явным образом. Это работает так же, как и другие разрешения во время выполнения, как описано в https://developer.android.com/guide/topics/connectivity/usb/host.html#permission-d.



Если ваше приложение сканирует устройства USB-камеры, а не прослушивает намерение, первый вариант недоступен, и изменение device_filter.xmlне имеет никакого эффекта. После обнаружения камеры вам нужно будет запросить разрешение и отложить доступ к камере до тех пор, пока разрешение не будет предоставлено.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...