2012-04-16 205 views
1

我想在Android手机上使用phonegap捕捉图像。我尝试在Phonegap页面上发布的代码,但未出现相机。任何帮助表示赞赏。非常感谢。如何使用手机在Android手机上显示相机

这是显示我的手机

It is the display on my phone, there is no camera

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Capture Photo</title> 

    <script type="text/javascript" charset="utf-8" src="cordova-1.6.0.js"></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 onPhotoDataSuccess(imageData) { 
     // Uncomment to view the base64 encoded image data 
     // console.log(imageData); 

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

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

     // Show the captured photo 
     // The inline CSS rules are used to resize the image 
     // 
     smallImage.src = "data:image/jpeg;base64," + imageData; 
    } 

    // Called when a photo is successfully retrieved 
    // 
    function onPhotoURISuccess(imageURI) { 
     // Uncomment to view the image file URI 
     // console.log(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 capturePhoto() { 
     // Take picture using device camera and retrieve image as base64-encoded string 
     navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, 
     destinationType.DATA_URL }); 
    } 

    // A button will call this function 
    // 
    function capturePhotoEdit() { 
     // Take picture using device camera, allow edit, and retrieve image as base64-encoded string 
     navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true, 
     destinationType.DATA_URL }); 
    } 

    // 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 }); 
    } 

    // Called if something bad happens. 
    // 
    function onFail(message) { 
     alert('Failed because: ' + message); 
    } 

    </script> 
    </head> 
    <body> 
    <button onclick="capturePhoto();">Capture Photo</button> <br> 
    <button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br> 
    <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br> 
    <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br> 
    <img style="display:none;width:60px;height:60px;" id="smallImage" src="" /> 
    <img style="display:none;" id="largeImage" src="" /> 
    </body> 
</html> 
+0

你怎么在“亚行logcat”看到当你点击相机按钮中的一个? – 2012-04-16 18:57:01

+0

谢谢,我解决了这个问题。我尝试Phonegap1.0.0,它的工作原理。我不知道为什么。 Phonegap1.6有什么问题吗? – 2012-04-17 09:13:22

+0

这将是很好,找出什么问题在1.6。你可以做logcat步骤吗? – 2012-04-17 14:23:56

回答

0

对你添加的权限和相机功能在您AndroidMenifest文件? 如果你没有添加,然后再试一次。

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

无论您capturePhoto()capturePhotoEdit()功能需要有destinationType更新。

navigator.camera.getPicture(
    onPhotoDataSuccess, 
    onFail, 
    { 
     quality: 50, 
     destinationType.DATA_URL 
    } 
); 

应该是这样的,

navigator.camera.getPicture(
    onPhotoDataSuccess, 
    onFail, 
    { 
     quality: 50, 
     destinationType: destinationType.DATA_URL 
    } 
); 
0

在你的代码改变科尔多瓦版本。 现在你有“cordova-1.6.0.js” 你应该把它改为“cordova-2.5.0.js” 我认为它会在那之后起作用。 这样

<script type="text/javascript" charset="utf-8" src="cordova-2.5.0.js"></script> 
0

我一直有同样的问题,我已经得到了getPhoto()函数现在的工作,但仍无法获得cameraPhoto()或cameraPhotoEdit()函数工作。我已经做了几乎所有的事情在这篇文章中多听。

哦,你可以尝试这里列出的一些解决方案:

Phonegap Camera API Cannot Read Property data url of undefined