試してみたのでメモ。
とりあえず zxing/zxing を clone します。で、とりあえず android 配下なナニをそのまま使ってみることに。
ハロワなプロジェクトを作成して java のソースのみをとりあえずコピィ。build.gradle は以下を追加。
repositories {
mavenCentral();
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.journeyapps.zxing-android-embedded:2.0.1@aar'
compile 'com.journeyapps.zxing-android-legacy:2.0.1@aar'
compile 'com.journeyapps.zxing-android-integration:2.0.1@aar'
compile 'com.journeyapps.zxing:core:3.0.1'
}
で、Sync してますがリソースをコピィしておりませんのでエラーが大量に出ます。足らないリソースをこつこつとコピィしてコンパイルは通ったんですが何となく微妙な気がしてきたので、サンプルをそのまんま使ってみることに。
import して
コンパイル通らない。
Execution failed for task ':app:processDebugResources'.
> Error: A library uses the same package as this project: com.google.zxing.client.android
You can temporarily disable this error with android.enforceUniquePackageName = false
However, this is temporary and will be enforced in 1.0
て何それ? って言いつつ昼飯休憩の後に再度色々確認してたら以下を発見。
-
ハロワなプロジェクト作って
-
TextView を Button にして
-
onClick で new IntentIntegrator(MainActivity.this).initiateScan()
-
実体は startActivityForResult でした (https://goo.gl/5hdjnp)
-
IntentIntegrator.REQEUST_CODE でフィルタ
QR コードはデコードできているようです。以下で取り出し。
String contents = intent.getStringExtra(Intents.Scan.RESULT);
そしてデフォルトの呼び出しで全てのバーコードに対応しているみたい。initiateScan に
- IntentIntegrator.ONE_D_CODE_TYPES を渡せばバーコード限定
- IntentIntegrator.QR_CODE_TYPES を渡せば QR コード限定
にできるのかどうか。
ドキュメントなかったけど
IntentIntegrator のソースが見れたので大体把握できました。つうかバーコードのスキャンがこんなにもお手軽になっていたとは知りませんでした。いやはや。
コードの断片
以下なカンジです。
{% gist 4b7e0444ae09c5a18520 %}
build.gradle あたりは README にあります。
こっちも
晒せるサンプルでっちあげて Github に放り込む方向にて。