PhoneGap:设备API无法正常工作

时间:2015-07-07 08:56:12

标签: android cordova

我正在尝试使用PhoneGap创建可在Android,iOS和Windows Phone上运行的应用。目前,我只有Android手机,所以我不知道我在iOS和WP上是否存在问题。

我尝试了通知(警报,哔哔声和振动)和相机API。 我从Apache Cordova文档中获取了代码行。我在PhoneGap Built网站上构建了应用程序,扫描了条形码等。应用程序在手机上安装并完美启动但无效工作(例如,当我点击“Vibrate”链接时,它不会振动)。

安装和所有这些都是由我的导师完成的(我在船上),所以我猜这个部分没问题。 我检查了AndroidManifest.xml中的使用权限,没关系。

我一直在谷歌,论坛等搜索寻找答案,但到目前为止,我发现没有任何匹配或修复我的问题。这就是我发布这条消息的原因(请不要因为语言错误而非常注意,我不是英语母语者。)

提前感谢您的帮助。

编辑: 第一部手机:三星Galaxy Grand Plus(GT-I9060I),Android:4.4.4。 第二部手机:三星Galaxy S5 Prime(SM-G901F),Android:5.0.2

使用Cordova 5.0.0版。已经添加了必要的插件功能。

Apache Cordova文档中的通知代码:

<!DOCTYPE html>
 <html>
 <head>
    <title>Notification Example</title>

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

// Wait for PhoneGap to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
//
function onDeviceReady() {
    // Empty
}

// Show a custom alert
//
function showAlert() {
    navigator.notification.alert(
        'You are the winner!',  // message
        'Game Over',            // title
        'Done'                  // buttonName
    );
}

// Beep three times
//
function playBeep() {
    navigator.notification.beep(3);
}

// Vibrate for 2 seconds
//
function vibrate() {
    navigator.notification.vibrate(2000);
}

    </script>
  </head>
  <body>
   <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p>
   <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p>
   <p><a href="#" onclick="vibrate(); return false;">Vibrate</a></p>
 </body>

2 个答案:

答案 0 :(得分:0)

如果你有3.0.0之前的cordova版本,那么你必须在config.xml中手动包含插件,它位于resources文件夹中。 如果cordova版本是> = 3.0.0,那么您必须通过命令行包含这些本机功能。

您需要在OnDeviceReady()方法中提供诸如click,touchend,pagebeforeshow等事件。即你必须将侦听器注册到HTML元素,以便他们听取事件。

答案 1 :(得分:0)

似乎我没有使用正确版本的Apache Cordova Documention(5.0.0),而是使用旧版本。以下代码取自doc并且仅适用于vibrate(),而且再一次,playBeep()和showAlert()都没有发生任何事情。它没有意义。

我也尝试过Camera API(来自正确的doc版本)但它也没有用。我真的不明白为什么它可以振动而不是其他API。

<!DOCTYPE html>
<html>
    <head>
        <title>Notification Example</title>

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

         document.addEventListener("deviceready", onDeviceReady, false);
         function onDeviceReady() {
            console.log(navigator.notification);
            console.log(navigator.vibrate);
         }
         function alertDismissed() {
            alert('Dismissed');
         }
         function showAlert() {
            navigator.notification.alert(
                    'You are the winner!', // message
                    alertDismissed, // callback
                    'Game Over', // title
                    'Done'                  // buttonName
                    );
        }
        function playBeep() {
            navigator.notification.beep(2);
        }
        function vibrate() {
            navigator.vibrate(3000);
        }

    </script>
 </head>
    <body>
        <p><a href="#" onclick="showAlert();
            return false;">Show Alert</a></p>
        <p><a href="#" onclick="playBeep();
            return false;">Play Beep</a></p>
        <p><a href="#" onclick="vibrate();
            return false;">Vibrate</a></p>
    </body>
</html>