我使用Appcelerator(Titanium SDK)制作应用程序。 我打开相机时遇到问题,我已经在tiapp.xml中设置了相机权限。 我尝试使用来自厨房水槽钛的来源。
这是我的代码
var win;
function fireUpTheCamera() {
if (Ti.Platform.osname === 'android'|| Ti.Platform.osname == "iphone" || Ti.Platform.osname == 'ipad') {
win.removeEventListener('focus', fireUpTheCamera);
}
Titanium.Media.showCamera({
success:function(event) {
var cropRect = event.cropRect;
var image = event.media;
Ti.API.debug('Our type was: '+event.mediaType);
if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO)
{
var imageView = Ti.UI.createImageView({
width:win.width,
height:win.height,
image:event.media
});
win.add(imageView);
}
else
{
alert("got the wrong type back ="+event.mediaType);
}
},
cancel:function() {
},
error:function(error) {
// create alert
var a = Titanium.UI.createAlertDialog({title:'Camera'});
// set message
if (error.code == Titanium.Media.NO_CAMERA)
{
a.setMessage('Please run this test on device');
}
else
{
a.setMessage('Unexpected error: ' + error.code);
}
// show alert
a.show();
},
saveToPhotoGallery:true,
allowEditing:true,
mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
});
}
function cam_basic(_args) {
win = Titanium.UI.createWindow({
title:_args.title
});
if (Ti.Platform.osname === 'android'|| Ti.Platform.osname == "iphone" || Ti.Platform.osname == 'ipad') {
win.addEventListener('focus', fireUpTheCamera);
} else {
fireUpTheCamera();
}
return win;
};
module.exports = cam_basic;
当我完成捕获图片并按下OK按钮时,它总是重启应用程序,没有任何错误消息,也在日志中。
我正在使用SDK 6.0.0GA。
请给我一些帮助,以及我的代码有什么问题。
答案 0 :(得分:1)
在启动相机之前,您必须向最终用户询问权限。我正在使用此代码段,它适用于Ti-5.4.0。
if(Ti.Media.hasCameraPermissions())
fireUpTheCamera();
else
{
Ti.Media.requestCameraPermissions(function(permission)
{
if(permission.success)
fireUpTheCamera();
else
alert('Please Provide permission first');
});
}
答案 1 :(得分:0)
自Titanium sdk 5.1起,您还需要请求运行时权限才能使用相机。
见这里:http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Media-method-requestCameraPermissions