我可以使用cordova-plugin-camera中的相机插件从我的移动设备拍摄照片,但是在指定相机选项时出现问题。
我在我的控制器中尝试了以下操作,以查看Camera对象具有哪些键:
$ionicPlatform.ready(function() {
for (var key in Camera) {
alert(key);
}
});
它只返回getPicture()方法。缺少其他键,例如“EncodingType”或“MediaType”。当我填充cameraExport对象并且所有内容都正确填充(EncodingType等等都可用)时,我去了相机库中的Camera.js中的日志。当它到达我的控制器时它就不可用了。
当我尝试引用Camera.EncodingType.JPEG时 - 我得到“无法读取未定义的属性JPEG。”
我尝试卸载插件并通过git url重新安装它,并尝试使用org.apache.cordova.camera方法(卸载后)。我更新了离子库。创建了新项目,希望这只是一个配置错误。
这是一个示例控制器,我把它放在一起也有问题:
.controller('PhotoCtrl', function($scope, $state, $ionicPlatform, Camera) {
$ionicPlatform.ready(function() {
alert(JSON.stringify(Camera)); // This just shows empty brackets: {}
});
$scope.getPhoto = function() {
try {
// Errors with this alert - if I take it out, it will allow me to take a picture
alert(Camera.EncodingType.JPEG);
Camera.getPicture().then(function(photoUri) {
alert(photoUri);
}, function(err) {
console.err(err);
},
{
// Again, if I remove the Camera.EncodingType.JPEG, it will save the picture
encodingType: Camera.EncodingType.JPEG,
// These don't work either. Almost like the options aren't being applied.
correctOrientation: true,
saveToPhotoAlbum: true
});
}
catch(err) {
// Throws the "Cannot read property JPEG of undefined."
alert(err);
}
};
})
有什么想法吗?
如果我能提供更多信息,请告诉我。
提前致谢!
答案 0 :(得分:1)
事实证明我的Camera对象是一个工厂制作的对象。我只是忘了从navigator.camera添加常量。
卫生署!
.factory('Camera', ['$q', function($q) {
return {
getPicture: function(options) {
var q = $q.defer();
navigator.camera.getPicture(function(result) {
// Do any magic you need
q.resolve(result);
}, function(err) {
q.reject(err);
}, options);
return q.promise;
},
// Forgot the following
EncodingType: navigator.camera.EncodingType,
DestinationType: navigator.camera.DestinationType,
MediaType: navigator.camera.MediaType,
PictureSourceType: navigator.camera.PictureSourceType,
PopoverArrowDirection: navigator.camera.PopoverArrowDirection,
Direction: navigator.camera.Direction
}
}])