Google 程式碼掃描器 API 提供完整的程式碼掃描解決方案,不必要求應用程式取得相機權限,同時保護使用者隱私。方法是將掃描代碼的工作委派給 Google Play 服務,然後只將掃描結果傳回應用程式 (影片 1)。所有影像處理作業都會在裝置中完成,Google 不會儲存結果或影像資料。這項 API 支援與 ML Kit 條碼掃描 API 相同的程式碼格式,並傳回相同的 Barcode 物件。
如果應用程式需要順暢掃描程式碼,且不需要自訂 UI 或相機體驗,就非常適合使用這項 API。實作完全位於 Google Play 服務中,確保對應用程式大小的影響降到最低。
從 16.1.0 版開始,你可以啟用自動縮放功能,讓 Google 條碼掃描器自動掃描遠離鏡頭的條碼。使用者將裝置對準條碼時,掃描器會智慧偵測並放大條碼。這樣就不需要手動調整縮放比例,讓條碼掃描更快、更準確,也更易於使用 (請參閱影片 2)。
|  |  | 
| 影片 1。整合 Google 程式碼掃描器 | 影片 2。自動縮放效果 | 
如需自訂 UI 的複雜用途,建議直接使用 ML Kit 條碼掃描 API。
如有任何問題、想回報錯誤或需要協助,請查看 ML Kit 社群頁面。
事前準備
如要讓應用程式做好準備,請完成下列各節的步驟。
設定應用程式
- 在頂層 - settings.gradle檔案的- dependencyResolutionManagement區塊下方,加入 Google Maven 存放區和 Maven 中央存放區:- dependencyResolutionManagement { repositories { google() mavenCentral() } }
- 將 - play-services-code-scannerSDK 的 Google Play 服務依附元件新增至模組的 Gradle 建構檔案,通常為- app/build.gradle:- dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
- 您可以設定應用程式,讓 Google Play 服務在從 Play 商店安裝應用程式時,自動將掃描器模組下載到裝置。 - <application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>- 您也可以透過 Google Play 服務 ModuleInstallClient API,明確檢查掃描器模組是否可用,並要求下載。 - 如果您未啟用安裝時模組下載功能或要求明確下載,且掃描器模組尚未安裝用於其他用途,Google Play 服務會在首次使用時下載掃描器模組。 
掃描代碼
請按照下列步驟掃描條碼。
- 選用:設定程式碼掃描器。 - 如果您知道要讀取的條碼格式,可以設定條碼偵測器只偵測這些格式,藉此提升偵測速度。舉例來說,如要只偵測 Aztec 碼和 QR code,請建構 - 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(); 
