しょぼしょぼプログラマ雑記

自分のための備忘録。 開発記録など掲載してます。 質問・ご意見・ご感想等はTwitter ( https://twitter.com/yun_hokuto ) までお気軽にどうぞ。

iOSで1次元バーコードを読み込む方法

先日からバーコードを読み込む方法を探してたところ、下記のようなサイトを発見しました。

 

iOSアプリ開発でZXing2.1を使ってQRコードを読み取る | Developers.IO

 

どうやら「ZXing」というライブラリが優秀みたいですね。

マルチプラットフォーム対応なのですが、問題が一つ・・・。

 

「ZXing(2.2)」までは1次元バーコードを公式でサポートしてない

 

ということ・・・。

 

どうしようと作り始めて気づきました。

ですが乗りかかった船ですので、最後までやってみたいと思います。

 

とりあえず2次元バーコードの作り方は先ほどのリンク先に記載されてましたので、割愛させていただきます。

 

【環境】

Mac OS X Marvericks

XCode 5.0.1

iPhone5(iOS6)

 

修正点は下記の通り。

 

1.ViewController.h

 ヘッダーを追加します。

 #import <MultiFormatOneDReader.h>

 

2.ViewController.mm(.mではないので注意)

 プログラムを修正します。

 1)1次元バーコードに対応

   ZXingWidgetController *zxingWidgetController = [[ZXingWidgetController alloc]initWithDelegate:self  showCancel:YES OneDMode:YES];

   「OneDMode」にYESを設定する。

 2)1次元バーコード用リーダーを作成する。

   MultiFormatOneDReader *mFormat1DReader = [[MultiFormatOneDReaderalloc]init];

 

 3)カメラにリーダーを設定する。

   zxingWidgetController.readers = [[NSSetalloc] initWithObjects:mFormat1DReader, nil];

 

これだけです。

読み込み結果のNSStringにはきちんとバーコードの数値が返ってきてました。

ただ、実用レベルかと言われると保証できかねますので、

運用される方は自己責任にてお願いします。

 

***** 余談 *****

ソースを公開するのはいいのですが、

はてなぶろぐでソースを綺麗に見せる方法ないかな・・・。