เครื่องมือสแกนโค้ดของ 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 Central ไว้ในบล็อก 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 ได้ด้วย

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