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
ก่อนเริ่มต้น
หากต้องการเตรียมแอป ให้ทำตามขั้นตอนในส่วนต่อไปนี้
กำหนดค่าแอป
ในไฟล์
settings.gradle
ระดับบนสุด ให้ใส่ที่เก็บ Maven ของ Google และที่เก็บส่วนกลาง Maven ไว้ในบล็อกdependencyResolutionManagement
dependencyResolutionManagement { repositories { google() mavenCentral() } }
เพิ่มทรัพยากร 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' }
คุณสามารถกำหนดค่าแอปเพื่อให้บริการ 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 จะดาวน์โหลดโมดูลเครื่องสแกนในครั้งแรกที่ใช้งาน
สแกนโค้ด
ทำตามขั้นตอนต่อไปนี้เพื่อสแกนบาร์โค้ด
ไม่บังคับ: กำหนดค่าเครื่องมือสแกนโค้ด
หากคุณทราบว่าต้องการอ่านรูปแบบบาร์โค้ดใด คุณสามารถเพิ่มความเร็วของเครื่องตรวจจับบาร์โค้ดได้โดยกำหนดค่าให้ตรวจจับเฉพาะรูปแบบเหล่านั้น ตัวอย่างเช่น หากต้องการตรวจหาเฉพาะโค้ด 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();
รับอินสแตนซ์ของ
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);
ขอสแกนรหัสโดยโทรไปที่
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 });
จัดการผลลัพธ์
Barcode
Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();