Sebbene negli ultimi tempi la situazione sia parzialmente migliorata, tutti sappiamo che la webcam del PC è mediocre se paragonata con quella che equipaggia i moderni smartphone. Android 14 permette finalmente di usare la webcam dello smartphone come videocamera evoluta sul computer collegato con il dispositivo. Che Google intendesse trasformare gli smartphone Android in webcam per il PC si era già capito a inizio 2023 con l'”avvistamento” di un nuovo servizio dedicato nelle “pieghe” del sistema operativo.
Per usare la videocamera dello smartphone su PC fino ad oggi si dovevano scaricare e installare app Android “ad hoc” che si interfacciavano con il dispositivo mobile ed esponevano in rete locale un modulo server da utilizzare con le varie applicazioni locali e sul Web (ad esempio le principali piattaforme per le videoconferenze online). Abbiamo anche visto come sfruttare la cosa per creare una sorta di regia, con la possibilità di inviare il flusso in streaming e passare da una telecamera all’altra.
Android 14 trasforma la fotocamera dello smartphone in una webcam per il PC
Le piattaforme per le videoconferenze come Google Meet, Zoom e Microsoft Teams hanno registrato una vera e propria esplosione in termini di popolarità durante la triste era del COVID-19. Il mercato delle webcam, a fronte di una domanda così sostenuta, ha faticato a tenere il passo. Le migliori webcam erano difficili da trovare o troppo costose, costringendo la maggior parte delle persone a utilizzare quelle integrate nei propri notebook. Così, come abbiamo spiegato in apertura, in tanti hanno preferito sfruttare le videocamere presenti negli smartphone, certamente più evolute e performanti.
Quando si collega un telefono Android a un PC, è possibile scegliere la modalità USB da utilizzare: le possibili opzioni sono il trasferimento di file/Android Auto (MTP), il tethering USB (NCM), MIDI o PTP.
Con l’arrivo di Android 14, il “robottino verde” si arricchisce di un’ulteriore opzione: Webcam USB. Selezionando questa voce, il trasferimento di dati via USB attiva la modalità UVC (USB Video Class), a condizione che il dispositivo la supporti. Lo smartphone Android si trasforma così, automaticamente, in una webcam USB standard riconosciuta come tale dai sistemi collegati a valle, ad esempio PC Windows, sistemi macOS, macchine Linux e potenzialmente anche altri dispositivi Android.
Cos’è lo standard UVC, USB Video Class
UVC è uno standard che definisce un set di specifiche per la trasmissione di dati video e audio attraverso una connessione USB. Lo standard è sviluppato per semplificare e standardizzare il funzionamento delle webcam e di altri dispositivi di acquisizione video che utilizzano una connessione USB per comunicare con un computer o un altro dispositivo host.
Le principali caratteristiche di UVC includono il supporto Plug-and-Play (i prodotti compatibili funzionano immediatamente senza richiedere l’installazione di driver specifici), la compatibilità multi-piattaforma, la possibilità di usare formati e risoluzioni video standard, la sincronizzazione audio-video e il controllo da remoto, compresi la regolazione della messa a fuoco, del bilanciamento del bianco e di altri parametri dell’immagine direttamente tramite il software applicativo.
Usare i dispositivi Android 14 come webcam USB
Esaminando il comportamento di Android 14, si scopre che il supporto webcam non è abilitato per default. Al momento, il sistema operativo Google non sembra prescindere da una configurazione “ad hoc” da abilitare a livello di kernel Linux, dall’impostazione del dispositivo UVC e dall’aggiornamento del livello di astrazione dell’hardware USB (USB HAL).
La configurazione del kernel Linux (CONFIG_USB_CONFIGFS_F_UVC
) è necessaria affinché il dispositivo Android possa essere montato come device UVC. Fortunatamente, molti dispositivi che vengono aggiornati o lanciati con Android 14 preinstallato, dispongono già di questa configurazione abilitata nel kernel. Alcuni dispositivi già sul mercato che saranno aggiornati ad Android 14 potrebbero invece essere sprovvisti dell’impostazione abilitata lato kernel.
Previa attivazione delle Opzioni sviluppatore Android, si può utilizzare dalla finestra del terminale il comando seguente, al fine dei verificare se la configurazione in questione sia abilitata o meno:
adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"
La comparsa del valore “y” o “yes” accanto a CONFIG_USB_CONFIGFS_F_UVC
, conferma la presenza dell’impostazione corretta nel kernel Linux del dispositivo Android in uso.
Non basta, però. Le ultime versioni beta di Android 14 (ad esempio Android 14 QPR1 per alcuni dispositivi Pixel selezionati) presentano una nuova app di sistema chiamata Webcam Service (com.android.deviceaswebcam
). Sia questa app che la libreria correlata libjni_deviceAsWebcam.so
sembrano presenti nel sorgente di Android 14.
Il funzionamento di Webcam Service su Android 14
Il servizio Webcam Service citato in precedenza si occupa di girare i frame acquisiti dalla fotocamera dello smartphone al percorso /dev/video
. La directory /dev
è una parte fondamentale del file system sui sistemi Unix-like ed è utilizzata per rappresentare dispositivi hardware o interfacce software come file speciali. Facendo leva su /dev/video
è possibile accedere ai flussi video provenienti da tali dispositivi tramite programmi e applicazioni software.
La politica SELinux stabilisce che soltanto l’applicazione di sistema Webcam Service possa accedere al contenuto di /dev/video
. Di conseguenza, solo il produttore del dispositivo e nessuna terza parte possono effettivamente sfruttare il supporto nativo della webcam USB in Android 14.
Affinché i dispositivi connessi a valle possano usare la webcam dello smartphone è necessario che Webcam Service imposti UVC su true
autorizzando questo tipo di impiego. Sui dispositivi Google Pixel, inoltre, la configurazione di UVC è contenuta in un file ospitato nella cartella /vendor/etc/init/hw
.
La buona notizia è che, essendo Webcam Service implementato in AOSP, Android Open Source Project, sia i produttori diversi da Google che gli sviluppatori di ROM alternative potranno facilmente abilitare l’utilizzo della fotocamera come webcam USB.