2010/10/23

6行で作れるAndroidのバーコードスキャナープログラムを試してみました。



android-scripting 「SL4A」上で、6行で作れるAndroidのバーコードスキャナープログラムを試してみました。android-scripting 「SL4A」のサイトにサンプルプログラムのリンクとして、下記のサイトがありました。

 Android barcode scanner in 6 lines of Python code

まず、ページの最初に表示されているプログラムを使ってみましたが、エラーになり正常に動作しません。ページの終わりの方にあるコメント内に正常に動作するものがありました。下記のソースです。
import android
droid = android.Android()
(id, result, error) = droid.scanBarcode()
isbn = int(result['extras']['SCAN_RESULT'])
url = 'http://books.google.com?q=%d' % isbn
droid.view(url)
 このプログラムを動作させて、書籍のバーコードを読み込み・・・
 ISBNコードを認識すると、
 










Googleブックスの該当ページが表示されます。

正常動作したので、これを基に、上記のプログラムを修正して、Amazon.co.jpでの書籍表示が出来るかどうかを試してみました。














Googleブックスのページを表示するプログラムとの違いは、Amazon.co.jpでの書籍表示のページでは、ISBNの10桁のものを使っていることです。Googleブックスは、ISBNの13桁を使用しています。「ISBN10桁」と「ISBNの13桁」の違い、変換プログラムについては、下記のサイトで教えていただきました。

 [Python]ISBN13をISBN10に変換

 出来上がったプログラムが以下のものです。
import android
droid = android.Android()
(id, result, error) = droid.scanBarcode() 

isbn13 = result['extras']['SCAN_RESULT']
isbn10 = isbn13[3:12]
check_digit = 0

for i in range(len(isbn10)):
    check_digit += int(isbn10[i]) * (10 - i)

check_digit = 11 - (check_digit % 11)

if check_digit == 10:
    check_digit = 'X'
elif check_digit == 11:
    check_digit = '0'
else:
    check_digit = str(check_digit)

isbn10 += check_digit

url = 'http://www.amazon.co.jp/gp/product/%s/' % isbn10
droid.startActivity('android.intent.action.VIEW', url)

動作確認をすると、Amazonでの該当書籍ページが表示されました。



















4 件のコメント:

m.yoneyama さんのコメント...

Androidアプリは、エクリプス上で、HelloWorld 書き出すものしか成功していない者ですが、コレって、単体でエクリプスに入りますか? どうもコード書いているだけでエラーメッセージが出る…エクリプスの設定が悪いのかなぁ。

ariki4160 さんのコメント...

コメントありがとうございます。
確認するのが遅くなりました。

このコードは、android-scripting 「SL4A」上で動作するコードになっています。

SL4Aについては、下記をご参照ください。
http://code.google.com/p/android-scripting/

m.yoneyama さんのコメント...

返答どうもです。
記事冒頭に書いてましたね(^^;
アンドロイド=EclipseのJava とばかり頭にあったもので…(^^;

(これって、スクリプトらしいけど、これで組んだものってアプリとして、マーケットに乗せられるのかな? 英語わからん(^^;)
http://www.moongift.jp/2009/06/android_scripting_environment/
日本語で紹介されているところもあったけど…。

最近は、C/C++でアプリを組めるものまであったり、ジグソーパズルのような(マーケットに載せられない)学習用のツールがあったり、アンドロイド開発環境も多種多様になってきましたよね。

私、フロヨながらQVGAでオツム弱いIDEOS使っているんですが、「コンビニなんかの在庫管理のハンディPOS端末のようなことが出来ないかなぁ」と考え、「IDEOSに持たせたバーコードリーダー使って事務室PCの在庫管理データベースに無線LANでアクセスするようなシステム」考えてたりしまして、アプリとして完成されたバーコードリーダーでないモジュール的なものを求めてました。

m.yoneyama さんのコメント...

(ここ、書き難いね
コメント書いてコメント公開押してもログインしてないと、ログインしょりして画面が戻った時に、コメントUPされてないわ、コメント欄消されてるわ)

「Androi=EclipsのJava」というのが頭にあったので、冒頭の「…Scripting」スクリプトであるのをスルーしてしまっていました。 リンク先…(英語?)読めん(^^;
http://www.moongift.jp/2009/06/android_scripting_environment/
日本語で紹介しているところがありました。

Javaの(?)学習目的にジグソーパズルのようにピースを組み立てるような開発支援もでていれば、今ではC/C++でアプリを組む支援ソフトも出てますよね。 開発環境のすそのが今後も広がりそう。


アプリとして完成されたバーコードリーダーは単体で使うようになってますよね。
モジュール的な手軽そうなバーコード機能を紹介したものを探していて、コチラを見つけたのです。
(私のドロイドは、フロヨでQVGAでオツムの弱いbモバIDEOS…これで、コンビニの在庫管理の携帯POSのようなものが出来れば…と思ったんです。売上管理までにはPOSレジも必要に成りますが、事務所PCの在庫管理の手助けになる帳票代わりの携帯POS端末に出来れば…なんてね)

人気の投稿 (過去 30 日間)