SyntaxHighlighter

2012/03/20

AndroidでカメラとQRコードを使う!


AndroidのCameraでQRコードを読み取ってURLをロード、もしくは自分のURLをQRコード化して他の端末に手軽に表示なんてことをしてみたいと思ったことがありませんか?

今回そのようなことを試してみたのですが、ZXingライブラリを使って、サクっとできてしまったので紹介します。

まず使用したQRCodeライブラリはZXing ("Zebra Crossing")。QRCodeだけでなく、バーコードの読み書きにも対応しています。ライセンスはApache License 2.0ですので、自作アプリに流用可能です。

はじめに、ZXingのサイトから下記のファイルをダウンロードします。
ライブラリおよびコードはなるべく最新版のものをダウンロードして使うと良いと思います。

つぎに、プロジェクトに取り込む方法は下記の通り:
  1. "project" => properties => Java Build Path => Librariesタブ => Add JARs... => core.jarを選択
  2. new packageでcom.google.zxing.client.androidを作成し、ダウンロードしたPlanarYUVLuminanceSource.javaをコピーして配置します。
これで終わり!なんですが、もう少し簡単化するために、下記のQrCodeUtilクラスをかいてみました。
  • 読み込みAPI
    • yubDataにはCameraからのpreviewCallbackで得られるyuvデータをそのまま指定します。dataWidthやdataHeightにはCameraパラメタから得られるプレビュー画サイズを指定します。leftおよびtopはゼロ、widthおよびheightはプレビュー画のサイズを入れておけばいいでしょう。
  • 書き出しAPI
    • textにはエンコードしたい文字列、sizeは生成するQRCodeの一辺の長さを指定します。うまくエンコードできればBitmapクラスのインスタンスが返されます。
いかがでしょうか?非常に簡単ですね。

このクラスはGoogle Playで公開しているアプリPhotoFtp中に組み込んで利用しています

 なお、このクラスを作るに当たって、下記のサイトを参照させて頂きましたm(__)m
より深く言及されているので、詳しく知りたい方はぜひご参照ください。

0 件のコメント: