2012年9月1日土曜日

ZXing QRコードスキャナーをWebから使う

ちょっと ZXing(バーコードライブラリ)のAndroid版アプリ(QRコードスキャナー)のソースを追いかけていたらちょっと気になる <intent-filter> を見つけまして。

ん、、これって?
  private static final String[] ZXING_URLS = { "http://zxing.appspot.com/scan", "zxing://scan/" };
  private static final String RETURN_CODE_PLACEHOLDER = "{CODE}";
  private static final String RETURN_URL_PARAM = "ret";
おおおおおー!?

ブラウザで表示するWebページ上で
zxing://scan/?ret=(戻り先URL)
にリンクするとQRコードスキャナーが起動する。のはよいとして、スキャンが終わると戻り先URL)に戻ってきてくれる。このときURLに {CODE} があるとその部分がスキャンした文字列になってくる。
例えばこんな感じ → zxing://scan/?ret=http%3A//tes.to/zxing.html%3Fcode%3D%7BCODE%7D

つまりWebアプリや例えば業務系のサイトなんかで、QRコードスキャナーを使ってバーコード(JAN/EANでもQRコードでもISBNでも)を読み込んでその結果を持ってページに戻ってきてもらうようなことが可能なわけです。わざわざ専用のWebViewアプリを作らなくても!

zxing://scan/ のかわりに http://zxing.appspot.com/scan を使うこともできます。

URLQRコードスキャナー
未インストールインストール済み
zxing://scan/エラーQRコードスキャナー自動起動
http://zxing.appspot.com/scanインストール案内ページ表示ブラウザで開くかQRコードスキャナーで開くか問い合せ

動作確認できるテストページも作ったので気になる方はAndroid端末実機でアクセスしてみてください。
http://tes.to/zxing.html


で、例によっていろいろ実験してから解説ページを見つけてるわけです(´・ω・`)
http://code.google.com/p/zxing/wiki/ScanningFromWebPages