2013年7月16日火曜日

バッテリーの情報を取得する

アプリで端末のバッテリー情報を取得します。
以下のWebAPIを使用します。

Battery Status API
https://developer.mozilla.org/ja/docs/WebAPI/Battery_Status


取得可能な情報:
バッテリの残量(レベル)、
充電中かどうか
充電中完了までの時間
電池が空っぽになるまでの時間


アプリの表示部分

次のようにHTMLで表示します。

 
<body onload="onLoad()">
  <div id="charging">(charging state unknown)</div>
  <div id="chargingTime"></div>
  <div id="dischargingtime"></div>
  <div id="level"></div>
</body>



JavaScriptでWebAPIを使う

HTMLのbodyタグから、次のJavaScriptを実行させるようにしました。


 
// <body>のonloadにセット
/*
interface BatteryManager : EventTarget {
    readonly    attribute boolean             charging;
    readonly    attribute unrestricted double chargingTime;
    readonly    attribute unrestricted double dischargingTime;
    readonly    attribute double              level;
                attribute EventHandler        onchargingchange;
                attribute EventHandler        onchargingtimechange;
                attribute EventHandler        ondischargingtimechange;
                attribute EventHandler        onlevelchange;
};
*/
function onLoad(){
    var battery = navigator.battery;

    updateBatteryInfo();
    // add Listener
    battery.addEventListener("chargingchange", updateBatteryInfo, false);
    battery.addEventListener("chargingTime", updateBatteryInfo, false);
    battery.addEventListener("dischargingtimechange", updateBatteryInfo, false);
    battery.addEventListener("levelchange", updateBatteryInfo, false);

    // set text
    function updateBatteryInfo(){
        document.querySelector('#charging').textContent = battery.charging ? 'charging' : 'not charging';
        document.querySelector('#chargingTime').textContent = battery.chargingTime;
        document.querySelector('#dischargingtime').textContent = battery.dischargingTime;
        document.querySelector('#level').textContent = battery.level * 100 +"%";
    }
}


不要になったタイミングで、battery.removeEventListenerをコールし、リスナー解除を行いましょう。
FirefoxOs内の次のプログラムが非常に参考になります。

Gaia層(Settingアプリのソース)
 \gaia\apps\settings\js

0 件のコメント:

コメントを投稿