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