2013-08-22 27 views
0

我有建立它使用科爾多瓦API版本2.6錯誤結果科爾多瓦照相機API

我曾經在這個位置提供http://docs.phonegap.com/en/2.6.0/cordova_camera_camera.md.html#Camera

navigator.camera.getPicture(OnSuccess,OnFail, {quality:50,destinationType:Camera.DestinationType.NATIVE_URI,sourceType:Camera.PictureSourceType.CAMERA,saveToPhotoAlbum:true}); 

即使當樣品中工作燈V6一個工作燈應用的takePicture回調方法我正在使用NATIVE_URI結果我得到的OnSuccess方法是file:// uri而不是content:// uri,如文檔中所寫。

Camera.DestinationType = { 
DATA_URL : 0,    // Return image as base64 encoded string 
FILE_URI : 1,    // Return image file URI 
NATIVE_URI : 2    // Return image native URI (eg. assets-library:// on iOS or content:// on Android) 

};

我已經在menifest xml文件中添加了所有必需的權限。

<uses-permission android:name="android.permission.CAMERA"/> 
    <uses-feature android:name="android.hardware.camera"/> 

看到完整的代碼在這裏:

<!DOCTYPE HTML> 
<html> 
     <head> 
      <meta charset="UTF-8"> 
      <title>testProject</title> 
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> 
      <link rel="shortcut icon" href="images/favicon.png"> 
      <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 
      <link rel="stylesheet" href="css/testProject.css"> 
      <script>window.$ = window.jQuery = WLJQ;</script> 
       <script type="text/javascript" charset="utf-8"> 

    var pictureSource; // picture source 
    var destinationType; // sets the format of returned value 

    // Wait for Cordova to connect with the device 
    // 
    document.addEventListener("deviceready",onDeviceReady,false); 

    // Cordova is ready to be used! 
    // 
    function onDeviceReady() { 
     pictureSource=navigator.camera.PictureSourceType; 
     destinationType=navigator.camera.DestinationType; 
    } 


    // Called when a photo is successfully retrieved 
    // 
    function onPhotoURISuccess(imageURI) { 
     // Uncomment to view the image file URI 
     alert(imageURI); 

     // Get image handle 
     // 
     var largeImage = document.getElementById('largeImage'); 

     // Unhide image elements 
     // 
     largeImage.style.display = 'block'; 

     // Show the captured photo 
     // The inline CSS rules are used to resize the image 
     // 
     largeImage.src = imageURI; 
    } 



    // A button will call this function 
    // 
    function getPhoto(source) { 
     // Retrieve image file location from specified source 
     navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
     destinationType: destinationType.FILE_URI, 
     sourceType: source,saveToPhotoAlbum:true }); 
    } 

    function getPhoto2(source) { 
     // Retrieve image file location from specified source 
     navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
     destinationType: destinationType.NATIVE_URI, 
     sourceType: source,saveToPhotoAlbum:true }); 
    } 
    // Called if something bad happens. 
    // 
    function onFail(message) { 
     alert('Failed because: ' + message); 
    } 

    </script> 

     </head> 
     <body id="content" style="display: none;"> 

     <button onclick="getPhoto(pictureSource.CAMERA);">Camera</button><br> 
     <button onclick="getPhoto2(pictureSource.CAMERA);">From Photo Album</button><br> 
     <img style="display:none;width:60px;height:60px;" id="smallImage" src="" /> 
     <img style="display:none;" id="largeImage" src="" /> 


      <!--application UI goes here--> 
      testProject 
      <script src="js/initOptions.js"></script> 
      <script src="js/testProject.js"></script> 
      <script src="js/messages.js"></script> 
     </body> 
</html> 
+0

這將看到你所寫的完整的JavaScript會更有趣。 –

+0

@IdanAdar請參閱問題詳情中的完整代碼。 –

回答

0

我不知道此刻爲什麼科爾多瓦就會盡管設置NATIVE_URI返回FILE_URI,但確實注意到它是鼓勵仍要使用FILE_URI:

http://docs.phonegap.com/en/2.6.0/cordova_camera_camera.md.html#camera.getPicture

注:圖片的圖像質量使用的相機拍攝較新的 設備是相當不錯的,即使指定了質量參數 ,來自相冊的圖像也不會被縮小爲較低質量的 。使用Base64對這些圖像進行編碼已在許多較新的設備上導致內存問題 。因此,強烈建議使用FILE_URI作爲 'Camera.destinationType'。


如果您堅持使用content://模式,這也許下面將幫助:Get content uri from file path in android

+0

我沒有在documentaion網站上看過這個筆記,但是file:// uri和content:// uri都是url,它不會導致我在這裏提到的問題。在我的項目中顯示我只是點擊相機,我需要一個內容://uri作爲文件://uri將給cros域名問題。 –

+0

我已經通過你粘貼的鏈接,但似乎這些解決方案都有本機代碼。我只想使用cordvoa API來獲取我的js代碼本身的內容:// uri。並根據文檔它提供了相同的,當我們在選項參數中使用NATIVE_URI。 –