Le API per il controllo dello stato della batteria rientrano tra le specifiche di HTML5 relative all'accesso da parte del browser delle caratteristiche hardware e di sistema del dispositivo (System Information API, http://www.w3.org/TR/system-info-api/).
La possibilità di conoscere programmaticamente lo stato di carica della batteria ci consente di adattare le funzionalità dell'applicazione ad eventuali situazioni di criticità, ad esempio disabilitando animazioni grafiche accessorie che richiedono un consumo elevato di energia o invitando l'utente a eseguire determinata azioni specifiche o a operare un salvataggio automatico dei dati per preservare lo stato in caso di spegnimento.
Le specifiche, ancora in via di definizione, sono disponibili all'indirizzo http://www.w3.org/TR/battery-status/
Al momento il supporto a queste API è decisamente ridotto ma, il solo fatto che il W3C contempli funzionalità di questo tipo per i moderni browser, è indicativo delle potenzialità che intende raggiungere HTML5 nel prossimo futuro.
Possiamo accedere alle informazioni relative alla batteria attraverso l'oggetto navigator.battery che espone ad esempio le proprietà:
- charging che indica se la batteria è (oppure no) attualmente in carica;
- chargingTime che indica il tempo stimato (in secondi) perché la carica venga completata;
- dischargingTime che indica il tempo stimato (in secondi) di durata residua della batteria prima che il sistema venga sospeso;
- level che indica il livello di carica residua della batteria, con un valore compreso tra 0 (completamente scarica) e 1.0 (carica al 100%).
È possibile mantenere sotto controllo i valori indicati qui sopra durante l'esecuzione dell'applicazione intercettando gli eventi corrispondenti (onchargingchange, onchargingtimechange, ondischargingtimechange e onlevelchange).
Al momento possiamo provare concretamente queste interfaccie attraverso l'implementazione specifica fornita dalle ultime versioni di Firefox, come mostrato nell'esempio seguente:
function checkBattery() { var battery = navigator.battery; // W3C standard API if (!battery) battery = navigator.mozBattery; // Mozilla specific API if (!battery) // Battery Status API not supported { alert("Il tuo browser non supporta Battery Status API"); return; } var batteryStatus = "Livello di carica della batteria: " + Math.round(battery.level * 100) + "% - " + ((battery.charging) ? "in carica" : "non in carica"); alert(batteryStatus); } checkBattery();
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Impostare il tema light o dark utilizzando i CSS
Gestire errori temporanei in una comunicazione gRPC con ASP.NET Core 6
Migliorare l'accessibilità tramite l'attributo aria-live
Gestire aree contestuali in un'applicazione Blazor
Introduzione a Azure Container Apps
Creare Higher-Order functions in JavaScript
Eseguire uno scroll all'interno di una pagina Blazor
Utilizzare le Promise in Javascript - seconda parte
Ottimizzare le performance di serializzazione e deserializzazione JSON con System.Text.Json e i source generators
Log streaming di una Azure Container App
Utilizzare proprietà di tipo DateOnly con EF Core 6
Terraform, Vue.js e Aws CloudFront
I più letti di oggi
- Monitorare contemporaneamente i cambiamenti di più proprietà dello scope di AngularJS
- "welcome to the modern web development" con @dbochicchio e @kasuken, ora live per iniziare #PWAConfIT parleremo di #PWA e di come costruire applicazioni web moderne per tutto il pomeriggio. Seguiteci live su https://aspit.co/PWAConf-20 #aspilive
- Sfruttare le dipendenze con il model binding di ASP.NET Web Forms
- rilasciato #vs2017.5, con importanti aggiornamenti sulla velocità di caricamento dei progetti, supporto a C# 7.2 e nuove feature di Xamarin.disponibile inoltre anche #VS for #Mac, con sign integrato delle app iOS.altre informazioni su https://aspit.co/bkk
- Disabilitare un pulsante in Blazor durante il salvataggio