Android 14 додає підтримку використання смартфонів як веб-камер

Android 14 додає підтримку використання смартфонів як веб-камер
Переклад 6 хв. читання
25 вересня 2023

Платформи для відеоконференцій, такі як Zoom і Google Meet, стрімко зросли в популярності в епоху COVID, але ринок веб-камер ледве встигав за ними. Найкращі веб-камери було важко дістати або вони були занадто дорогими, тому більшість людей використовували дешевші та більш доступні веб-камери або вбудовану веб-камеру ноутбука. Однак камера в більшості смартфонів пропонує значно кращу якість зображення, ніж у переважної більшості веб-камер, тому багато людей встановлювали стороннє програмне забезпечення на свої телефони, щоб перетворити їх на веб-камери. Починаючи з Android 14, вам, можливо, не доведеться використовувати сторонні програми для перетворення смартфона на веб-камеру для ПК, оскільки ця функція вбудована в саму ОС Android - хоча є один нюанс.

Коли ви підключаєте телефон Android до ПК, у вас є можливість змінити режим USB між передачею файлів/Android Auto (MTP), прив'язкою USB (NCM), MIDI або PTP. Однак в Android 14 з'явилася нова опція у налаштуваннях USB: USB веб-камера. Вибір цієї опції перемикає режим USB на UVC (USB Video Class), якщо пристрій його підтримує, перетворюючи ваш Android-пристрій на стандартну USB-камеру, яку розпізнаватимуть інші пристрої, зокрема комп'ютери з Windows, macOS і Linux, і, можливо, навіть інші Android-пристрої.

Android 14 додає підтримку використання смартфонів як веб-камер

Однак, підтримка веб-камери в Android 14 не ввімкнена з коробки. Щоб її увімкнути, потрібно зробити чотири речі: увімкнути конфігурацію ядра Linux, налаштувати пристрій UVC, оновити USB HAL і попередньо завантажити новий системний застосунок.

Конфігурація ядра

Конфігурація ядра Linux CONFIG_USB_CONFIGFS_F_UVC необхідна для того, щоб пристрій Android можна було змонтувати як UVC-гаджет. На щастя, багато пристроїв, які оновлюються до Android 14, і майже всі пристрої, які запускаються з Android 14, матимуть ядро у якому увімкнено цей параметр. Це тому, що він увімкнений за замовчуванням у версіях Generic Kernel Image (GKI), починаючи з android12-5.10 і вище, а для пристроїв, які запускаються з Android 12 або вище на ядрі Linux версії 5.10 або вище, потрібно поставляти ядро з конфігурацією GKI.

Оскільки значні оновлення версій ядра в середовищі Android відбуваються рідко, а програма Google Requirements Freeze (GRF) дозволяє сертифікувати старіші версії, деякі пристрої, що оновлюються до Android 14, не матимуть ядра, яке підтримує функцію веб-камери через USB. Важко скласти список таких пристроїв, тому найкращий спосіб дізнатися, чи підтримує ваш пристрій цю функцію, - перевірити версію ядра і чи ввімкнено конфігурацію.

Щоб перевірити версію ядра вашого пристрою, запустіть:

adb shell “cat /proc/version”

Однак, щоб переконатися, що конфігурацію ядра увімкнено, для цього потрібно запустити іншу команду і перевірити, чи з'являється CONFIG_USB_CONFIGFS_F_UVC у файлі config.gz, стислій копії конфігураційного файлу, що використовується для збирання ядра на пристрої.

adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"

Наприклад, ось дані з Galaxy Z Fold 5 під управлінням Android 13. Оскільки він використовує android13-5.15 GKI та оскільки CONFIG_USB_CONFIGFS_F_UVC=y, він повинен підтримувати функцію веб-камери через USB після оновлення до Android 14. Однак це за умови, що пристрій відповідає іншим вимогам, про які я згадував раніше. Android 14 додає підтримку використання смартфонів як веб-камер

Сервісна служба веб-камери

У бета-версії Android 14 QPR1 для деяких пристроїв Pixel з'явився новий системний застосунок під назвою "Служба веб-камери" (com.android.deviceaswebcam). Ця програма використовує спільну бібліотеку libjni_deviceAsWebcam.so. Цю програму і бібліотеку буде включено в майбутній випуск вихідного коду Android 14.

Додаток Webcam Service реалізує сервіс DeviceAsWebcam, який, як я раніше повідомляв, “[turn] an Android device into a webcam.”. Служба пересилає кадри з камери на вузол /dev/video, звідки хост-пристрої можуть їх зчитувати. Політика SELinux передбачає, що тільки процеси в домені device_as_webcam, тобто тільки системний додаток Webcam Service, можуть мати доступ до вузлів /dev/video. Таким чином, тільки виробник пристрою, а не будь-яка третя сторона, може фактично скористатися перевагами вбудованої підтримки USB веб-камери в Android 14.

Як програма "Служба веб-камери" дізнається, коли починати пересилати кадри з камери? Коли увімкнено нову опцію "USB веб-камера" у "Налаштуваннях USB", система транслює намір android.hardware.usb.action.USB_STATE з додатковими параметрами connected і uvc. Служба веб-камери має приймач для цього наміру, який запускає системну службу, якщо додатковий параметр наміру uvc встановлено у значення true і метод фреймворку android.hardware.usb#isUvcSupportEnabled() повертає значення true.

Метод isUvcSupportEnabled() повертає true, якщо системна властивість ro.usb.uvc.enabled має значення true. Ця властивість має бути встановлена виробником під час збірки, і якщо її не встановлено, то у "Параметрах USB" не буде показано опцію "USB-вебкамера" і не буде запущено Службу веб-камери. Цю властивість можуть читати лише системні програми, такі як "Налаштування" та "Служба веб-камери".

Після запуску Служби веб-камери з'являється нове сповіщення, яке дозволяє користувачеві налаштувати веб-камеру. Натискання на сповіщення відкриває попередній перегляд камери, де користувач може збільшити або зменшити масштаб або змінити об'єктив. Під капотом програма Webcam Service запускає службу переднього плану, щоб забезпечити її постійну роботу в системі. Вона використовує API Camera2 і підтримує потокову передачу з роздільною здатністю 720p (1280x720) або 1080p (1920x1080p). Пристрій веб-камери відображається на підключеному хості як "Android Webcam".

Android 14 додає підтримку використання смартфонів як веб-камер

ConfigFS та USB HAL

Точний метод кодування, параметри відео та ім'я, що будуть показані хосту, залежать від того, як виробник пристрою налаштував UVC-гаджет за допомогою configfs. Наприклад, на пристроях Pixel на базі Tensor конфігурацію функцій гаджета UVC від Google можна знайти у файлі init.gs[101|201].usb.rc, розташованому в /vendor/etc/init/hw.

Android 14 додає підтримку використання смартфонів як веб-камер

Крім того, пристрій потребує оновленого USB HAL, щоб Android міг перемикати режими USB на UVC, коли цю опцію вибрано в Налаштуваннях. Однак через вищезгадану програму GRF, ймовірно, що багато пристроїв, які оновлюються до Android 14, не отримають оновлений USB HAL, а це означає, що ця функція не працюватиме.

Висновок

Приємно бачити, що Google впроваджує в Android власну функціональність USB-вебкамери. Якщо припустити, що застосунок Webcam Service буде доступний в AOSP, як ми очікуємо, це означає, що ця функція може бути використана будь-яким виробником пристроїв, який бажає реалізувати функцію веб-камери. Багато хто назве цю функцію клоном "Камери безперервної зйомки" від Apple, але варто зазначити, що версія Android працює з декількома платформами. Будь-який телефон під управлінням Android 14, який відповідає вимогам, згаданим у цій статті, можна перетворити на стандартну USB-вебкамеру, що працює з будь-яким ПК, і це дуже важливо.

Джерело: Android 14 adds support for using smartphones as webcams
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація