Dup Goto 📝

Battery_001

PT2/lang/js/android 09-01 19:49:43
To Pop
151 lines, 361 words, 3991 chars Tuesday 2026-09-01 19:49:43

Example here.

By Gemini

if ('getBattery' in navigator) {
  navigator.getBattery().then(function(battery) {
    // 1. Get initial battery details
    console.log("Battery Level: " + (battery.level * 100) + "%");
    console.log("Is Charging? " + (battery.charging ? "Yes" : "No"));

    // 2. Listen for level changes
    battery.addEventListener('levelchange', function() {
      console.log("Updated Level: " + (battery.level * 100) + "%");
    });

    // 3. Listen for charger plug/unplug
    battery.addEventListener('chargingchange', function() {
      console.log("Updated Charging Status: " + battery.charging);
    });
  }).catch(function(error) {
    console.error("Battery API error:", error);
  });
} else {
  console.log("Battery Status API is not supported in this browser/context.");
}

Full Example

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Android Battery Status Monitor</title>
  <style>
    body {
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      background-color: #f4f4f9;
      color: #333;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      margin: 0;
    }
    .card {
      background: #ffffff;
      padding: 2rem;
      border-radius: 12px;
      box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
      width: 90%;
      max-width: 360px;
      text-align: center;
    }
    h2 {
      margin-top: 0;
      color: #1a73e8;
    }
    .metric {
      margin: 1.5rem 0;
    }
    .metric-label {
      font-size: 0.9rem;
      color: #666;
      text-transform: uppercase;
      letter-spacing: 0.5px;
    }
    .metric-value {
      font-size: 2.5rem;
      font-weight: bold;
      margin-top: 0.2rem;
    }
    .charging-status {
      font-size: 1.1rem;
      font-weight: 500;
    }
    .unsupported {
      color: #d93025;
      font-weight: 500;
    }
  </style>
</head>
<body>

  <div class="card">
    <h2>Battery Monitor</h2>

    <div id="app">
      <div class="metric">
        <div class="metric-label">Battery Level</div>
        <div id="battery-level" class="metric-value">--%</div>
      </div>

      <div class="metric">
        <div class="metric-label">Status</div>
        <div id="charging-status" class="charging-status">Checking...</div>
      </div>
    </div>
  </div>

  <script>
    const levelEl = document.getElementById('battery-level');
    const statusEl = document.getElementById('charging-status');

    if ('getBattery' in navigator) {
      navigator.getBattery().then(function(battery) {

        // Helper function to update all fields
        function updateAllBatteryInfo() {
          updateLevelInfo();
          updateChargeInfo();
        }

        // Update charge level percentage
        function updateLevelInfo() {
          levelEl.textContent = Math.round(battery.level * 100) + '%';
        }

        // Update plugged in / unplugged state
        function updateChargeInfo() {
          if (battery.charging) {
            statusEl.textContent = '⚡ Charging';
            statusEl.style.color = '#1e8e3e';
          } else {
            statusEl.textContent = '🔋 On Battery';
            statusEl.style.color = '#333';
          }
        }

        // Initial setup
        updateAllBatteryInfo();

        // Real-time Event Listeners
        battery.addEventListener('levelchange', updateLevelInfo);
        battery.addEventListener('chargingchange', updateChargeInfo);

      }).catch(function(error) {
        statusEl.textContent = 'Unable to access battery data.';
        statusEl.className = 'unsupported';
      });
    } else {
      levelEl.textContent = 'N/A';
      statusEl.textContent = 'Battery API not supported or requires HTTPS.';
      statusEl.className = 'unsupported';
    }
  </script>

</body>
</html>