Android昨日はずっと、フリーライブラリZXingを使ったバーコードリーダの作成に関して試行錯誤してました。忘れないようにメモ書きも兼ねてアップしておきます。木南さんの著書「GoogleAndroidアプリケーション開発入門」にカメラとバーコードリーダのサンプルがあるのでこれをベースに作業しました。バーコードリーダはZXingを使用、以下からダウンロードが出来ます。http://code.google.com/p/zxing/downloads/list最新は1.31、まずはビルドGettingStartedに手順が書いてあります。http://code.google.com/p/zxing/wiki/GettingStartedAntが必要です。http://ant.apache.org/bindownload.cgiあたりから落として展開、AntのBINにパスを通しておきますダウンロードしたZXingを解凍してcore.jarをビルドします。coreantとANTを実行すれば、coreの下にcore.jarが出来ます。これをコピーして使えば良いでしょう。reader.decode(source);となっています。カメラで取り込んだ画像をbyte型からBufferedImage型に変換して、MonochromeBitmapSourceをオブジェクトを生成して、MultiFormatReaderのdecodeメソッドを呼べば結果が得られるところまで分かりました。こっからが大変でした。ByteArrayInputStream(buf));とすれば良いようですがBufferedImageがAndrodでは使えません。以下の情報をMLで見つけました。当該箇所をAndroid-SDKで表現するように置き換える必要があるという意味です。Android-SDKではこのクラスを含んでいませんので、このクラスを使わないようにパッチをあてる必要があります。-------------------------JDKの全てがAndroid-SDKの全てで使えるわけではないようです。ここでは例としてjava.awt.image.BufferedImageが挙げられていますが、まさにこれです。BufferedImageを使わないで実装しないといけないです。探した結果、ZXingのフォルダの配下zxing\androidtest\src\com\google\zxing\client\androidtestRGBMonochromeBitmapSource.javaを見つけました。これを使えばBitmapはAndoridでもサポートされているのでいけそうです。mMultiFormatReader.decode(source);として、何とかバーコードを取得できました。注意点としては1、AutoFocusの使用AutoFocusを使わないとピントが合ってない画像になるため正しく分析が出来ずにmMultiFormatReader.decodeからのリターンがNULLになる。2、Bitmap生成時に間引き作業を行うカメラからの画像をそのままBitMapにしてdecodeを呼び出すとOutofMemoryが発生しました。画像処理はメモリを消費します。8;で間引き処理しています。とうことで、バーコード画像の取り込みと画像分析でバーコードを値として取り込むところまで出来ました。今まではテストプログラムのレベルだったので、本番用のプロジェクトを作成して、検証結果を取り込みながら取り込んだバーコードから検索するような処理を追加していく予定です。乗り換えアプリ2本ブログ気持玉クリックして気持ちを伝えよう!ログインしてクリックすれば、自分のブログへのリンクが付きます。22:46>coreの下にcore.jarが出来ます。これをコピーして使えば良いでしょう。23:06>hoge君さん>オリジナルアプリからzxingを使ってバーコード読み込みたい場合は、core.jarをどこにコピーすんですか?Ecliseで開発する場合でしたら、プロジェクトファイルの下に適当なフォルダ、例えば「lib」を作成します。その下にcore.jarをコピーします。プロジェクトからcore.jarを参照するようにします。com.google.zxing.xxxとすれば使えます。Eclipseが勝手にimportしてくれるはずです。02:16>パクチーなるほど。勝手にフォルダー作っていいんや?しならなかった。明日、実際にlibフォルダを作ってコピーしてみます。本体もってないからエミュレータで試すだけだけね!?また、結果報告します、アドバイスありがとうございます。写経を続けて、Entityの追加のとこまで来ました。開発してるとDBの内容はどんどん変わっていきますね。×この広告は1年以上新しい記事の投稿がないブログに表示されております。