UROVO Android SDK/Kotlin

UROVO ScanManager Kotlin esempio e checklist di convalida

Questo progetto di implementazione adatta lo ScanManager API approvato UROVO in un piccolo esempio di attività Kotlin. Si tratta di un codice di esempio per la convalida, non una promessa di compatibilità con ogni modello o firmware UROVO.

16 minuti di letturaRecensito: 2026-08-10Android sviluppatori che integrano UROVO hardware per codici a barre
Visualizzazione funzionalità UROVO DT66 per l'integrazione di Android ScanManager
SDK-campione supportato da riferimenti/non convalidato su ogni configurazione di destinazione

Punti di partenza verificati

API riferimentoUROVO Android SDK v4.1.0326

Utilizzare il pacchetto approvato e registrare il checksum dell'artefatto.

Decodifica canaleTrasmissione ScanManager.ACTION_DECODE

Leggi i dati documentati, la stringa, la lunghezza e il tipo extra.

Ciclo di vitaApri e registrati; fermati, annulla la registrazione e chiudi

Abbina la proprietà all'architettura dell'applicazione.

CompatibilitàDispositivo esatto + sistema operativo + firmware + SDK + build dell'app

La sola presenza di API non costituisce una convalida superata.

Regola di attuazione

Tratta ScanManager come una risorsa hardware con un proprietario esplicito. Aprilo, seleziona la modalità di output prevista, registra il ricevitore di decodificazione, convalida ogni carico utile, quindi annulla la registrazione e chiudi in modo deterministico. Confermare il comportamento del metodo sul campione con intento di produzione.

01

Preparare una linea di base SDK riproducibile

Crea il pacchetto dell'artefatto SDK approvato attraverso il processo di download controllato dallo sviluppatore. Registra la sua versione e SHA-256 insieme alla build dell'applicazione e al record del dispositivo.

Mantieni le API del fornitore dietro un adattatore per scanner in modo che la logica aziendale possa essere testata unitariamente senza hardware e sia possibile sostituire un'altra implementazione di acquisizione.

  • Solo sorgente SDK approvata
  • Hash degli artefatti registrato
  • Confine dell'adattatore definito
  • Matrice del dispositivo creata
02

Gestisci il ciclo di vita dello scanner una volta

I documenti di riferimento API openScanner, closeScanner, startDecode, stopDecode e le funzioni della modalità di output. Decidi se tali chiamate sono di proprietà dell'attività, di un servizio in primo piano o di un altro componente con ambito applicativo.

Evitare che più schermi aprano lo scanner in modo indipendente. Rendi sicuro l'arresto e la chiusura per ripetere e far emergere i valori restituiti non riusciti in stato diagnostico senza registrare i payload dei codici a barre.

  • Proprietario unico della risorsa
  • Pulizia idempotente
  • Valori restituiti osservati
  • Nessun carico utile nei registri ordinari
03

Convalidare il payload della trasmissione

Una trasmissione di decodifica riuscita può includere dati grezzi, una stringa decodificata, lunghezza e tipo di codice a barre. Controlla l'azione, l'idoneità ai valori nulla e la lunghezza prima di consegnare un evento del dominio.

Scegli una rappresentazione autorevole. Se la codifica è importante, preserva i byte grezzi e decodifica con un set di caratteri esplicito invece di presumere che ogni codice a barre sia un semplice ASCII.

  • L'azione corrisponde esattamente
  • Lunghezza compatibile con il carico utile
  • Politica di codifica documentata
  • Protezione eventi duplicata
04

Passare dalla dimostrazione alla prova di produzione

Il successo della compilazione dimostra solo la compatibilità del codice sorgente. Esegui l'applicazione su ciascun modello, sistema operativo e firmware previsto con etichette rappresentative e scenari del ciclo di vita.

Registrare le impostazioni dello scanner e la modalità di output dopo la configurazione. Test di regressione dopo modifiche del firmware, SDK, dell'applicazione o della policy MDM.

  • Corpus di scansione rappresentativo
  • Dormire e riprendere i cicli
  • Casi rapidi e con codice lungo
  • Record di test con versione
Matrice decisionale

Mappa dello stato del ciclo di vita di ScanManager

Mantieni le chiamate alle risorse allineate allo stato osservabile dell'applicazione.

StatoAzione richiestaRisposta al fallimento
InizioCrea ScanManager e apri lo scannerBlocca l'acquisizione e mostra lo stato diagnostico
ProntoImposta la modalità di uscita e registra il ricevitoreRileggere o segnalare un errore di configurazione
CatturareAvvia la decodifica o accetta eventi di attivazioneTimeout, interruzione e consenti tentativi controllati
In pausaInterrompi la decodifica e annulla la registrazione come previstoImpedisci la consegna a un flusso di lavoro inattivo
DistruttoChiudere lo scanner una voltaRegistra il risultato della pulizia senza dati sensibili
SDK

Esempio Kotlin minimo con riconoscimento del ciclo di vita

Verifica le costanti della modalità di output, i flag del ricevitore Android e la proprietà del ciclo di vita rispetto all'esatto SDK, al target API e all'architettura dell'applicazione.

UrovoScannerActivity.kt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.device.ScanManager
import androidx.appcompat.app.AppCompatActivity

class UrovoScannerActivity : AppCompatActivity() {
    private val scanner = ScanManager()
    private var receiverRegistered = false

    private val decodeReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action != ScanManager.ACTION_DECODE) return
            val raw = intent.getByteArrayExtra(ScanManager.DECODE_DATA_TAG) ?: return
            val declaredLength = intent.getIntExtra(ScanManager.BARCODE_LENGTH_TAG, raw.size)
            val type = intent.getByteExtra(ScanManager.BARCODE_TYPE_TAG, 0)
            val value = intent.getStringExtra(ScanManager.BARCODE_STRING_TAG)
                ?: raw.copyOf(declaredLength.coerceIn(0, raw.size)).toString(Charsets.UTF_8)
            onValidatedScan(value, type)
        }
    }

    override fun onStart() {
        super.onStart()
        check(scanner.openScanner()) { "Scanner could not be opened" }
        // Confirm the broadcast-output constant in the SDK version you ship.
        check(scanner.switchOutputMode(0)) { "Output mode could not be set" }
        registerReceiver(decodeReceiver, IntentFilter(ScanManager.ACTION_DECODE))
        receiverRegistered = true
    }

    override fun onStop() {
        scanner.stopDecode()
        if (receiverRegistered) unregisterReceiver(decodeReceiver)
        receiverRegistered = false
        scanner.closeScanner()
        super.onStop()
    }

    private fun onValidatedScan(value: String, type: Byte) {
        // Route a sanitized domain event; do not log sensitive barcode values.
    }
}
Lista di controllo del progetto

Elenco di controllo di convalida di ScanManager

Allega questo record all'applicazione approvata e alla baseline del dispositivo.

  1. 01

    Versione SDK e SHA-256 registrati

  2. 02

    Dispositivo SKU, sistema operativo e firmware registrati

  3. 03

    Lo scanner si apre e si chiude ripetutamente

  4. 04

    Modalità di uscita letta o confermata

  5. 05

    Il ciclo di vita del ricevitore corrisponde all'interfaccia utente attiva

  6. 06

    Raw, stringa, lunghezza e tipo extra controllati

  7. 07

    Tutte le simbologie richieste sono state testate

  8. 08

    Scansioni lunghe, danneggiate e rapide testate

  9. 09

    Testata la modalità sospensione, riavvio e MDM kiosk

  10. 10

    Nessun dato sensibile del codice a barre registrato

FAQ

Domande frequenti

Cosa significa switchOutputMode(0)?

Il riferimento API documenta il cambio della modalità di output, ma le costanti e il comportamento devono essere controllati nell'esatto rilascio SDK e nel firmware del dispositivo. Non copiare la costante del campione nella produzione senza verifica.

Lo scanner deve chiudersi in onPause o onStop?

Scegli la proprietà del ciclo di vita in base all'architettura dell'applicazione e se la scansione può continuare anche quando parzialmente oscurata. Il requisito importante è un proprietario, una pulizia deterministica e un comportamento testato.

Questo campione può essere utilizzato su ogni dispositivo UROVO ?

No. È un progetto di convalida basato su ScanManager v4.1.0326. Compilalo ed eseguilo su ciascun modello, sistema operativo e firmware previsto prima del rilascio.

Prove e limiti

SDK-campione supportato da riferimenti/non convalidato su ogni configurazione di destinazione

Il codice è illustrativo e richiama deliberatamente le costanti specifiche della versione e la policy del ricevitore Android per la verifica.

Recensito: 2026-08-10

Registro di origine
  • UROVO Android SDK v4.1.0326 Riferimento ScanManager API
  • UROVO Progetto di esempio ScanManager nell'esportazione SDK approvata
  • Documentazione sul ciclo di vita dell'applicazione Android e del ricevitore di trasmissione

Trasforma questa guida in una decisione progettuale

Richiedi la convalida della domanda

Condividi il modello, il firmware, la linea di base SDK e il flusso di lavoro di scansione. RuggedLayer analizzerà un piano di convalida del dispositivo riproducibile.

Richiedi la convalida della domanda