ZXingを利用してAndroidでQRコードを読み込むサンプル
こんにちは、@9ensanです。
今回は、AndroidでよくあるQRコードの読み取り方法のサンプルを紹介します。
AndroidでQRを読み込むのに一番有名なライブラリが「ZXing」というライブラリです。
このライブラリを利用してQRコードを読み込むサンプルを作って行きたいと思います。
それでは、解説していきます。
ZXingのダウンロードから配置
ライブラリのダウンロード
まずは、ライブラリを「ZXingのダウンロードサイト」からダウンロードしてきます。
ダウンロードサイトを開いたら、現時点での最新版の「ZXing-2.1.zip」のリンクをクリックします。
次にリンク先の、「ZXing-2.1.zip」をクリックしてファイルをダウンロードします。
Androidプロジェクトへのライブラリの登録
ダウンロードしてきたファイルを解凍します。
解凍されたフォルダの中から「core/core.jar」と「javase/javase.jar」の2つのファイルを
Androidプロジェクトの中に作成したlibsフォルダにコピーします。
プロジェクトのプロパティの、「Javaのビルド・パス」を選択します。
「ライブラリー」に「外部JARの追加」ボタンから先程コピーした「core.jar」と「javase.jar」を追加します。
これで、ライブラリーの準備は完了です。
QRコードを読み取るソースの修正
詳しくはgithubに上げた「サンプルコード」を参照してください。
カメラの起動は、「ApiDemos」の「CameraPreview.java」を参考に、QRコード読み取りは、「ZXing」に付いてきた「CaptureActivity」プロジェクトのソースから、QRコード読み出しに必要な処理のみを抜き出して実装しています。
(ZXingにデフォルトで付いている機能をそのままサンプルコードにすると、複雑になりすぎるので、簡素化しています)
AndroidManifest.xmlの修正
カメラを使用する為のパーミッションを追加
<uses-permission android:name="android.permission.CAMERA" />
フルスクリーンで表示するテーマに修正
(android:themeを修正)
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
カメラの表示を正しくするために、activityをlandscape固定にする
(android:screenOrientationの指定)
<activity android:name="me.gensan.sampleqr.SampleQrActivity" android:label="@string/app_name" android:screenOrientation="landscape">
実際のソース
レイアウトXmlの修正
- SurfaceViewの追加
- 認識領域の設定
認識領域を白の枠線で描く為にViewを追加
「res/drawable/frame.xml」を作成して枠線用のshapeを作成
実際のソース
カメラを起動し、QRコードを解析する為のソースコードの記述
タッチイベントで、オートフォーカスを起動し、白枠の中の画像に対してQRコードの解析処理を実行するように実装
簡単にQRコードを読むことができるので何か面白いものでも作ってみてはいかがでしょうか。
今回参考にさせて頂いたサイト
.
関連する記事:
- MacでPasoriでNFCカードを読んでみる(libnfcを使って)
- ActionBarSherlockを使ってAndroid2.xにもActionBarを組み込むサンプル
- AndroidのzxingでNoClassDefFoundErrorが出た場合の対処
- PHP OpenID libraryをのbeginでNULLが返って来てはまった話し
- ArduinoにRC-S620/Sを接続する方法
コメント 0