2

我使用 Build.PhoneGap 站点中的示例代码从手机中捕获图像并收到“无法调用未定义的方法 'getPicture'”错误。

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

完整示例的网址:

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>
4

3 回答 3

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>

万一其他人遇到此 build.phonegap 将匹配适当的 phonegap.js 文件到您的目标平台。

于 2012-08-01T17:36:11.677 回答
0

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

于 2013-07-10T06:29:42.247 回答
0

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

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

于 2013-08-26T22:58:51.880 回答