使用Build.PhoneGap.com与Android设备导致'无法调用方法'getPicture'的未定义'

时间:2012-08-01 13:41:50

标签: android mobile cordova

我使用Build.PhoneGap网站上的示例代码从手机中捕获图像,然后获得一个"无法调用方法' getPicture'未定义"错误。

在index.html和以下config.xml中使用以下示例代码我将压缩目录上传到PhoneGap,在Thunderbolt Android设备上安装该应用程序,并在' navigator.camera中的try catch中安装。 Getpicture中' capturePhoto()函数的一部分我得到了错误。有谁知道这可能会发生什么?提前谢谢。

完整示例的网址:

  

http://docs.phonegap.com/en/1.0.0/phonegap_camera_camera.md.html

索引代码(不予评论):

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

    <script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" charset="utf-8">

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

    document.addEventListener("deviceready",onDeviceReady,false);

    function onDeviceReady() {
        pictureSource=navigator.camera.PictureSourceType;
        destinationType=navigator.camera.DestinationType;
    }

    function onPhotoDataSuccess(imageData) {
      var smallImage = document.getElementById('smallImage');
      smallImage.style.display = 'block';
      smallImage.src = "data:image/jpeg;base64," + imageData;
    }

    function onPhotoURISuccess(imageURI) {
      var largeImage = document.getElementById('largeImage');
      largeImage.style.display = 'block';
      largeImage.src = imageURI;
    }

    function capturePhoto() {
      try
      { //this throws the error
        navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50 });
      } catch(exc){
        alert(exc.message);
      }
    }

    function capturePhotoEdit() {
      navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true }); 
    }

    function getPhoto(source) {
      navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
        destinationType: destinationType.FILE_URI,
        sourceType: source });
    }

    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>

配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
    <widget xmlns = "http://www.w3.org/ns/widgets"
        xmlns:gap = "http://phonegap.com/ns/1.0"
        id        = "com.phonegap.SampleImg"
        versionCode="10" 
        version   = "1.1.0">

    <!-- versionCode is optional and Android only -->

    <name>PhoneGap SampleImg</name>

    <description>
        An SampleImg for phonegap build docs. 
    </description>

    <author href="https://build.phonegap.com" email="myemail@somedomain.com">
        My Name
    </author>
    <!-- to enable individual permissions use the following examples -->
<feature name="http://api.phonegap.com/1.0/battery"/>
<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/contacts"/>
<feature name="http://api.phonegap.com/1.0/file"/>
<feature name="http://api.phonegap.com/1.0/geolocation"/>
<feature name="http://api.phonegap.com/1.0/media"/>
<feature name="http://api.phonegap.com/1.0/network"/>
<feature name="http://api.phonegap.com/1.0/notification"/>

</widget>

3 个答案:

答案 0 :(得分:3)

原来你需要有这个参考

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

而不是

<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>

如果有其他人遇到此版本,则会将相应的phonegap.js文件与您定位的平台相匹配。

答案 1 :(得分:0)

http://phonegap.com/download/安装cordova的最新版本并添加到您的文件中。我希望你的问题得到解决。对于科尔多瓦的旧版本,这个方面可能不会支持。

答案 2 :(得分:0)

@Kevin Shah - phonegap.js不是您需要下载或包含在目录中的文件。根据您的应用程序所针对的平台(iOS,Adroid等),phonegap将为您插入正确的“phonegap.js”文件。他们这样做是因为每个平台的行为都不同 - 所以他们需要不同的.js文件。

您需要做的就是包含通用脚本点击,它会自动指向phonegap为所需平台插入的正确文件。