どうも。どっことです。今回はzxing
を使ってみたので紹介します。
zxingを使ってQRコード/バーコードリーダーを実装する
一時期流行りましたよね。バーコードとか、
QRコードとか読み取って、いい感じになにかやること。ネイティブアプリで。そんな時に、今回使用したzxing
というライブラリが非常に使いやすく、何度も私を助けてくれました。今回は、久しぶりにこのライブラリを使ってQRコード読み取り画面を実装してみたので紹介したいと思います。(最近はAndroid標準のカメラがいろいろ読み取ってくれるからもう出番ないんだよなぁ。。。)
zxingの組み込みと実装の手順
ライブラリの追加(app/build.gradleに追記)
ライブラリを追加するので、例の如くapp/build.gradle
のdependencies
に以下を追加します。
dependencies {
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
}
AndroidManifest.xmlに追記
今回はライブラリ側で「この制御をいれてね」という案内があるのでそれに従います。
<application android:hardwareAccelerated="true" ... >
実装
ハードウェア(カメラ)の制御や、読み取った時の解析はすべてzxing
側でやってくれるので、アプリ側からは呼び出す箇所と、読み取り結果を受け取るところだけを実装すればOKです。こちらも例の如くActivityResultLauncher
を使ってライブラリの画面を呼び出し・読み取り結果を制御します。
private final ActivityResultLauncher<ScanOptions> barcodeLauncher = registerForActivityResult(new ScanContract(),result -> {
if(result.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show()
}
})
public void launch(View view) {
barcodeLauncher.launch(new ScanOptions())
}
まとめ
今回はzxing-android
を使ってみたということで紹介しました。標準の機能が便利すぎるとはいえ、まだまだ使い所はあるかと思いますので、是非参考にしていただければと思います。