In che modo SmileID ha scalato la verifica dell'identità a oltre 18.000 tipi di dispositivi Android con CameraX
Tempo di lettura: 4 min
Le app di verifica dell'identità per i servizi bancari e la registrazione delle SIM richiedono acquisizioni del volto chiare e ad alta risoluzione per rilevare spoofing e deepfake. Acquisire fotogrammi abbastanza nitidi per i controlli di liveness e anti-spoofing, senza causare arresti anomali dei dispositivi con poca memoria, è una sfida comune per gli sviluppatori di fotocamere Android.
Per SmileID, un SDK di verifica dell'identità leader in Africa, questa sfida è raddoppiata da un ecosistema hardware diversificato. Android rappresenta l'85% della quota di mercato dei dispositivi di destinazione di SmileID, inclusi smartphone entry-level con processori molto limitati, modelli regionali poco conosciuti e terminali point of sale (POS) personalizzati rinforzati.
Prima di adottare CameraX, SmileID ha dovuto affrontare ostacoli di progettazione della fotocamera standard, ma scoraggianti: feed di anteprima allungati, orientamenti dei sensori ruotati, arresti anomali per memoria esaurita (OOM) e bug personalizzati dei produttori di apparecchiature originali (OEM). Eseguendo la migrazione dei suoi SDK Android principali a CameraX, SmileID ha trasformato queste sfide in un importante vantaggio aziendale.
Secondo SmileID, la migrazione degli SDK Android a CameraX ha prodotto i seguenti risultati:
| Metrica | Impatto della migrazione a CameraX |
|---|---|
| Crescita dell'adozione dell'SDK | 20 volte entro il secondo anno (rispetto alle 2-3 volte prima di CameraX) |
| Tassi di superamento della verifica | Aumento del 20% per le app che utilizzano gli SDK di SmileID |
| Risoluzione di acquisizione | Aumento di 4 volte dei pixel per selfie/liveness con overhead di rete pari a zero |
| Compatibilità dei modelli di dispositivi | Oltre 18.000 tipi di dispositivi Android supportati |
| Numero totale di verifiche scalate | Oltre 160 milioni di verifiche dell'identità elaborate |
La sfida: hardware frammentato e problemi con le API legacy
Per confermare che un utente è chi dichiara di essere, l'SDK di SmileID deve acquisire fotogrammi di selfie ad alta risoluzione per i controlli di liveness on-device e il rilevamento di deepfake basato su cloud.
Con le implementazioni delle API Camera1 legacy e Camera2 di basso livello, ottenere questo risultato in modo coerente era difficile per diversi motivi:
- Personalizzazioni e peculiarità degli OEM: i dispositivi di produttori diversi segnalavano gli orientamenti dei sensori della fotocamera fisici in modo diverso, con conseguenti anteprime ruotate o acquisizioni di volti orientate in modo errato.
- Distorsioni delle proporzioni: la richiesta di una dimensione specifica del frame sui dispositivi economici spesso causava l'allungamento verticale o orizzontale dell'anteprima della fotocamera, distorcendo il volto dell'utente e rendendo inutile la verifica biometrica.
- Arresti anomali per memoria insufficiente (OOM): l'elaborazione di immagini non elaborate ad alta risoluzione su dispositivi con poca RAM (spesso 1 GB o meno) causava spesso arresti anomali fatali per l'allocazione della memoria.
A causa di questi punti di attrito, la crescita dell'adozione dell'SDK di SmileID su base annua era limitata a 2-3 volte e molte verifiche dovevano ricorrere al caricamento di foto statiche tramite un'API REST ad alta latenza anziché eseguire controlli di liveness on-device in tempo reale.
La soluzione: pipeline coerenti con CameraX
SmileID ha riprogettato i suoi SDK mobile da zero utilizzando CameraX, creato appositamente per astrarre la complessità dell'ecosistema di dispositivi sottostante e fornire un'interfaccia per sviluppatori coerente e nativamente sensibile al ciclo di vita.
Utilizzando i casi d'uso principali di CameraX (in particolare Preview e ImageAnalysis), SmileID ha creato una pipeline della fotocamera solida e con un duplice scopo:
- Anteprima: esegue il rendering di un'anteprima in tempo reale perfettamente proporzionata del feed videocamera per guidare l'utente.
- ImageAnalysis: elabora continuamente i frame localmente in tempo reale per eseguire il rilevamento automatico della presenza e del volto nel frame ed estrarre il frame del selfie verificato.
Per acquisire dettagli ultra nitidi per il rilevamento di deepfake senza causare arresti anomali per memoria esaurita, SmileID ha aggiunto l'API moderna ResolutionSelector di CameraX direttamente alla configurazione di ImageAnalysis. Consente agli sviluppatori di richiedere una risoluzione target e scegliere una regola di riserva quando un dispositivo non supporta le dimensioni esatte. Ad esempio, il seguente diagramma e la configurazione di esempio illustrano in che modo ResolutionSelector valuta le dimensioni candidate intorno a un target di 1200 x 900:
Di seguito è riportato il codice campione corrispondente che mostra come accoppiare ResolutionSelector con STRATEGY_KEEP_ONLY_LATEST nella tua app (utilizza FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER per dare priorità alla nitidezza o FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER per limitare la memoria utilizzata):
import android.util.Size import androidx.camera.core.CameraSelector import androidx.camera.core.ImageAnalysis import androidx.camera.core.Preview import androidx.camera.core.resolutionselector.AspectRatioStrategy import androidx.camera.core.resolutionselector.ResolutionSelector import androidx.camera.core.resolutionselector.ResolutionStrategy import androidx.camera.lifecycle.ProcessCameraProvider import androidx.lifecycle.LifecycleOwner fun configureCameraX(cameraProvider: ProcessCameraProvider, lifecycleOwner: LifecycleOwner, surfaceProvider: Preview.SurfaceProvider, executor: java.util.concurrent.Executor, analyzer: ImageAnalysis.Analyzer) { // 1. Define a resolution strategy requesting high quality (for example, 1200x900px) // and selecting the closest higher (or, if unavailable, lower) resolution. val resolutionSelector = ResolutionSelector.Builder() .setResolutionStrategy( ResolutionStrategy( Size(1200, 900), ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER ) ) .setAspectRatioStrategy(AspectRatioStrategy.RATIO_4_3_FALLBACK_AUTO_STRATEGY) .build() // 2. Configure the ImageAnalysis use case with the resolution selector // and a backpressure strategy that keeps the UI responsive on slow processors. val imageAnalysis = ImageAnalysis.Builder() .setResolutionSelector(resolutionSelector) // Drops older frames if the device's CPU is still busy analyzing the previous one .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() // 3. Set up the preview stream and attach the Analyzer and SurfaceProvider imageAnalysis.setAnalyzer(executor, analyzer) val preview = Preview.Builder().build().also { it.surfaceProvider = surfaceProvider } // 4. Bind both use cases concurrently to the lifecycle provider try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle( lifecycleOwner, CameraSelector.DEFAULT_FRONT_CAMERA, preview, imageAnalysis ) } catch (exc: Exception) { // Handle binding failure safely } }
Richiedendo frame di pixel ad alta densità ed elaborandoli localmente, SmileID ha ottenuto un aumento di 4 volte della risoluzione dei selfie acquisiti. SmileID ha anche compresso l'area del volto ritagliata sul dispositivo, in modo che le dimensioni di caricamento sulla rete rimanessero identiche a quelle del sistema precedente. Questa architettura ha garantito dati più precisi per i modelli di machine learning senza aumentare i costi della rete dati per gli utenti.
In che modo CameraX risolve le differenze hardware
La standardizzazione su CameraX ha permesso a SmileID di fare affidamento su due livelli di ingegneria della compatibilità per mantenere stabile il proprio SDK su tutti i dispositivi:
1. Google's Camera and Media Test Lab
La compatibilità di CameraX è supportata da una verifica continua dell'hardware fisico. Nel Camera and Media Test Lab dedicato di Google, ogni giorno viene eseguita una suite di test automatizzati su una matrice di rotazione di oltre 190 modelli di dispositivi Android fisici. Sono inclusi dispositivi che rappresentano diversi chipset, versioni del sistema operativo e funzionalità hardware.
Per ottenere un comportamento più coerente sui dispositivi più diffusi, il Camera and Media Test Lab di Google rileva automaticamente le regressioni della libreria prima che possano influire sul codice di produzione.
2. Soluzioni alternative automatiche per i problemi dei dispositivi
Dispositivi Android diversi hanno limitazioni fisiche diverse. Alcune potrebbero non riuscire a configurare le impostazioni di esposizione personalizzate, mentre altre potrebbero segnalare dati di immagini invertiti quando utilizzano determinati formati. Per evitare che gli sviluppatori appesantiscano le loro codebase con blocchi condizionali complessi basati sul produttore e sul modello del dispositivo, CameraX gestisce classi interne di anomalie dei dispositivi come DeviceQuirks e CameraQuirks in camera-camera2 (DeviceQuirksLoader.kt). Quando CameraX rileva un dispositivo con un problema noto, inserisce automaticamente una soluzione alternativa personalizzata. Per SmileID, questo significava che il suo SDK poteva funzionare in modo affidabile su oltre 18.000 tipi di dispositivi Android senza bisogno di patch specifiche per i dispositivi nel suo codebase.
Scalabilità fino a oltre 160 milioni di verifiche
Con la migrazione a CameraX, SmileID ha semplificato l'integrazione dell'SDK per gli sviluppatori di app esterni.
L'eliminazione delle distorsioni delle proporzioni, delle anteprime lente e degli arresti anomali improvvisi per memoria esaurita ha portato a un aumento del 20% dei tassi di superamento della verifica per i servizi che utilizzano i loro SDK. Per gli istituti finanziari e le app di mobile money in Africa, un aumento del 20% dei tassi di superamento significa che centinaia di migliaia di utenti legittimi vengono integrati con successo anziché abbandonare.
Gli sviluppatori hanno preso nota. La facilità di integrazione dell'SDK basato su CameraX ha generato un aumento dell'adozione di 15 volte nel primo anno, salendo a 20 volte nel secondo anno. Ad oggi, SmileID ha elaborato con successo oltre 160 milioni di verifiche dell'identità utilizzando CameraX.
Crea la tua storia di compatibilità con la skill CameraX
Sviluppare per le fotocamere non deve essere difficile. Per aiutare il tuo team ad adottare gli stessi pattern CameraX utilizzati da SmileID, Android ha lanciato la skill CameraX per gli agenti di programmazione AI.
Quando utilizzi la skill CameraX nel tuo ambiente di sviluppo, gli agenti di programmazione AI come Gemini applicano i pattern CameraX attuali per la migrazione, l'associazione del ciclo di vita, ConcurrentCamera e MlKitAnalyzer. Che tu stia configurando feed con doppia fotocamera, un'anteprima con PreviewView o CameraXViewfinder o gestendo l'analisi di machine learning (ML) in tempo reale, la skill CameraX guida l'agente nella generazione di codice preciso e pronto per la produzione.
- Esplora la skill CameraX: visita la directory delle skill per sviluppatori Android o esegui
android skills add cameraxcon la CLI Android per aggiungere la skill al tuo strumento di programmazione AI. - Guida introduttiva a CameraX: consulta la documentazione ufficiale di CameraX e rendi la tua esperienza con la fotocamera disponibile ovunque.
-
Case studyGrab è la superapp leader nel Sud-est asiatico, che offre consegne, mobilità e servizi finanziari a milioni di utenti in otto paesi tramite un'unica app.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Tempo di lettura: 5 min -
Case studyIl team ha creato un codebase UI AI-native più piccolo del 50% rispetto all'implementazione originale, ottenendo al contempo una riduzione del 35% del tempo di esecuzione dell'agente AI, una riduzione del 32% degli scambi tra ingegneri e agenti e una riduzione del 33% del costo dei token.
Pavlo Stavytskyi, Rebecca Franks • Tempo di lettura: 11 min -
Case studyWhatsApp è la più grande piattaforma di messaggistica al mondo, con miliardi di utenti a livello globale. È lo strumento di comunicazione predefinito per le persone di diverse regioni, che connette gli utenti tramite messaggi privati, affidabili e sicuri.
Niharika Arora, Tracy Agyemang, Mayank Jain • Tempo di lettura: 8 min
Ricevi gli ultimi approfondimenti sullo sviluppo Android direttamente nella tua casella di posta ogni settimana.