はじめに
この前、授業成果物として簡易的なQRコード読み取りアプリケーションを制作したときに使ったライブラリについてメモを残しておきます。
今回使用したライブラリ
- ZXing Android Embedded
https://github.com/journeyapps/zxing-android-embedded
できること
簡単に QR 読み込み機能のアプリケーションが作成できます。
使ってみる
公式ドキュメントもあり書かれている通りに進めれば、動作できると思います。
あまり面倒な作業は必要なく、インポートするだけで実行可能です。
Gradle ファイルにライブラリを記載する
build.gradle (app)
に以下の内容を追記します。
repositories {
jcenter()
}
dependencies {
implementation 'com.journeyapps:zxing-android-embedded:4.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.zxing:core:3.3.0'
}
android {
buildToolsVersion '28.0.3'
}
ハードウェアアクセラレーションを有効にする
AndroidManifest.xml
に android:hardwareAccelerated="true"
を追記します。
<application android:hardwareAccelerated="true" ... >
QR 読み取り用のアクティビティを追記する
QR コード読み取り部分のアクティビティが必要なので、ライブラリに存在している QR コード読み取りアクティビティを AndroidManifest.xml
に追記する。
<activity android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="fullSensor"
tools:replace="screenOrientation" />
コードを書く
基本的にコピペで OK です。
適当なサンプルを置いておくので参考にどうぞ!
class QRReaderActivity : AppCompatActivity() {
internal var qrScanIntegrator: IntentIntegrator? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_qrreader)
qrScanIntegrator = IntentIntegrator(this)
// 画面の回転をさせない (今回は縦画面に固定)
qrScanIntegrator?.setOrientationLocked(false)
// QR 読み取り後にビープ音がなるのを止める
qrScanIntegrator?.setBeepEnabled(false)
// スキャン開始 (QR アクティビティ生成)
qrScanIntegrator?.initiateScan()
}
// 読み取り後に呼ばれるメソッド
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// 結果の取得
val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (result != null) {
// result.contents で取得した値を参照できる
Toast.makeText(this, result.contents, Toast.LENGTH_LONG).show()
}
else {
super.onActivityResult(requestCode, resultCode, data)
}
}
}
これで QR コードを読み取るアプリを簡単に作成することができます!
まとめ
正直、自作するのだるいですからね。サボれるところはサボってしまいましょう。
今回は QR コードを読み込む最低限の機能しかないアプリケーションを作成しましたが、サンプルを見た感じだともっと細かく作ることもできそうだなあと思いました。楽に QR コードを読み込むアプリケーションを作成したい人は使ってみてはどうでしょうか
ありがとうございましたー 🥳