Google 程式碼掃描器 (僅限 Android)

Google 程式碼掃描器 API 提供完整的掃描程式碼解決方案 不需應用程式要求相機權限,同時保留使用者 隱私權。藉由將掃描程式碼的工作委派給 Google Play 服務,且只將掃描結果傳回至您的應用程式 (影片 1)。 所有圖片處理作業都會在裝置上進行,且 Google 不會儲存結果 或圖片資料API 支援的程式碼格式與 ML Kit Barcode Scanning API 並傳回 相同Barcode 物件。

這個 API 非常適合需要流暢掃描程式碼的應用程式 來自訂 UI 或相機體驗該實作作業完全位於 Google Play 服務,確保應用程式大小不受影響。

從 16.1.0 版開始,您可以啟用自動縮放功能,以便在 Google 程式碼中加入 Google 程式碼 掃描器可自動掃描遠離相機的條碼時間 使用者將裝置指向條碼時,掃描器就會以智慧方式偵測 並放大條碼這樣就不必手動縮放 調整功能,讓條碼掃描速度更快、更準確,也更易於存取 (見影片 2)。

影片 1.Google 程式碼掃描器整合 影片 2.自動縮放效果

如果是需要自訂 UI 的較複雜用途,建議您使用 ML Kit Barcode Scanning API

如有疑問、要回報錯誤或需要協助,請查看 ML Kit 社群頁面

事前準備

如要讓應用程式做好準備,請完成下列各節的步驟。

設定應用程式

  1. 在頂層 settings.gradle 檔案中納入 Google 的 Maven 存放區 Maven 中央存放區 dependencyResolutionManagement 區塊:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. play-services-code-scanner 新增 Google Play 服務依附元件 連結到模組的 Gradle 建構檔案,通常為 app/build.gradle

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. 您可以將應用程式設為自動取得 Google Play 服務 請在從何處安裝應用程式時,將掃描器模組下載到裝置上 Play 商店。

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    您也可以明確檢查掃描器模組的可用性並要求 透過 Google Play 服務 ModuleInstallClient API

    不啟用安裝期間模組下載功能或明確要求 下載 — 而且掃描器模組尚未安裝 用途:Google Play 服務會先下載掃描器模組 使用時間。

掃描 QR code

請執行下列步驟來掃描條碼。

  1. 選用:設定程式碼掃描器。

    如果您知道預期會讀取哪些條碼格式,則可以改善 調整條碼偵測器的速度 格式。舉例來說,如果只要偵測 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();
    
  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() 即可要求掃描 QR code。

    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();