3

カメラ機能を使用したブラックベリーアプリがあります。

コードベースは、PhoneGap2.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アプリケーションがブラックベリーデバイスで写真を撮っていないのはなぜですか?

4

1 に答える 1

4

Phonegap DestinationType.DATA_URLオプションは、一部の BB デバイス (主に新しいデバイス) ではうまく機能しません。最新の電話 (BB 9800 など) はより優れたカメラを備えているため、より大きな画像を生成するため、それらを BASE64 文字列に変換すると、メモリの問題が発生し、imageData 変数が空になる可能性があります。

これは、 targetWidthtargetHeightを下げることでテストできます。より低い解像度で動作する場合、これが問題です。

DATA_URLの代わりにFILE_URIを使用することで解決できます。しかし、いずれかの方法で試してみてください。

FILE_URIが機能しない場合、BB カメラに問題があります。

于 2013-01-14T19:16:52.187 に答える