Google コードスキャナ(Android のみ)

Google Code Scanner API はコードをスキャンするための完全なソリューションを提供 アプリがカメラ権限をリクエストしなくても、ユーザーを保護しながら プライバシーを保護する。これを行うには、コード スキャンのタスクを Google Play 開発者サービスとスキャン結果のみをアプリに返す(動画 1)。 画像処理はすべてデバイス上で行われ、Google は結果を保存しません 画像データなどです。API は、Terraform の ML Kit Barcode Scanning API を使用して、 同じ Barcode 渡されます。

この API は、コード不要でシームレスなコードスキャンを必要とするアプリに最適です カスタム UI やカメラ操作が可能です実装はすべて アプリのサイズへの影響を最小限に抑えます。

バージョン 16.1.0 以降では、自動ズームを有効にして Google コードが カメラから遠くにあるバーコードを自動的にスキャンできます。日時 デバイスがバーコードにかざすと、スキャナがインテリジェントに バーコードにズームインしますこれにより、手動ズームが不要になります バーコード スキャンの速度、精度、利便性が向上 (動画 2 を参照)。

動画 1.Google コードスキャナの統合 動画 2.自動ズーム効果

カスタム UI を必要とするより複雑なユースケースでは、 ML Kit Barcode Scanning API を直接使用します。

ご不明な点、バグの報告、サポートのご要望がございましたら、 ML Kit コミュニティ ページ

<ph type="x-smartling-placeholder">

始める前に

<ph type="x-smartling-placeholder">

アプリを準備するには、以下のセクションに示す手順を完了します。

アプリを設定する

  1. 最上位の settings.gradle ファイルに以下を含めます。 Google の Maven リポジトリMaven セントラル リポジトリdependencyResolutionManagement ブロック:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. play-services-code-scanner の Google Play 開発者サービスの依存関係を追加する SDK をモジュールの Gradle ビルドファイル(通常は app/build.gradle)に追加します。

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. 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();

    デフォルトでは、自動ズームはオフになっています。自動ズーム機能を有効にする バージョン 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() を呼び出して、コードのスキャンをリクエストします。

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