0

熟悉 Phonegap 后,我偶然发现了这个我无法评估(或者可以,有点)的错误。

因此,我想制作一个带有按钮的 HTML 页面,该按钮允许使用设备相机捕获图像(使用移动设备),我想没什么特别的。

我从 Phonegap 的文档中获取了基本代码,这就是我的页面的样子:

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

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

    // Called when capture operation is finished
    //
    function captureSuccess(mediaFiles) {
        var i, len;
        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
            uploadFile(mediaFiles[i]);
        }       
    }

    // Called if something bad happens.
    // 
    function captureError(error) {
        var msg = 'An error occurred during capture: ' + error.code;
        navigator.notification.alert(msg, null, 'Uh oh!');
    }

    // A button will call this function
    //
    function captureImage() {
        // Launch device camera application, 
        // allowing user to capture up to 2 images
        navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 2});
    }

    // Upload files to server
    function uploadFile(mediaFile) {
        var ft = new FileTransfer(),
            path = mediaFile.fullPath,
            name = mediaFile.name;

        ft.upload(path,
            "http://my.domain.com/upload.php",
            function(result) {
                console.log('Upload success: ' + result.responseCode);
                console.log(result.bytesSent + ' bytes sent');
            },
            function(error) {
                console.log('Error uploading file ' + path + ': ' + error.code);
            },
            { fileName: name });   
    }

    </script>
    </head>
    <body>
        <button onclick="captureImage();">Capture Image</button> <br>
    </body>
</html>

尝试一下(在我的电脑上),我收到以下错误:

  • XMLHttpRequest 无法加载 file:///C:/Users/toshiba/Desktop/test%20camera/cordova_plugins.json。仅 HTTP 支持跨源请求。

  • 未捕获的类型错误:无法读取未定义的属性“捕获”

第一个错误与一些不存在的cordova_plugins.json相关,实际上它不存在。据我了解:您需要使用phonegap 就是cordova js(在我的例子中是plugin_loader.js,根据我在互联网上找到的建议进行了一些修改以帮助解决我的问题,但没有奏效......) .

第二个错误与以下行有关:

navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 2});

但我猜这在计算机上是正常的,这不是“移动意义上的”设备。

我也在两台移动设备上进行了试用,但失败了。

我有我的 JS 文件,所以我的问题如下:是否有必要使用 HTML5 开发哪个 Phonegap,然后编译为其他特定平台的本机文件才能工作?我希望不是,因为我想在 web-app 模式下工作,或者我的问题与一些丢失的文件有关,如果是这样:我在哪里可以找到功能最可靠的 cordova js 文件?

编辑:我还认为,在计算机上,故障与无法从中检索设备规格和(因此)相机功能(?!)的导航器有关,这在计算机上,但在手机上也可能如此(手机的导航器也有同样的问题)。

我希望你能容忍我,因为我是新手,并提前感谢。

4

1 回答 1

0

我对这个问题找到的最明确的答案不是技术性的,而是“分类”的:你不能在 HTML5 上使用 PhoneGap,因为你不能把它留给 HTML。您所做的是在 HTML5 上编写,但构建(并且您必须构建)某种原生平台格式(例如 .apk)。

否则,我发现您可以利用一些方法来处理 HTML5 的媒体功能,这无疑需要一些开发,但这仍然是一个开始。

于 2013-05-24T13:15:58.167 回答