เครื่องมือสแกนโค้ดของ 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 เอฟเฟกต์การซูมอัตโนมัติ

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

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

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

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

กำหนดค่าแอป

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

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. เพิ่มทรัพยากร Dependency ของบริการ Google Play สำหรับ SDK play-services-code-scanner ไปยังไฟล์บิลด์ 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>
    

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

    หากคุณไม่เปิดใช้การดาวน์โหลดโมดูลเวลาติดตั้งหรือขอการดาวน์โหลดที่ชัดเจน และยังไม่ได้ติดตั้งโมดูลเครื่องสแกนสำหรับ 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();