4

phonegap-bootstrapGitHubにプロジェクトがあります。これは、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) 内のコードは実行されないためlblBatteryLevellblBatteryPluggeddiv は初期値のままです (" [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();');},

バッテリー関連のものを除いて、それらはすべて発火します。

これは許可がないためだと確信していましたが、3回チェックしたところ、その行がファイル<feature name="http://api.phonegap.com/1.0/battery"/>に配置されました。config.xml

PhoneGap Build Get Satisfactionフォーラムで質問してみましたが、アドバイスは得られませんでした。

一部にはファイル全体が含まれ、一部にはバッテリーに関連するJavascriptコードのほとんどの部分が含まれています。多分誰かがそれを見直して、少し時間ができます。私はそこに間違いを見つけることができず、バッテリー関連のコードはまだ機能していません.HTMLconfig.xmlJavascript

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 に答える