[Titanium]バーコードを使いましょう

■作業環境 2.1.4GA / Xcode4.5.1
■環境設定
1.TiBarを利用します。
 ※今回は、tibar_iphone-0.4.2.zipをダウンロードしました。
2.zipを解凍します。
 ⇒「modules」フォルダが解凍されます。
3.「modules」フォルダ直下の「iphone」フォルダを/Library/Application Support/Titanium/modules にコピーします。
4.ライブラリとのリンク
 /Library/Application Support/Titanium/mobilesdk/osx/2.1.4.GA/iphone/iphone/Titanium.xcodeproj をXCodeで立ち上げてリンクするとかありますけど、その方法ではlibiconv.dylibが見当たりませんでした。
 ファイル自体は/usr/lib直下にシンボリックリンクとして存在はしています。

$ ls -al /usr/lib/libiconv*
lrwxr-xr-x 1 root wheel 16 11 27 2011 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
-r-xr-xr-x 1 root wheel 2105216 11 27 2011 /usr/lib/libiconv.2.dylib
lrwxr-xr-x 1 root wheel 20 11 27 2011 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib

 そんな訳で、/Library/Application\ Support/Titanium/modules/iphone/tibar/0.4.2/module.xcconfigに下記の1行を直接追記しています。
 OTHER_LDFLAGS=$(inherited) -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework QuartzCore /usr/lib/libiconv.dylib
 ※AVFoundationはあるのですが、coreMedia / coreVideoもありませんでした。
■プロジェクト作成
「iPhoneでバーコードをスキャンしたい!Titanium MobileでZBarを使う方法」を参照
今回は「Single Window」でプロジェクトを作成。
tiapp.xmlに下記を追加。

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

app.js

//Application Window Component Constructor
function ApplicationWindow() {
//load component dependencies
// var FirstView = require('ui/common/FirstView');

//create component instance
var self = Ti.UI.createWindow({
title: "TiBar Test App",
backgroundColor:'#ffffff'
});

var TiBar = require('tibar');
var label = Titanium.UI.createLabel({
text:'TiBar App',
textAlign:'center',
width:'auto'
});
var button = Titanium.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,
"showsZBarControls": true,
"tracksSymbols": true, // スキャンする時に四角の枠を表示する
// "showsSymbols": true,
"enableCache": true,
"showsHeldOnFail": true,
"takesPicture": false
},
},
success: function(data){
Titanium.API.info('TiBar success callback!');
if( data && data.barcode ){
Titanium.UI.createAlertDialog({
title: 'Scan result',
message: "Barcode: " + data.barcode + " Symbology:" + data.symbology
}).show();
}
},
cancel:function(){
Titanium.API.info('TiBar cancel callback!');
},
error:function(){
Titanium.API.info('TiBar error callback!');
}
});
});

self.add( label );
self.add( button );

//construct UI
// var firstView = new FirstView();
// self.add(firstView);

return self;
}

//make constructor function the public component interface
module.exports = ApplicationWindow;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です