UROVO Android SDK/Kotlin

UROVO Ejemplo de ScanManager Kotlin y lista de verificación de validación

Este plan de implementación adapta el ScanManager API UROVO aprobado en un pequeño ejemplo de actividad Kotlin. Es un código de muestra para validación, no una promesa de compatibilidad con cada modelo o firmware de UROVO.

16 lectura mínimaRevisado: 2026-08-10Desarrolladores de Android integran hardware de códigos de barras UROVO
Vista de funciones del UROVO DT66 para integrar ScanManager en Android
SDK-muestra respaldada por referencia/no validada en cada configuración de destino

Puntos de partida verificados

API línea baseUROVO Android SDK v4.1.0326

Utilice el paquete aprobado y registre la suma de comprobación del artefacto.

Canal de decodificaciónTransmisión ScanManager.ACTION_DECODE

Lea datos documentados, cadenas, longitudes y escriba extras.

Ciclo de vidaAbrir y registrarse; detener, cancelar el registro y cerrar

Haga coincidir la propiedad con la arquitectura de la aplicación.

CompatibilidadDispositivo exacto + SO + firmware + SDK + compilación de la aplicación

La presencia de API por sí sola no es una validación aprobada.

Regla de implementación

Trate a ScanManager como un recurso de hardware con un propietario explícito. Ábralo, seleccione el modo de salida deseado, registre el receptor de decodificación, valide cada carga útil, luego cancele el registro y ciérrelo de manera determinista. Confirme el comportamiento del método en la muestra con intención de producción.

01

Prepare una línea base SDK reproducible

Empaquete el artefacto SDK aprobado a través del proceso de descarga controlado por desarrolladores. Registre su versión y SHA-256 junto con la compilación de la aplicación y el registro del dispositivo.

Mantenga las API del proveedor detrás de un adaptador de escáner para que la lógica empresarial pueda probarse unitariamente sin hardware y pueda sustituirse por otra implementación de captura.

  • Fuente SDK aprobada únicamente
  • Hash de artefacto registrado
  • Límite del adaptador definido
  • Matriz de dispositivos creada
02

Adquiera el ciclo de vida del escáner una vez

Los documentos de referencia API openScanner, closeScanner, startDecode, stopDecode y las funciones de modo de salida. Decida si la actividad, un servicio en primer plano u otro componente con ámbito de aplicación posee esas llamadas.

Evite que varias pantallas abran el escáner de forma independiente. Haga que detener y cerrar sea seguro para repetir y mostrar los valores de retorno fallidos en estado de diagnóstico sin registrar cargas útiles de códigos de barras.

  • Propietario único del recurso
  • limpieza idempotente
  • Valores de retorno observados
  • Sin cargas útiles en registros ordinarios
03

Validar la carga útil de transmisión

Una transmisión de decodificación exitosa puede incluir datos sin procesar, una cadena decodificada, longitud y tipo de código de barras. Verifique la acción, la nulidad y la duración antes de entregar un evento de dominio.

Elija una representación autorizada. Si la codificación es importante, conserve los bytes sin procesar y decodifique con un juego de caracteres explícito en lugar de asumir que cada código de barras es ASCII simple.

  • La acción coincide exactamente
  • Longitud acorde con la carga útil
  • Política de codificación documentada
  • Guardia de eventos duplicado
04

Pasar de la demostración a la evidencia de producción

El éxito de la compilación demuestra únicamente la compatibilidad de la fuente. Ejecute la aplicación en cada modelo, sistema operativo y firmware previstos con etiquetas representativas y escenarios de ciclo de vida.

Registre la configuración del escáner y el modo de salida después de la configuración. Prueba de regresión después de cambios en el firmware, SDK, aplicación o política MDM.

  • Corpus de escaneo representativo
  • Ciclos de sueño y reanudación.
  • Casos de código rápido y largo
  • Registro de prueba versionado
Matriz de decisión

Mapa de estado del ciclo de vida de ScanManager

Mantenga las llamadas de recursos alineadas con el estado observable de la aplicación.

EstadoAcción requeridaRespuesta de falla
ComenzandoCree ScanManager y abra el escánerBloquear captura y mostrar estado de diagnóstico
ListoConfigurar el modo de salida y registrar el receptorVolver a leer o informar de un error de configuración
CapturandoIniciar decodificación o aceptar eventos desencadenantesTiempo de espera, detener y permitir un reintento controlado
En pausaDetener la decodificación y cancelar el registro según lo diseñadoEvitar la entrega a un flujo de trabajo inactivo
destruidoCerrar el escáner una vezRegistre el resultado de la limpieza sin datos confidenciales
SDK

Ejemplo de ciclo de vida mínimo Kotlin

Verifique las constantes del modo de salida, los indicadores del receptor Android y la propiedad del ciclo de vida con el SDK exacto, el API objetivo y la arquitectura de la aplicación.

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 de verificación del proyecto

Lista de verificación de validación de ScanManager

Adjunte este registro a la aplicación aprobada y a la línea base del dispositivo.

  1. 01

    Versión de SDK y SHA-256 registrados

  2. 02

    Dispositivo SKU, sistema operativo y firmware registrados

  3. 03

    El escáner se abre y cierra repetidamente

  4. 04

    Modo de salida leído o confirmado

  5. 05

    El ciclo de vida del receptor coincide con la interfaz de usuario activa

  6. 06

    Extras sin procesar, cuerda, longitud y tipo marcados.

  7. 07

    Todas las simbologías requeridas probadas

  8. 08

    Escaneos largos, dañados y rápidos probados

  9. 09

    Se prueba el modo de suspensión, reinicio y MDM quiosco

  10. 10

    No se registran datos confidenciales de códigos de barras

FAQ

Preguntas frecuentes

¿Qué significa switchOutputMode(0)?

La referencia API documenta el cambio del modo de salida, pero las constantes y el comportamiento deben verificarse en la versión exacta de SDK y en el firmware del dispositivo. No copie la constante de muestra en producción sin verificación.

¿Debería cerrarse el escáner en onPause o en onStop?

Elija la propiedad del ciclo de vida según la arquitectura de la aplicación y si el escaneo puede continuar cuando esté parcialmente oculto. El requisito importante es un propietario, limpieza determinista y comportamiento probado.

¿Se puede utilizar esta muestra en todos los dispositivos UROVO ?

No. Es un modelo de validación basado en ScanManager v4.1.0326. Compílelo y ejecútelo en cada modelo, sistema operativo y firmware previsto antes del lanzamiento.

Evidencia y limitaciones

SDK-muestra respaldada por referencia/no validada en cada configuración de destino

El código es ilustrativo y deliberadamente menciona constantes específicas de la versión y la política del receptor Android para su verificación.

Revisado: 2026-08-10

Registro fuente
  • UROVO Android SDK v4.1.0326 Referencia de ScanManager API
  • UROVO Proyecto de muestra de ScanManager en exportación aprobada SDK
  • Android documentación del ciclo de vida del receptor de transmisión y aplicación

Convierta esta guía en una decisión de proyecto

Solicitar validación de solicitud

Comparta el modelo, el firmware, la línea base de SDK y el flujo de trabajo de escaneo. RuggedLayer establecerá un plan de validación de dispositivos reproducible.

Solicitar validación de solicitud