Google コードスキャナ API は、ユーザーのプライバシーを保護しながら、アプリがカメラの権限をリクエストすることなくコードをスキャンするための完全なソリューションを提供します。これは、コードのスキャンタスクを Google Play 開発者サービスに委任し、スキャン結果のみをアプリに返すことで実現されます(動画 1)。画像処理はすべてデバイス上で行われ、Google が結果や画像データを保存することはありません。この API は ML Kit バーコード スキャン API と同じコード形式をサポートし、同じ Barcode
オブジェクトを返します。
この API は、カスタム UI やカメラ エクスペリエンスを必要とせずにシームレスなコード スキャンを必要とするアプリに最適です。実装は 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-scanner
SDK の 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 コードのみを検出するには、次の例のように
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();