Cordova Phonegap Camera getpicture在带有DATA_URL选项的BlackBerry上无法正常工作

时间:2013-01-14 18:58:19

标签: cordova blackberry camera

我有一个使用相机功能的黑莓APP。

代码库来自PhoneGap 2.3.0

中提供的“示例应用”

索引HTML添加了一行

  <input type="button" value="Take Picture" onclick="app.takePhoto();" />

index.js添加了以下功能:

takePhoto: function(){
    navigator.camera.getPicture(this.cameraSuccess, 
                                this.cameraError, 
                                {   quality: 50, 
                                    destinationType: Camera.DestinationType.DATA_URL
                                } );
},
cameraSuccess: function(imageData){
    console.log(imageData);
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
},
cameraError: function(){
    alert("error!");
}

如果我运行Ripple Simulator,chrome中的错误控制台会显示:

Received Event: deviceready cordova-2.3.0.js:8165
Received Event: deviceready ripple.js:39
blob:http%3A//localhost/1b218c8e-6902-4780-a652-8f7f4d52fe28 cordova-2.3.0.js:8165
blob:http%3A//localhost/1b218c8e-6902-4780-a652-8f7f4d52fe28 ripple.js:39
GET data:image/jpeg;base64,blob:http%3A//localhost/1b218c8e-6902-4780-a652-8f7f4d52fe28  

如果我运行模拟器,在添加图像作为相机数据后,我会弹出错误,错误日志显示为:

1:01:16.054: cordovaExample [2013-01-14 18:55:03.858]: Error in error callback: Camera1387674010 = ReferenceError: Can't find variable: imageData

当我在设备上运行时,我实际上并不知道如何读取错误输出。

根据我所展示的内容,为什么我的Phone Gap应用程序没有在黑莓设备上拍照?

1 个答案:

答案 0 :(得分:4)

Phonegap DestinationType.DATA_URL 选项在某些BB设备上效果不佳,主要是较新的设备。因为现代手机(如BB 9800)拥有更好的相机,它们也会产生更大的图片,因此将它们转换为BASE64字符串会导致内存问题并清空imageData变量。

您可以通过降低 targetWidth targetHeight 来对此进行测试。如果它适用于较低的分辨率,那么这是你的问题。

可以使用 FILE_URI 代替 DATA_URL 来解决。但你应该尝试它。

如果 FILE_URI 无效,则问题出在BB相机中。