เครื่องมือสแกนโค้ดของ Google (Android เท่านั้น)

Google Code Scanner API เป็นโซลูชันที่สมบูรณ์แบบสำหรับการสแกนโค้ดโดยไม่ต้องให้แอปขอสิทธิ์เข้าถึงกล้อง ขณะเดียวกันก็รักษาความเป็นส่วนตัวของผู้ใช้ ซึ่งทำได้โดยการมอบสิทธิ์งานสแกนโค้ดให้กับบริการ Google Play และแสดงเฉพาะผลการสแกนกลับไปยังแอปของคุณ (วิดีโอ 1) การประมวลผลรูปภาพทั้งหมดเกิดขึ้นในอุปกรณ์ และ Google จะไม่จัดเก็บผลลัพธ์หรือข้อมูลรูปภาพ API นี้รองรับรูปแบบโค้ดเดียวกับ ML Kit Barcode Scanning API และแสดงผลออบเจ็กต์ Barcode เดียวกัน

API นี้เหมาะสำหรับแอปที่ต้องการการสแกนโค้ดที่ราบรื่นโดยไม่ต้องใช้ UI ที่กำหนดเองหรือประสบการณ์การใช้งานกล้อง การติดตั้งใช้งานจะอยู่ในบริการ Google Play ทั้งหมด จึงมั่นใจได้ว่าจะมีผลกระทบต่อขนาดของแอปน้อยที่สุด

ตั้งแต่เวอร์ชัน 16.1.0 เป็นต้นไป คุณสามารถเปิดใช้การซูมอัตโนมัติเพื่อให้เครื่องมือสแกนโค้ดของ Google สแกนบาร์โค้ดที่อยู่ห่างจากกล้องโดยอัตโนมัติได้ เมื่อผู้ใช้เล็งอุปกรณ์ไปที่บาร์โค้ด เครื่องสแกนจะตรวจจับและซูมเข้าที่บาร์โค้ดอย่างชาญฉลาด ซึ่งจะช่วยลดความจำเป็นในการปรับการซูมด้วยตนเอง ทำให้การสแกนบาร์โค้ดรวดเร็ว แม่นยำ และเข้าถึงได้มากขึ้น (ดูวิดีโอที่ 2)

วิดีโอ 1 การผสานรวมเครื่องมือสแกนโค้ดของ Google วิดีโอ 2 เอฟเฟกต์ซูมอัตโนมัติ

สำหรับกรณีการใช้งานที่ซับซ้อนมากขึ้นซึ่งต้องใช้ UI ที่กำหนดเอง เราขอแนะนำให้ใช้ ML Kit Barcode Scanning API โดยตรง

หากมีคำถาม ต้องการส่งข้อบกพร่อง หรือต้องการความช่วยเหลือ โปรดไปที่หน้าชุมชน ML Kit

ก่อนเริ่มต้น

หากต้องการเตรียมแอป ให้ทำตามขั้นตอนในส่วนต่อไปนี้

กำหนดค่าแอป

  1. ในไฟล์ settings.gradle ระดับบนสุด ให้ใส่ที่เก็บ Maven ของ Google และที่เก็บส่วนกลางของ Maven ไว้ในบล็อก dependencyResolutionManagement ดังนี้

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. เพิ่มทรัพยากร Dependency ของบริการ Google Play สำหรับ play-services-code-scanner SDK ลงในไฟล์บิลด์ Gradle ของโมดูล ซึ่งโดยทั่วไปคือ app/build.gradle

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. คุณสามารถกำหนดค่าแอปให้มีบริการ Google Play โดยอัตโนมัติได้ ดาวน์โหลดโมดูลเครื่องสแกนไปยังอุปกรณ์ขณะติดตั้งแอปจาก Play Store

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    นอกจากนี้ คุณยังตรวจสอบความพร้อมใช้งานของโมดูลเครื่องสแกนและขอให้ดาวน์โหลดผ่าน ModuleInstallClient API ของบริการ Google Play ได้อย่างชัดเจน

    หากคุณไม่ได้เปิดใช้การดาวน์โหลดโมดูลขณะติดตั้งหรือขอการดาวน์โหลดอย่างชัดแจ้ง และยังไม่ได้ติดตั้งโมดูลเครื่องสแกนสำหรับ Use Case อื่น บริการ Google Play จะดาวน์โหลดโมดูลเครื่องสแกนเมื่อมีการใช้งานครั้งแรก

สแกนโค้ด

ทำตามขั้นตอนต่อไปนี้เพื่อสแกนบาร์โค้ด

  1. ไม่บังคับ: กำหนดค่าเครื่องสแกนโค้ด

    หากทราบรูปแบบบาร์โค้ดที่ต้องการอ่าน คุณสามารถเพิ่มความเร็วของเครื่องมือตรวจจับบาร์โค้ดได้โดยกำหนดค่าให้ตรวจจับเฉพาะรูปแบบเหล่านั้น เช่น หากต้องการตรวจหาเฉพาะโค้ด Aztec และคิวอาร์โค้ด ให้สร้างออบเจ็กต์ GmsBarcodeScannerOptions ดังตัวอย่างต่อไปนี้

    Kotlin

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build()

    Java

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build();

    โดยค่าเริ่มต้น ระบบจะปิดการซูมอัตโนมัติ หากต้องการเปิดใช้ฟังก์ชันการซูมอัตโนมัติตั้งแต่เวอร์ชัน 16.1.0 ให้เรียกใช้ enableAutoZoom() ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้

    Kotlin

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build()

    Java

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build();
  2. รับอินสแตนซ์ของ GmsBarcodeScanner ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้

    Kotlin

    val scanner = GmsBarcodeScanning.getClient(this)
    // Or with a configured options
    // val scanner = GmsBarcodeScanning.getClient(this, options)

    Java

    GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);
    // Or with a configured options
    // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
  3. ขอให้สแกนโค้ดโดยโทรไปที่ startScan()

    Kotlin

    scanner.startScan()
       .addOnSuccessListener { barcode ->
           // Task completed successfully
       }
       .addOnCanceledListener {
           // Task canceled
       }
       .addOnFailureListener { e ->
           // Task failed with an exception
       }

    Java

    scanner
       .startScan()
       .addOnSuccessListener(
           barcode -> {
             // Task completed successfully
           })
       .addOnCanceledListener(
           () -> {
             // Task canceled
           })
       .addOnFailureListener(
           e -> {
             // Task failed with an exception
           });
  4. จัดการ Barcode ที่ได้

    Kotlin

    val rawValue: String? = barcode.rawValue

    Java

    String rawValue = barcode.getRawValue();