Android バーコード/QRコードの読み取り(Java)

Programming
公開: 2022-06-07

ライブラリの導入

build.gradle

  • ZXing ライブラリを追加
dependencies {
    ・・・・
    implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
}

AndroidManifest.xml

  • カメラのパーミッションを許可
  • ハードウェアアクセラレーションを有効に
<uses-permission android:name="android.permission.CAMERA" />
<application
    android:hardwareAccelerated="true"

バーコード/QRコード読取用の Activity を追加

AndroidManifest.xml

  • ZXing がデフォルトで提供している読取用の Activity を追加
  • 独自で読取画面を作成する場合は、この設定は不要
<activity
    android:name="com.journeyapps.barcodescanner.CaptureActivity"
    android:screenOrientation="fullSensor"
    tools:replace="screenOrientation" />

バーコード/QRコードの読み取り

// 読取用 Activity の起動
public void initiateScan(View view) {
    new IntentIntegrator(this).initiateScan();
}

// 読取結果の取得
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // バーコードを読み込んだ後の処理
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (result == null || result.getContents() == null) {
        super.onActivityResult(requestCode, resultCode, data);
        return;
    }

    // バーコードのデータを取得する
    String contents = result.getContents();
    EditText edit = (EditText) findViewById(R.id.txt_instruction_number);
    edit.setText(contents);
    edit.clearFocus();
}

参考

※サンプルソースが Java ではなく Kotlin のものがあるので注意
Kotlin AndroidでQRコード読み取りアプリをライブラリを使用して作ってみた
Kotlin zxing-android-embedded を使ってみる (Kotlinで)
Java 【Android】「zxing-android-embedded」ライブラリでQRコードリーダー機能
エミュレータ―の仮想カメラの操作 仮想カメラを移動する