Google 程式碼掃描器 (Beta 版)

Google Code Scan API 提供完整的掃描程式碼解決方案,您不必要求應用程式要求使用者授予相機權限,同時也能保障使用者隱私。方法是將程式碼掃描工作傳送至 Google Play 服務,只將掃描結果傳回您的應用程式。所有圖片處理作業都是在裝置上進行,Google 不會儲存結果或圖片資料。這個 API 支援與 ML Kit Barcode Scanning API 相同的程式碼格式,並傳回相同的 Barcode 物件。

此 API 非常適合需要掃描程式碼,而且不需要自訂 UI 或相機體驗的應用程式。實作完全位於 Google Play 服務中,因此不會對應用程式的大小產生重大影響。如需更需要自訂 UI 的複雜用途,請直接使用 ML Kit Barcode Scanning API

如有任何問題,或想要提交錯誤或需要協助,請參閱 ML Kit 社群頁面

事前準備

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

設定應用程式

  1. 在頂層 settings.gradle 檔案的 dependencyResolutionManagement 區塊下方,加入 Google Maven 存放區Maven 中央存放區

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

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
    }
    
  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 服務會在第一次使用掃描工具模組時進行下載 (如果尚未安裝,以供其他用途使用)。

掃描圖碼

1. (選用) 設定程式碼掃描器

如果知道您預期讀取哪些條碼格式,則可以將其設定為只偵測這些格式,藉此改善條碼偵測器的速度。舉例來說,如果只要偵測 Aztec 程式碼和 QR 圖碼,請建構 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();

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() 來要求代碼掃描

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