Web系のこととかー。

ZBarSDKの準備

バーコードをスキャンするライブラリはいくつかありますが、わりと高速で使いやすいZBarを使うことにします。ネイティブアプリの場合は、このSDKをそのまま突っ込んでやれば良いんですが、Titanium Mobileの場合は tibar というモジュールを使用します。

1:tibarここから、iPhone版のtibarをダウンロードします。

2:解凍したモジュールを /Library/Application Support/Titanium/module に配置します。

3: /Library/Application Support/Titanium/mobilesdk/osx/1.7.2/iphone/iphone/Titanium.xcodeproj をXCodeで立ち上げます。

4:下記ライブラリをリンク。Bulde PhasesからLink Binary With Librariesから追加。

  • QuartzCore.framework
  • libiconv.dylib
  • AVFoundation.framework
  • CoreMedia.framework
  • CoreVideo.framework

5:XCodeを閉じる。

Titanium Studioでアプリを作る

準備が整ったので、Titanium Studioでプロジェクトを作成します。

まずは、tiapp.xmlを編集して、モジュールを追加します。versionの所はダウンロードしてきたtibarに合わせてください。

tiapp.xml

<modules>
         <module version="0.4.2">tibar</module>
</modules>

app.js

tibarの公式サイトにもサンプルがありますが、バーコード解析がカメラじゃなくて、カメラロールの設定になっているので、ここではカメラで自動的に認識するようにしてみます。

var win = Titanium.UI.createWindow({
    title:'TiBar Test App',
    backgroundColor:'#fff'
});

var TiBar = require('tibar');
var label = Titanium.UI.createLabel({
    text:'TiBar App',
    textAlign:'center',
    width:'auto'
});

var button = Ti.UI.createButton({
    title: "Scan barcode",
    height:50,
    width:250,
    bottom:20
});
button.addEventListener('click', function(){
    TiBar.scan({
        configure: {
            classType: "ZBarReaderViewController",
            sourceType: "Camera",
            cameraMode: "Default", // Default, Sampling, Sequence
            config:{
                "showsCameraControls":true, // (VC)
                "showsZBarControls":true,
                "tracksSymbols":true, // the tracking rectangle that highlights barcodes
                "enableCache":true,
                "showsHelpOnFail":true,
                "takesPicture":false
            },
        },

        success:function(data){
            Ti.API.info('TiBar success callback!');
            if(data && data.barcode){
                Ti.UI.createAlertDialog({
                    title: "Scan result",
                    message: "Barcode: " + data.barcode + " Symbology:" + data.symbology
                }).show();
            }
        },
        cancel:function(){
            Ti.API.info('TiBar cancel callback!');
        },
        error:function(){
            Ti.API.info('TiBar error callback!');
        }
    });
});
win.add(label);
win.add(button);

win.open();

これで、完成です。非常に簡単。

他の設定については公式サイトを参照してください。

§391 · 8月 11, 2011 · プログラミング_Titanium · · [Print]

Leave a Reply