cordova - PhoneGap Build 应用程序不会触发与电池相关的事件

标签 cordova dom-events phonegap-build battery batterylevel

我有一个 phonegap-bootstrap project at 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 )中的代码永远不会被执行,因此 lblBatteryLevellblBatteryPlugged div 保持其初始值(“[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文件。

我试过 asking伙计们在 PhoneGap Build Get Satisfaction论坛,但没有任何建议,可能有什么问题。

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

最佳答案

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

关于cordova - PhoneGap Build 应用程序不会触发与电池相关的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781579/

相关文章:

javascript - Cordova/Phonegap 文件功能不起作用

Android Phonegap 数据库

android - Cordova 无法使用 x86_64 lib 文件夹构建 APK

javascript - 以编程方式触发鼠标松开

javascript - JavaScript 和 jQuery 中的单击源,人工还是自动?

android - Phonegap Android 启动画面不显示

android - 调试 PhoneGap 应用程序

javascript - 启动画面后 iPhone ChildBrowser 重定向

css - 如何在cordova元素中添加基本的UI组件?

javascript - Javascript 事件处理最佳实践?