UROVO Android SDK/Kotlin

UROVO ScanManager Kotlin 예시 및 유효성 검사 체크리스트

이 구현 청사진은 승인된 UROVO ScanManager API 를 작은 Kotlin 활동 예시에 적용합니다. 모든 UROVO 모델 또는 펌웨어와의 호환성을 약속하는 것이 아니라 검증을 위한 샘플 코드입니다.

16 분 읽음검토됨: 2026-08-10Android 개발자가 UROVO 바코드 하드웨어를 통합하고 있습니다.
UROVO Android ScanManager 통합을 위한 DT66 기능 보기
SDK-참조 지원 샘플/모든 대상 구성에서 검증되지 않음

검증된 출발점

API 기준UROVO Android SDK v4.1.0326

승인된 패키지를 사용하고 아티팩트 체크섬을 기록합니다.

디코드 채널ScanManager.ACTION_DECODE 브로드캐스트

문서화된 데이터, 문자열, 길이 및 추가 항목을 읽습니다.

수명주기열고 등록하세요. 중지, 등록 취소 및 닫기

소유권을 애플리케이션 아키텍처와 일치시킵니다.

호환성정확한 장치 + OS + 펌웨어 + SDK + 앱 빌드

API 존재만으로는 유효성 검사가 통과되지 않습니다.

시행규칙

ScanManager 를 명시적인 소유자가 있는 하드웨어 리소스로 취급합니다. 이를 열고 원하는 출력 모드를 선택하고 디코드 수신기를 등록하고 모든 페이로드의 유효성을 검사한 다음 결정적으로 등록을 취소하고 닫습니다. 생산 의도 샘플에서 분석법 동작을 확인합니다.

01

재현 가능한 SDK 기준선 준비

통제된 개발자 다운로드 프로세스를 통해 승인된 SDK 아티팩트를 패키징합니다. 애플리케이션 빌드 및 장치 기록과 함께 해당 버전과 SHA-256 을 기록합니다.

스캐너 어댑터 뒤에 공급업체 API를 유지하면 하드웨어 없이 비즈니스 논리를 단위 테스트할 수 있고 다른 캡처 구현을 대체할 수 있습니다.

  • 승인된 SDK 소스만
  • 아티팩트 해시가 기록되었습니다.
  • 어댑터 경계가 정의됨
  • 장치 매트릭스가 생성되었습니다.
02

스캐너 수명주기를 한 번 소유하십시오.

API 참조 문서는 openScanner, closeScanner, startDecode, stopDecode 및 출력 모드 함수입니다. 활동, 포그라운드 서비스 또는 다른 애플리케이션 범위 구성 요소가 해당 호출을 소유하는지 결정합니다.

여러 화면에서 스캐너를 독립적으로 열지 마십시오. 바코드 페이로드를 기록하지 않고 진단 상태에서 정지 및 닫기를 안전하게 반복하고 실패한 반환 값을 표시합니다.

  • 단일 리소스 소유자
  • 멱등성 정리
  • 관찰된 반환 값
  • 일반 로그에는 페이로드가 없습니다.
03

브로드캐스트 페이로드 검증

성공적인 디코딩 브로드캐스트에는 원시 데이터, 디코딩된 문자열, 길이 및 바코드 유형이 포함될 수 있습니다. 도메인 이벤트를 전달하기 전에 작업, null 허용 여부 및 길이를 확인하세요.

권위 있는 표현을 하나 선택하세요. 인코딩이 중요한 경우 모든 바코드가 단순한 ASCII라고 가정하는 대신 원시 바이트를 보존하고 명시적인 문자 세트로 디코딩하십시오.

  • 작업이 정확히 일치함
  • 페이로드와 일치하는 길이
  • 인코딩 정책 문서화
  • 중복된 이벤트 가드
04

데모에서 프로덕션 증거로 이동

컴파일 성공은 소스 호환성만을 증명합니다. 대표적인 레이블 및 수명주기 시나리오를 사용하여 각 의도된 모델, OS 및 펌웨어에서 애플리케이션을 실행합니다.

구성 후 스캐너 설정과 출력 모드를 기록합니다. 펌웨어, SDK, 애플리케이션 또는 MDM 정책 변경 후 회귀 테스트입니다.

  • 대표 스캔 코퍼스
  • 수면 및 재개 주기
  • 신속하고 긴 코드 케이스
  • 버전이 지정된 테스트 기록
결정 매트릭스

ScanManager 수명주기 상태 맵

관찰 가능한 애플리케이션 상태에 맞게 리소스 호출을 유지합니다.

상태필수 조치실패 대응
시작ScanManager 생성 및 스캐너 열기블록 캡처 및 진단 상태 표시
준비출력 모드 설정 및 수신기 등록다시 읽기 또는 구성 실패 보고
캡처디코드 시작 또는 트리거 이벤트 수락시간 초과, 중지 및 제어된 재시도 허용
일시중지됨디코드를 중지하고 설계된 대로 등록을 취소합니다.비활성 워크플로로의 전달 방지
파괴됨스캐너를 한 번 닫습니다민감한 데이터 없이 정리 결과 기록
SDK

최소 수명 주기 인식 Kotlin 예시

정확한 SDK, 대상 API 및 애플리케이션 아키텍처에 대해 출력 모드 상수, Android 수신기 플래그 및 수명 주기 소유권을 확인합니다.

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.
    }
}
프로젝트 체크리스트

ScanManager 검증 체크리스트

이 기록을 승인된 애플리케이션 및 장치 기준선에 첨부하십시오.

  1. 01

    SDK 버전 및 SHA-256 이 기록되었습니다.

  2. 02

    장치 SKU, OS 및 펌웨어가 기록되었습니다.

  3. 03

    스캐너가 반복적으로 열리고 닫힙니다.

  4. 04

    출력 모드 읽기 또는 확인

  5. 05

    수신기 수명주기가 활성 UI와 일치합니다.

  6. 06

    원시, 문자열, 길이 및 유형 추가 확인

  7. 07

    모든 필수 기호가 테스트되었습니다.

  8. 08

    길고 손상되었으며 빠른 스캔 테스트

  9. 09

    절전, 재부팅 및 MDM 키오스크 모드 테스트됨

  10. 10

    민감한 바코드 데이터가 기록되지 않음

FAQ

자주 묻는 질문

switchOutputMode(0)는 무엇을 의미합니까?

API 는 출력 모드 전환을 참조하지만, 정확한 SDK 릴리스 및 장치 펌웨어에서 상수와 동작을 확인해야 합니다. 검증 없이 샘플 상수를 프로덕션에 복사하지 마십시오.

onPause 또는 onStop에서 스캐너를 닫아야 합니까?

애플리케이션 아키텍처와 부분적으로 가려졌을 때 스캔을 계속할 수 있는지 여부를 기반으로 수명 주기 소유권을 선택합니다. 중요한 요구 사항은 단일 소유자, 결정적 정리 및 테스트된 동작입니다.

이 샘플을 모든 UROVO 장치에서 사용할 수 있나요?

아니요. ScanManager v4.1.0326를 기반으로 한 검증 청사진입니다. 출시 전에 원하는 각 모델, OS 및 펌웨어에서 컴파일하고 실행하세요.

증거와 한계

SDK-참조 지원 샘플/모든 대상 구성에서 검증되지 않음

코드는 설명을 위한 것이며 확인을 위해 버전별 상수와 Android 수신자 정책을 의도적으로 호출합니다.

검토됨: 2026-08-10

소스 레지스터
  • UROVO Android SDK v4.1.0326 ScanManager API 참조
  • UROVO 승인된 SDK 내보내기의 ScanManager 샘플 프로젝트
  • Android 애플리케이션 및 브로드캐스트 수신기 수명 주기 문서

이 가이드를 프로젝트 결정으로 활용하세요

애플리케이션 검증 요청

모델, 펌웨어, SDK 기준선 및 스캔 워크플로를 공유합니다. RuggedLayer은 재현 가능한 장치 검증 계획의 범위를 지정합니다.

애플리케이션 검증 요청