UROVO Android SDK/Kotlin

UROVO ScanManager Kotlin przykład i lista kontrolna walidacji

Ten plan implementacji dostosowuje zatwierdzony UROVO ScanManager API do małego przykładu działania Kotlin. Jest to przykładowy kod do sprawdzenia, a nie obietnica zgodności z każdym modelem lub oprogramowaniem sprzętowym UROVO.

16 min odczytuRecenzję: 2026-08-10Android programiści integrujący sprzęt do kodów kreskowych UROVO
UROVO DT66 widok funkcji dla Android integracja ScanManager
SDK – próbka oparta na referencjach/nie została sprawdzona w każdej konfiguracji docelowej

Sprawdzone punkty wyjścia

API wartość bazowaUROVO Android SDK v4.1.0326

Użyj zatwierdzonego pakietu i zapisz sumę kontrolną artefaktu.

Odkoduj kanałTransmisja ScanManager.ACTION_DECODE

Przeczytaj udokumentowane dane, ciąg znaków, długość i dodatki typu.

Cykl życiaOtwórz i zarejestruj się; zatrzymaj się, wyrejestruj i zamknij

Dopasuj własność do architektury aplikacji.

KompatybilnośćDokładne urządzenie + system operacyjny + oprogramowanie sprzętowe + SDK + kompilacja aplikacji

Sama obecność API nie oznacza pozytywnej weryfikacji.

Zasada wdrożenia

Traktuj ScanManager jako zasób sprzętowy mający wyraźnego właściciela. Otwórz go, wybierz zamierzony tryb wyjściowy, zarejestruj odbiornik dekodowania, zweryfikuj każdy ładunek, a następnie wyrejestruj i zamknij deterministycznie. Potwierdź zachowanie metody na próbce przeznaczonej do produkcji.

01

Przygotuj powtarzalną SDK linię bazową

Spakuj zatwierdzony artefakt SDK w ramach kontrolowanego procesu pobierania przez programistę. Zapisz jego wersję i SHA-256 wraz z kompilacją aplikacji i rekordem urządzenia.

Zachowaj interfejsy API dostawcy za adapterem skanera, aby można było testować logikę biznesową bez sprzętu i zastąpić inną implementację przechwytywania.

  • Tylko zatwierdzone źródło SDK.
  • Zarejestrowano skrót artefaktu
  • Zdefiniowano granicę adaptera
  • Utworzono matrycę urządzeń
02

Posiadaj raz cykl życia skanera

Referencja API dokumentuje funkcje openScanner, CloseScanner, startDecode, stopDecode i funkcje trybu wyjściowego. Zdecyduj, czy działanie, usługa na pierwszym planie lub inny komponent o zasięgu aplikacji jest właścicielem tych wywołań.

Unikaj niezależnego otwierania skanera na wielu ekranach. Zapewnij bezpieczne powtarzanie wartości zatrzymania i zamknięcia oraz wynurzanie wartości zwracanych w stanie diagnostycznym bez rejestrowania ładunków z kodem kreskowym.

  • Pojedynczy właściciel zasobu
  • Idempotentne czyszczenie
  • Zaobserwowane wartości zwracane
  • Brak ładunków w zwykłych dziennikach
03

Sprawdź ładunek rozgłoszeniowy

Pomyślna transmisja dekodowania może obejmować nieprzetworzone dane, zdekodowany ciąg znaków, długość i typ kodu kreskowego. Przed dostarczeniem zdarzenia domeny sprawdź działanie, dopuszczalność wartości null i długość.

Wybierz jedną wiarygodną reprezentację. Jeśli kodowanie ma znaczenie, zachowaj surowe bajty i dekoduj przy użyciu jawnego zestawu znaków, zamiast zakładać, że każdy kod kreskowy jest prostym kodem ASCII.

  • Akcja dokładnie pasuje
  • Długość zgodna z ładownością
  • Udokumentowana polityka kodowania
  • Zduplikowany strażnik zdarzeń
04

Przejdź od wersji demonstracyjnej do dowodów produkcyjnych

Sukces kompilacji dowodzi jedynie zgodności źródła. Uruchom aplikację na każdym zamierzonym modelu, systemie operacyjnym i oprogramowaniu sprzętowym, korzystając z reprezentatywnych etykiet i scenariuszy cyklu życia.

Zapisz ustawienia skanera i tryb wyjściowy po konfiguracji. Test regresji po zmianach oprogramowania sprzętowego, SDK, aplikacji lub MDM zasad.

  • Reprezentatywny korpus skanów
  • Uśpij i wznów cykle
  • Przypadki szybkiego i długiego kodu
  • Wersjonowany zapis testu
Macierz decyzyjna

Mapa stanu cyklu życia programu ScanManager

Utrzymuj wywołania zasobów dostosowane do obserwowalnego stanu aplikacji.

StanWymagane działanieReakcja na awarię
RozpoczęcieUtwórz ScanManager i otwórz skanerZablokuj przechwytywanie i pokaż stan diagnostyczny
GotowyUstaw tryb wyjścia i zarejestruj odbiorcęPrzeczytaj ponownie lub zgłoś błąd konfiguracji
PrzechwytywanieRozpocznij dekodowanie lub zaakceptuj zdarzenia wyzwalającePrzekrocz limit czasu, zatrzymaj i zezwól na kontrolowaną ponowną próbę
WstrzymanoZatrzymaj dekodowanie i wyrejestruj się zgodnie z przeznaczeniemZapobiegaj dostarczaniu do nieaktywnego przepływu pracy
ZniszczonyZamknij skaner razZapisz wynik czyszczenia bez wrażliwych danych
SDK

Przykład uwzględniający minimalny cykl życia Kotlin.

Sprawdź stałe trybu wyjściowego, Android flagi odbiornika i własność cyklu życia pod kątem dokładnej SDK, docelowej API i architektury aplikacji.

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 kontrolna projektu

Lista kontrolna sprawdzania poprawności programu ScanManager

Dołącz ten rekord do zatwierdzonej aplikacji i linii bazowej urządzenia.

  1. 01

    Zarejestrowano wersję SDK i SHA-256

  2. 02

    Zapisano urządzenie SKU, system operacyjny i oprogramowanie sprzętowe

  3. 03

    Skaner wielokrotnie się otwiera i zamyka

  4. 04

    Tryb wyjścia odczytany lub potwierdzony

  5. 05

    Cykl życia odbiornika odpowiada aktywnemu interfejsowi użytkownika

  6. 06

    Sprawdzono surowiec, sznurek, długość i dodatki typu

  7. 07

    Przetestowano wszystkie wymagane symboliki

  8. 08

    Testowano długie, uszkodzone i szybkie skany

  9. 09

    Przetestowano tryb uśpienia, ponownego uruchomienia i MDM trybu kiosku

  10. 10

    Nie zarejestrowano żadnych wrażliwych danych kodu kreskowego

FAQ

Często zadawane pytania

Co oznacza switchOutputMode(0)?

Dokument API dokumentuje przełączanie trybu wyjściowego, ale stałe i zachowanie należy sprawdzić dokładnie w wersji SDK i oprogramowaniu sprzętowym urządzenia. Nie kopiuj stałej próbki do produkcji bez weryfikacji.

Czy skaner powinien zamknąć się w trybie onPause czy onStop?

Wybierz własność cyklu życia w oparciu o architekturę aplikacji i to, czy skanowanie może być kontynuowane, gdy jest częściowo zasłonięte. Ważnym wymaganiem jest jeden właściciel, deterministyczne czyszczenie i sprawdzone zachowanie.

Czy tego przykładu można używać na każdym urządzeniu UROVO ?

Nie. Jest to schemat walidacji oparty na ScanManager v4.1.0326. Skompiluj i uruchom go na każdym docelowym modelu, systemie operacyjnym i oprogramowaniu sprzętowym przed wydaniem.

Dowody i ograniczenia

SDK – próbka oparta na referencjach/nie została sprawdzona w każdej konfiguracji docelowej

Kod ma charakter ilustracyjny i celowo wywołuje stałe specyficzne dla wersji oraz politykę odbiorcy Android w celu weryfikacji.

Recenzję: 2026-08-10

Rejestr źródłowy
  • UROVO Android SDK v4.1.0326 ScanManager API odniesienie
  • UROVO Przykładowy projekt ScanManager w zatwierdzonym eksporcie SDK
  • Android dokumentacja cyklu życia aplikacji i odbiornika rozgłoszeniowego

Zamień ten przewodnik w decyzję dotyczącą projektu

Poproś o weryfikację aplikacji

Udostępnij model, oprogramowanie sprzętowe, SDK linię bazową i przebieg skanowania. RuggedLayer będzie obejmował powtarzalny plan sprawdzania poprawności urządzenia.

Poproś o weryfikację aplikacji