Titaniumで死ぬほどハマる
最近TitaniumでiPhone&Androidアプリを作ってたりしますが、これが死ぬほどハマる地獄道でした。特にAndroid。iPhoneはそれなりにクセがあるけど、理解さえすればそうでもないのですが、Androidは別格です。
いまハマっているのはカメラ。ただ写真を撮って、それをアプリで使いたいだけなのに、なぜか写真を撮り終わったときのイベントハンドラが呼ばれない…。
var test_window = Ti.UI.createWindow({
title:'test',
backgroundColor:'#fff'
});
var tab_test = Ti.UI.createTab({
title: "test",
window: test_window
});
var label1 = Titanium.UI.createLabel({
color:'#999',
text:'I am Window 1',
font:{fontSize:20,fontFamily:'Helvetica Neue'},
textAlign:'center',
width:'auto'
});
test_window.add(label1);
label1.addEventListener("click", function(e){
Ti.Media.showCamera({
saveToPhotoGallery: true,
allowEditing: false,
mediaTypes: [Ti.Media.MEDIA_TYPE_PHOTO],
cancel:function(){
Ti.API.warn("camera cancelled");
},
error:function(){
Ti.API.warn("camera error");
},
success: function(event){
Ti.API.warn("camera succeeded");
}
});
});
やっているのはこれだけ。空っぽのprojectを作って、これをapp.jsに書くと動くのだけど、実際のアプリに組み込むとsuccessもcancelもerrorも呼ばれなくなったりするのです。どうやらapp.jsなら動くというところに回避策がありそうですが、いまのところドハマリ中。
他にもドキュメントに書いてあるけど未実装だったり、ググると出てくるサンプルコードがいまの最新では動かなかったり、そもそもそのサンプルで使ってるAPIはドキュメントに書いてなかったり、まぁ、いろいろ香ばしい。まだ実戦で使うものではない気がしてきています。