var camera = {
settings : {
quality : 50,
targetWidth : 1024,
targetHeight : 1024,
correctOrientation : true
}
};
var error = function(message) {
alert("Error happened while trying to get a picture", message);
};
document.addEventListener("deviceready", function() {
camera.toFile = function() {
this.settings.destinationType = navigator.camera.DestinationType.FILE_URI;
return this;
},
camera.toBase64 = function() {
this.settings.destinationType = navigator.camera.DestinationType.DATA_URL;
return this;
},
camera.fromCamera = function() {
this.settings.sourceType = navigator.camera.PictureSourceType.CAMERA;
return this;
};
camera.fromLibrary = function() {
this.settings.sourceType = navigator.camera.PictureSourceType.PHOTOLIBRARY;
return this;
};
camera.fromPhotoAlbum = function() {
this.settings.sourceType = navigator.camera.PictureSourceType.SAVEDPHOTOALBUM;
return this;
}
camera.get = function(callback) {
navigator.camera.getPicture(function(data) {
alert("taking a picture successful");
callback(data);
}, error, camera.settings);
};
}, false);
これは、カメラ用の小さなラッパーです。そして、私はそれを次のように呼びます:
camera.fromPhotoAlbum().toBase64().get(function(base64){});
約 20% の確率で「alert("写真の撮影に成功しました");」エラーは表示されませんが、呼び出されません。写真の撮影をキャンセルすると、「写真の取得中にエラーが発生しました」というメッセージが表示されるため、エラー コールバックが機能します。
基本的に何も起こりません。CM9 の Samsung Galaxy S2 と新しい HTC One X でテストしました。