UROVO Android SDK/Kotlin

Ví dụ về UROVO ScanManager Kotlin và danh sách kiểm tra xác thực

Kế hoạch triển khai này điều chỉnh UROVO ScanManager API đã được phê duyệt thành một ví dụ hoạt động Kotlin nhỏ. Đây là mã mẫu để xác thực, không phải là lời hứa về khả năng tương thích với mọi kiểu máy hoặc chương trình cơ sở UROVO.

16 phút đọcĐã đánh giá: 2026-08-10Android nhà phát triển tích hợp phần cứng mã vạch UROVO
Chế độ xem tính năng UROVO DT66 dành cho tích hợp Android ScanManager
SDK mẫu dựa trên tham chiếu/không được xác thực trên mọi cấu hình mục tiêu

Điểm xuất phát đã được xác minh

API đường cơ sởUROVO Android SDK v4.1.0326

Sử dụng gói đã được phê duyệt và ghi lại tổng kiểm tra giả.

Kênh giải mãPhát sóng ScanManager.ACTION_DECODE

Đọc dữ liệu tài liệu, chuỗi, độ dài và kiểu bổ sung.

Vòng đờiMở và đăng ký; dừng lại, hủy đăng ký và đóng

Kết hợp quyền sở hữu với kiến trúc ứng dụng.

Khả năng tương thíchThiết bị chính xác + hệ điều hành + chương trình cơ sở + SDK + bản dựng ứng dụng

Chỉ sự hiện diện của API thì chưa đủ để xác thực.

Quy tắc thực hiện

Hãy coi ScanManager như một tài nguyên phần cứng có chủ sở hữu rõ ràng. Mở nó, chọn chế độ đầu ra dự định, đăng ký bộ thu giải mã, xác thực mọi tải trọng, sau đó hủy đăng ký và đóng một cách xác định. Xác nhận hành vi của phương pháp trên mẫu mục đích sản xuất.

01

Chuẩn bị đường cơ sở SDK có thể tái tạo

Đóng gói cấu phần phần mềm SDK đã được phê duyệt thông qua quy trình tải xuống do nhà phát triển kiểm soát. Ghi lại phiên bản của nó và SHA-256 cùng với bản ghi thiết bị và bản dựng ứng dụng.

Giữ API của nhà cung cấp phía sau bộ điều hợp máy quét để logic nghiệp vụ có thể được kiểm tra đơn vị mà không cần phần cứng và có thể thay thế việc triển khai chụp khác.

  • Chỉ nguồn SDK được phê duyệt
  • Hàm băm tạo tác đã được ghi lại
  • Đã xác định ranh giới bộ chuyển đổi
  • Đã tạo ma trận thiết bị
02

Sở hữu vòng đời máy quét một lần

Tài liệu tham khảo API openScanner, closeScanner, startDecode, stopDecode và các chức năng chế độ đầu ra. Quyết định xem hoạt động, dịch vụ trên nền trước hay thành phần khác trong phạm vi ứng dụng có sở hữu các lệnh gọi đó hay không.

Tránh nhiều màn hình mở máy quét độc lập. Thực hiện dừng và đóng an toàn để lặp lại và hiển thị các giá trị trả về không thành công ở trạng thái chẩn đoán mà không cần ghi lại tải trọng mã vạch.

  • Chủ sở hữu tài nguyên duy nhất
  • Dọn dẹp bình thường
  • Giá trị trả về được quan sát
  • Không có tải trọng trong nhật ký thông thường
03

Xác thực tải trọng phát sóng

Một chương trình phát sóng giải mã thành công có thể bao gồm dữ liệu thô, chuỗi được giải mã, độ dài và loại mã vạch. Kiểm tra hành động, tính vô hiệu và độ dài trước khi phân phối sự kiện miền.

Chọn một đại diện có thẩm quyền. Nếu việc mã hóa có vấn đề, hãy giữ nguyên byte thô và giải mã theo bộ ký tự rõ ràng thay vì giả sử mọi mã vạch đều là ASCII đơn giản.

  • Hành động khớp chính xác
  • Độ dài phù hợp với tải trọng
  • Chính sách mã hóa được ghi lại
  • Bảo vệ sự kiện trùng lặp
04

Chuyển từ bản demo sang bằng chứng sản xuất

Biên dịch thành công chỉ chứng tỏ khả năng tương thích nguồn. Chạy ứng dụng trên từng kiểu máy, hệ điều hành và chương trình cơ sở dự kiến ​​với các nhãn đại diện và các kịch bản vòng đời.

Ghi lại cài đặt máy quét và chế độ đầu ra sau khi cấu hình. Kiểm tra hồi quy sau khi thay đổi chính sách chương trình cơ sở, SDK, ứng dụng hoặc MDM.

  • Quét đại diện
  • Chu kỳ ngủ và tiếp tục
  • Các trường hợp mã nhanh và dài
  • Bản ghi kiểm tra đã được phiên bản
Ma trận quyết định

Bản đồ trạng thái vòng đời của ScanManager

Giữ các cuộc gọi tài nguyên được căn chỉnh với trạng thái ứng dụng có thể quan sát được.

tiểu bangHành động bắt buộcPhản hồi thất bại
Bắt đầuTạo ScanManager và mở máy quétChặn chụp và hiển thị trạng thái chẩn đoán
Sẵn sàngĐặt chế độ đầu ra và đăng ký máy thuĐọc lại hoặc báo cáo lỗi cấu hình
chụpBắt đầu giải mã hoặc chấp nhận các sự kiện kích hoạtHết thời gian, dừng và cho phép thử lại có kiểm soát
Đã tạm dừngDừng giải mã và hủy đăng ký như thiết kếNgăn chặn phân phối đến quy trình làm việc không hoạt động
bị phá hủyĐóng máy quét một lầnGhi lại kết quả dọn dẹp mà không có dữ liệu nhạy cảm
SDK

Ví dụ về nhận biết vòng đời tối thiểu Kotlin

Xác minh các hằng số chế độ đầu ra, cờ nhận Android và quyền sở hữu vòng đời đối với SDK chính xác, API chính xác và kiến trúc ứng dụng.

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.
    }
}
Danh sách kiểm tra dự án

Danh sách kiểm tra xác thực ScanManager

Đính kèm bản ghi này vào đường cơ sở của ứng dụng và thiết bị đã được phê duyệt.

  1. 01

    Phiên bản SDK và SHA-256 đã được ghi lại

  2. 02

    Thiết bị SKU, hệ điều hành và chương trình cơ sở đã được ghi lại

  3. 03

    Máy quét mở và đóng liên tục

  4. 04

    Đã đọc hoặc xác nhận chế độ đầu ra

  5. 05

    Vòng đời của bộ thu khớp với giao diện người dùng đang hoạt động

  6. 06

    Đã kiểm tra các phần bổ sung thô, chuỗi, độ dài và loại

  7. 07

    Đã kiểm tra tất cả các ký hiệu cần thiết

  8. 08

    Đã thử nghiệm quét lâu, bị hư hỏng và nhanh chóng

  9. 09

    Đã kiểm tra chế độ ngủ, khởi động lại và MDM

  10. 10

    Không có dữ liệu mã vạch nhạy cảm được ghi lại

FAQ

Câu hỏi thường gặp

switchOutputMode(0) nghĩa là gì?

Tham chiếu API ghi lại việc chuyển đổi chế độ đầu ra, nhưng các hằng số và hành vi phải được kiểm tra trong bản phát hành SDK chính xác và chương trình cơ sở của thiết bị. Không sao chép hằng số mẫu vào sản xuất mà không xác minh.

Máy quét nên đóng onPause hay onStop?

Chọn quyền sở hữu vòng đời dựa trên kiến trúc ứng dụng và liệu quá trình quét có thể tiếp tục khi bị che khuất một phần hay không. Yêu cầu quan trọng là một chủ sở hữu, việc dọn dẹp mang tính quyết định và hành vi đã được kiểm tra.

Mẫu này có thể được sử dụng trên mọi thiết bị UROVO không?

Không. Đây là bản thiết kế xác thực dựa trên ScanManager v4.1.0326. Biên dịch và chạy nó trên từng kiểu máy, hệ điều hành và chương trình cơ sở dự định trước khi phát hành.

Bằng chứng và hạn chế

SDK mẫu dựa trên tham chiếu/không được xác thực trên mọi cấu hình mục tiêu

Mã này mang tính minh họa và cố tình gọi ra các hằng số dành riêng cho phiên bản và chính sách bộ thu Android để xác minh.

Đã đánh giá: 2026-08-10

Đăng ký nguồn
  • Tài liệu tham chiếu API ScanManager của UROVO Android SDK v4.1.0326
  • UROVO Dự án mẫu ScanManager đang được xuất SDK đã được phê duyệt
  • Android tài liệu về vòng đời của ứng dụng và bộ thu phát sóng

Biến hướng dẫn này thành quyết định dự án

Yêu cầu xác thực ứng dụng

Chia sẻ mô hình, chương trình cơ sở, đường cơ sở SDK và quy trình quét. RuggedLayer sẽ lập kế hoạch xác thực thiết bị có thể tái tạo.

Yêu cầu xác thực ứng dụng