4

phonegap-bootstrap在 GitHub 有一个项目——一个用 PhoneGap 2.9 编写的演示应用程序。我已经为 PhoneGap 支持的每个事件放置了事件处理程序。除了与电池相关的事件外,它们都可以毫无问题地触发。

我更加确定,这是因为缺少许可,但事实证明这是错误的假设。

所以......有人可以告诉我,以下代码有什么问题:

var app = 
{
    init: function()
    {
        document.addEventListener('deviceready', app.deviceReadyHandler, false);

        app.writeEventLog('app.init();');
    },

    deviceReadyHandler: function()
    {
        document.addEventListener('batterylow', app.batteryLowHandler, false);
        document.addEventListener('batterystatus', app.batteryStatusHandler, false);
        document.addEventListener('batterycritical', app.batteryCriticalHandler, false);
    },

    batteryLowHandler: function(info){app.batteryHandler('low', info);},
    batteryStatusHandler: function(info){app.batteryHandler('status', info);},
    batteryCriticalHandler: function(info){app.batteryHandler('critical', info);},

    batteryHandler: function(type, info)
    {
        $('#lblBatteryLevel').html(info.level + '%');
        $('#lblBatteryPlugged').html((info.isPlugged) ? 'yes' : 'no');

        app.writeEventLog('app.battery' + event + 'Handler(level = ' + info.level +', isPlugged = ' + info.isPlugged + ');');
    }
}

app.init();

出于某种原因,超出我的想象,PhoneGap Build 应用程序没有触发与电池相关的事件。而且只有那些与电池有关的。

电池相关事件永远不会被触发,并且“全局”(通用)电池处理程序(batteryHandler)中的代码永远不会被执行,因此lblBatteryLeveldivlblBatteryPlugged保持其初始值(“ [waiting] ”)。

并且所有其他事件处理程序都以完全相同的方式编码。声明于deviceReadyHandler

document.addEventListener('pause', app.pauseHandler, false);
document.addEventListener('resume', app.resumeHandler, false);
document.addEventListener('online', app.onlineHandler, false);
document.addEventListener('offline', app.offlineHandler, false);
document.addEventListener('menubutton', app.menuButtonHandler, false);
document.addEventListener('searchbutton', app.searchButtonHandler, false);

然后仅定义为日志写入事件:

/**
 * Demo purpose only events.
 */
pauseHandler: function(){app.writeEventLog('app.pauseHandler();');},
resumeHandler: function(){app.writeEventLog('app.resumeHandler();');},
onlineHandler: function(){app.writeEventLog('app.onlineHandler();');},
offlineHandler: function(){app.writeEventLog('app.offlineHandler();');},
menuButtonHandler: function(){app.writeEventLog('app.menuButtonHandler();');},
searchButtonHandler: function(){app.writeEventLog('app.searchButtonHandler();');},

除了电池相关的之外,所有这些都会着火。

我更加确定,这是因为缺少权限,但我三重检查,该行<feature name="http://api.phonegap.com/1.0/battery"/>已放在我的config.xml文件中。

我尝试在PhoneGap Build Get Satisfaction论坛上询问人们,但没有得到任何建议,这可能是什么问题。

我创建了一个jsFiddle,其中HTML部分包含我的整个config.xml文件,Javascript部分包含我的 Javascript 代码中的大部分部分,即与电池相关的部分。也许有人有一些时间,审查它。我在那里找不到任何错误,并且与电池相关的代码仍然无法正常工作。

4

3 回答 3

0

将电池状态插件添加到您的项目中。

打开命令提示符

cd your_project_dir

phonegap 本地插件添加 org.apache.cordova.battery-status

于 2014-11-05T23:09:53.277 回答
0

将所有内容放在 deviceReadyHandler 函数中。我认为电池事件甚至在设备准备好之前就被调用了。

于 2013-07-31T06:18:58.570 回答
0

phonegap-battery在 GitHub 上的存储库包含battery演示应用程序,它似乎正在运行

看起来,我已经解决了电池问题,虽然我现在不记得我做了什么来解决它。

我只记得,在 PhoneGap Build 社区/PGB GetSatisfaction 论坛的帮助下,我设法找到了问题所在,并修复了电池演示应用程序以使其完全可操作。

于 2014-05-28T07:08:22.453 回答