API เครื่องมือสแกนโค้ดของ Google มอบโซลูชันที่สมบูรณ์สำหรับการสแกนโค้ดโดยที่ไม่ต้องขอสิทธิ์เข้าถึงกล้อง ในขณะที่รักษาความเป็นส่วนตัวของผู้ใช้ ซึ่งทำได้ด้วยการมอบสิทธิ์งานการสแกนโค้ดให้กับบริการ Google Play และส่งคืนเฉพาะผลการสแกนไปยังแอปของคุณ (วิดีโอ 1)
การประมวลผลรูปภาพทั้งหมดจะเกิดขึ้นในอุปกรณ์และ Google ไม่ได้จัดเก็บผลลัพธ์หรือข้อมูลรูปภาพ API รองรับรูปแบบโค้ดเดียวกันกับ ML Kit BarcodeScanning API และแสดงผลออบเจ็กต์ Barcode
เดียวกัน
API นี้เหมาะสำหรับแอปที่ต้องมีการสแกนโค้ดอย่างราบรื่นโดยไม่ต้องใช้ UI ที่กำหนดเองหรือกล้องถ่ายรูป การใช้งานจะเกิดขึ้นภายในบริการ Google Play ทั้งหมด เพื่อให้ส่งผลต่อขนาดของแอปน้อยที่สุด
ตั้งแต่เวอร์ชัน 16.1.0 เป็นต้นไป คุณสามารถเปิดใช้การซูมอัตโนมัติเพื่อให้โปรแกรมสแกนโค้ดของ Google สแกนบาร์โค้ดที่อยู่ไกลจากกล้องได้โดยอัตโนมัติ เมื่อผู้ใช้ชี้อุปกรณ์ไปที่บาร์โค้ด เครื่องสแกนจะตรวจจับและซูมเข้าบาร์โค้ดอย่างชาญฉลาด ทำให้ไม่ต้องมีการปรับการซูมด้วยตนเอง ทำให้การสแกนบาร์โค้ดเร็วขึ้น แม่นยำมากขึ้น และเข้าถึงได้มากขึ้น (ดูวิดีโอ 2)
วิดีโอ 1 การผสานรวมเครื่องมือสแกนโค้ดของ Google | วิดีโอ 2 เอฟเฟกต์ซูมอัตโนมัติ |
สำหรับกรณีการใช้งานที่ซับซ้อนมากขึ้นที่ต้องใช้ 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>
คุณยังสามารถตรวจสอบความพร้อมใช้งานของโมดูลสแกนเนอร์อย่างชัดแจ้งและขอดาวน์โหลดผ่าน ModuleInstallClient API ของบริการ Google Play ได้ด้วย
หากไม่เปิดใช้การดาวน์โหลดโมดูลเวลาติดตั้งหรือขอการดาวน์โหลดอย่างชัดแจ้ง และไม่ได้ติดตั้งโมดูลสแกนสำหรับ 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();