Google コードスキャナ(ベータ版)

Google Code Scanner 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. Play ストアからアプリをインストールする際、Google 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();