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

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