萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> Html5 >> HTML5的一個顯示電池狀態的API簡介

HTML5的一個顯示電池狀態的API簡介

   移動設備的份額在網絡流量中在大量增長,其所貢獻的網絡流量非常龐大,以至於為了移動設備,我們單獨創建了一些API和設計理念。一個非常典型的例子是 W3C電池狀態API,它允許一個應用程序獲知設備的電池狀態信息。這篇文章探索了這個新的API,為你展示了如何把它整合進你現有的應用程序。

  檢測設備是否支持

  目前電池API依舊沒有得到主流支持。因此,在使用這個API前需要確認當前設備是否支持此API。下面展示的函數返回一個布恩值(True/False),指示當前浏覽器是否支持電池狀態API。

  該函數首先檢測了 navigator.battery 對象是否存在。如果不存在,繼續檢測 Mozilla 專用的

  navigator.mozBattery是否存在。我曾經見過有些代碼還檢測了 webkitBattery對象,但是我無法證實其在Chrome中是否存在。

  參考文檔:https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery

  XML/HTML Code復制內容到剪貼板

  functionisBatteryStatusSupported() {

  return!!(navigator.battery || navigator.mozBattery);

  }

  檢查電池

  如果電池對象存在,它會包含下列四個只讀屬性。

  charging —— (布恩值)指示系統的電池當前是否正在充電。

  如果系統不存在電池,或無法確定電池是否在充電,返回值是 True

  chargingTime —— (數值)電池完全充滿電量所需的時間(單位:秒)

  當電池完全被充滿電時,或者系統不存在電池時,這個值為0。

  如果系統不在充電,或者無法確定完全充滿電所需時間,這個值為∞(無窮大)。

  dischargingTime —— 和chargingTime相似,(數值)到電池完全放電直到系統休眠剩余的時間(單位:秒)

  如果放電時間無法確定,或 系統沒有電池 或 系統正在充電,這個值為 ∞ (無窮大)

  level —— (數值) 設備當前電量等級。取值在(0 ~ 1.0)區間,與剩余電量百分比對應。

  1.0表示電池完全充滿電,或者不存在電池,或者數值無法確定。

  檢測電池事件

  上述所有屬性都與一個電池事件綁定。這些事件用來指示電池狀態的變化。比如,插入電源會使charging屬性從false變為true。全部四種電池事件如下所列:

  chargingchange —— 這個類型的事件會在charging屬性改變時觸發。這個事件可以被 onchargingchange()事件處理器捕獲和處理。

  chargingtimechange —— 這個類型的事件會在chargingtime屬性改變時觸發。這個事件可以被 onchargingtimechange()事件處理器捕獲和處理。

  dischargingtimechange —— 這個類型的事件會在dischargingTime屬性改變時觸發。這個事件可以被 ondischargingtimechange()事件處理器捕獲和處理。

  levelchange —— 這個類型的事件會在level屬性改變時觸發。這個事件可以被 onlevelchange()事件處理器捕獲和處理。

  示例頁面

  下面的代碼展示了如何使用 電池狀態API 的屬性和事件。

  示例頁面顯示了API的各個屬性值,並且在事件觸發時更新它們的值。

  點擊此處訪問在線示例。

XML/HTML Code復制內容到剪貼板

 

  1. <!DOCTYPE html>
  2. <htmllanghtmllang="en">
  3. <head>
  4. <title>The Battery Status API - Example</title>
  5. <metacharsetmetacharset="UTF-8"/>
  6. <script>
  7. window.addEventListener("load", function() {
  8. var battery = navigator.battery || navigator.mozBattery;
  9. function displayBatteryStats() {
  10. document.getElementById("charging").textContent = (battery.charging) ? "charging" : "not charging";
  11. document.getElementById("chargingtime").textContent = battery.chargingTime;
  12. document.getElementById("dischargingtime").textContent = battery.dischargingTime;
  13. document.getElementById("level").textContent = battery.level * 100;
  14. }
  15. if (battery) {
  16. displayBatteryStats();
  17. battery.addEventListener("chargingchange", displayBatteryStats, false);
  18. battery.addEventListener("chargingtimechange", displayBatteryStats, false);
  19. battery.addEventListener("dischargingtimechange", displayBatteryStats, false);
  20. battery.addEventListener("levelchange", displayBatteryStats, false);
  21. } else {
  22. document.getElementById("stats").textContent = "Sorry, your browser does not support the Battery Status API";
  23. }
  24. }, false);
  25. </script>
  26. </head>
  27. <body>
  28. <dividdivid="stats">
  29. Your battery is currently <spanidspanid="charging"></span>.<br/>
  30. Your battery will be charged in <spanidspanid="chargingtime"></span> seconds.<br/>
  31. Your battery will be discharged in <spanidspanid="dischargingtime"></span> seconds.<br/>
  32. Your battery level is <spanidspanid="level"></span>%.
  33. </div>
  34. </body>
  35. </html>

  結論

  本文為Battery Status API給出了一個完整的總結和展示,盡管其仍未得到主流支持,但是這只是時間問題。考慮到移動互聯網的激增,開發者應該盡快將電池信息納入設計范疇內。

copyright © 萬盛學電腦網 all rights reserved