SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Meetup Firefox OS – 12 Novembre 2015
API Battery Status
Meetup Firefox OS – 12 Novembre 2015
Christophe Villeneuve
@hellosct1
Meetup Firefox OS – 12 Novembre 2015
Qui ???
Christophe
Villeneuve
Meetup Firefox OS – 12 Novembre 2015
Aujourd'hui… ce sera !!!
● Battery
● … Batterie…
● … et encore un peu de B..…
● Bonus
Meetup Firefox OS – 12 Novembre 2015
Contrôle APPs
- Multitouch
- WebTelephony
- WebSMS
- Geolocalisation
- Battery API
- WebNFC
- WebVibration
- WebContacts
- FullScreen API
- Settings API
- WebUSB
- Camera
- WebBluetooth
- WebGL
Meetup Firefox OS – 12 Novembre 2015
Un matériel
● 1 téléphone se compose
couche API
– Touch
– Geolocation
– Motion
– Battery
– Network
– Proximity
– Vibration
– Alarm
– Simple push
– ...
● API base
– Contacts
– Camera
– TCP Sockets
– Device Storage
– Browser
● API certifié
– Bluetooth websms
permissions webfm,
time/clock
Meetup Firefox OS – 12 Novembre 2015
Quand on parle de Batterie
Meetup Firefox OS – 12 Novembre 2015
Vidéo
● Pour mesurer une batterie, voici la procédure
https://www.youtube.com/watch?v=FEITnTqmnL0
Meetup Firefox OS – 12 Novembre 2015
En résumé, il vous faut...
Meetup Firefox OS – 12 Novembre 2015
Mobile
Meetup Firefox OS – 12 Novembre 2015
Mais...
● Nous sommes dans…
– Internet / Web
– Http / https
– Mobile
– Smartphone
– Tablette
– Cloud / Nuage
– Etc...
● En vrai
Un monde de...
Meetup Firefox OS – 12 Novembre 2015
Problème
Comment effectuer les mesures avec tout cela ?
Meetup Firefox OS – 12 Novembre 2015
Les questions...
● Comment mesurer le niveau de la batterie ?
● Connaître autonomie ?
● Le temps de chargement ?
● Utilisation pendant le chargement ?
● Etc...
Meetup Firefox OS – 12 Novembre 2015
Meetup Firefox OS – 12 Novembre 2015
Solutions
● HTML 5
● Source importante pour un site web
● Avoir des informations sur le matériel des visiteurs
– Combien de batterie il vous reste
– Si vous utilisez un système mobile :
Smartphone, Tablette, Ordinateur portable
● But : économiser votre batterie
● Valider par W3C
Meetup Firefox OS – 12 Novembre 2015
W3C : Battery Status API (1/2)
● Fournir les informations sur l'état de la batterie de
l'appareil
● 3 Dates : 2012 / 2014 / 2015
● Concept
Meetup Firefox OS – 12 Novembre 2015
W3C : Battery Status API (2/2)
● Fev. 2012 : Battery Manager
● NavigatorBattery
● BatteryManager : Evénement de base
● Dec. 2014 : Navigation Battery
● Navigator
● BatteryManager : Gestion du temps, niveau chargement
● Aout 2015
● Navigator : Evolution
● BatteryManager : Evolution
Meetup Firefox OS – 12 Novembre 2015
Cas pratique : Gestion de la batterie
● https://github.com/franciov/low-energy-messenger
Meetup Firefox OS – 12 Novembre 2015
Le matériel donne les informations
● https://developer.mozilla.org/en-US/Apps/Build/gather_and_modify_data/retrieving_battery_status_information
Meetup Firefox OS – 12 Novembre 2015
Battery Manager
© W3C : http://www.w3.org/TR/2012/CR-battery-status-20120508/
Meetup Firefox OS – 12 Novembre 2015
4 fonctionnalités
Meetup Firefox OS – 12 Novembre 2015
Battery Manager
● Plusieurs Propriétés Disponible
● Obtenir les informations sur le niveau de charge
● Possibilité d'intéragir avec l'API d'état de la batterie
● 4 fonctions importantes
https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
Meetup Firefox OS – 12 Novembre 2015
BatteryManager.charging
● Statut de la batterie
Batterie en cours de charge ?
<div id="charging"></div>
<script>
var battery = navigator.battery;
battery.onchargingchange = function () {
document.querySelector('#charging')
.textContent = battery.charging ? 'Oui' : 'Non';
};
</script>
Meetup Firefox OS – 12 Novembre 2015
BatteryManager.chargingTime
● Temps restant de chargement (en secondes) → 100 %
Temps de chargement Restant :
<div id="chargingTime"></div>
<script>
var battery = navigator.battery;
battery.onchargingtimechange = function () {
document.querySelector('#chargingTime')
.textContent = parseInt(battery.chargingTime / 60, 10)
+ " Minutes";
}
</script>
Meetup Firefox OS – 12 Novembre 2015
BatteryManager.dischargingTime
● Temps restant avant que la batterie soit décharger
Autonomie restante ?
<div id="dischargingTime"></div>
<script>
var battery = navigator.battery;
battery.onchargingchange = function () {
document.querySelector('#dischargingTime')
.textContent = parseInt(battery.dischargingTime/60, 10)
+ " Minutes";
};
</script>
Meetup Firefox OS – 12 Novembre 2015
BatteryManager.level
● Niveau de la batterie (valeur entre 0 et 1.0)
Niveau de la batterie:
<div id="level"></div>
<script>
var battery = navigator.battery;
battery.onchargingchange = function () {
document.querySelector('#level')
.textContent = Math.round(battery.level * 100)
+ " %";
};
</script>
Meetup Firefox OS – 12 Novembre 2015
Gestion d'événements
● BatteryManager.onchargingchange
– Etat de charge est mis à jour
● BatteryManager.onchargingtimechange
– Etat de charge est mis à jour
● BatteryManager.ondischargingtimechange
– Etat de charge est mis à jour
● BatteryManager.onlevelchange
– Etat de charge est mis à jour
Meetup Firefox OS – 12 Novembre 2015
Navigator.battery
© W3C : http://www.w3.org/TR/2014/CR-battery-status-20141209/
Meetup Firefox OS – 12 Novembre 2015
Une seule fonctionnalité
Meetup Firefox OS – 12 Novembre 2015
Navigator.battery (1/2)
● HTML5
● Consomme moi de ressources
● Obtenir les informations sur le niveau de charge
● Possibilité de prévenir pour éviter la perte de
données
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery
Meetup Firefox OS – 12 Novembre 2015
GetBattery()
● Retourne les valeurs de BatteryManager()
<script>
navigator.getBattery().then(function(result) {});
</script>
// result:
BatteryManagery {
charging: false,
chargingTime: Infinity,
dischargingTime: 8940,
level: 0.59,
onchargingchange: null,
onchargingtimechange: null,
ondischargingtimechange: null,
onlevelchange: null
}
Meetup Firefox OS – 12 Novembre 2015
Battery Status API
© W3C : https://dvcs.w3.org/hg/dap/raw-file/default/battery/Overview.html
Meetup Firefox OS – 12 Novembre 2015
Battery Status API (1/2)
● Fournit les informations sur le niveau de charge du
système
● Permet d'envoyer des événements pour prévenir d'un
chargement du niveau de la charge de la batterie
● Permet d'ajuster la consommation d'une application et
la réduire
● Gère plusieurs batteries
– Exposer une vue unifiée des batteries
● Définit dans ECMASRIPT (Draft W3C 8 octobre 2015)
queue a task / fires a simple event / event handlers / event
handler event types / browsing context
https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
Meetup Firefox OS – 12 Novembre 2015
Battery Status API (2/2)
● Charging
– Retourne OUI si une batterie externe
● ChargingTime
– Retourne la somme restant de chargement de toutes les batteries
connectées
● DischargingTime
– Retourne la temps restant d'autonomie totales
● Level
– Moyenne de l'état de charge
https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
Meetup Firefox OS – 12 Novembre 2015
Evolution GetBattery()
● Retourne les valeurs de BatteryManager()
<script>
navigator.getBattery().then(function(result) {});
</script>
// result:
BatteryManagery {
charging: false,
chargingTime: Infinity,
dischargingTime: 8940,
level: 0.59,
onchargingchange: null,
onchargingtimechange: null,
ondischargingtimechange: null,
onlevelchange: null
}
Meetup Firefox OS – 12 Novembre 2015
Utilisation
<div id="charging">(charging state unknown)</div>
<div id="level">(battery level unknown)</div>
<div id="dischargingTime">(discharging time unknown)</div>
<script>
window.onload = function () {
function updateBatteryStatus(battery) {
document.querySelector('#charging').textContent = battery.charging ? 'charging' :
'not charging';
document.querySelector('#level').textContent = battery.level;
document.querySelector('#dischargingTime').textContent=battery.dischargingTime/60;
}
navigator.getBattery().then(function(battery) {
// Update the battery status initially when the promise resolves ...
updateBatteryStatus(battery);
// .. and for any subsequent updates.
battery.onchargingchange = function () {
updateBatteryStatus(battery);
};
battery.onlevelchange = function () {
updateBatteryStatus(battery);
};
battery.ondischargingtimechange = function () {
updateBatteryStatus(battery);
};
});
};
</script>
http://www.w3.org/TR/battery-status/#examples
Meetup Firefox OS – 12 Novembre 2015
Meetup Firefox OS – 12 Novembre 2015
Compatible avec les navigateurs
http://caniuse.com/battery-status
Meetup Firefox OS – 12 Novembre 2015
Hacking
Meetup Firefox OS – 12 Novembre 2015
Hacking
● API Battery Status ne donnent pas accès
– A vos données
– Ni aux empreintes digitales
● Stockées sur votre smartphone
Meetup Firefox OS – 12 Novembre 2015
Espionnage / surveillance
Meetup Firefox OS – 12 Novembre 2015
Surveillance / Vie Privée
● Les données des batteries peuvent être utiliser pour
vous traquer
● 2 informations (dispo toutes les 30 secondes) :
– Le niveau de charge de votre batterie en pourcentage
– Le temps restant avant que votre batterie ne soit
entièrement vide
● Alertes des chercheurs de sécurité
– Pas de validations et de confirmations
Meetup Firefox OS – 12 Novembre 2015
Exemple
Votre Ordinateur
Identifier votre
machine
Identifier votre
machine
Résultat :
Savoir quels sites vous
visitez simultanément
→ Ces données pourront
ensuite être exploitée
Meetup Firefox OS – 12 Novembre 2015
Solution
Ne pas être pisté
Meetup Firefox OS – 12 Novembre 2015
Procédure désactiver la batterie (1/2)
Meetup Firefox OS – 12 Novembre 2015
Procédure désactiver la batterie (2/2)
Meetup Firefox OS – 12 Novembre 2015
Bonus en Custom
Meetup Firefox OS – 12 Novembre 2015
Souvenez-vous…
Meetup Firefox OS – 12 Novembre 2015
Custom Firefox en batterie
1.0 0.66 0.33
0.10 0.05
0.02
Meetup Firefox OS – 12 Novembre 2015
Etape 1 : Affiche une image SVG
<html>
<head>
</head>
<body>
<img
src="Mozilla_Firefox_logo_2013.svg"
id="bg"
alt="Logo Mozilla Firefox">
</body>
</html>
Meetup Firefox OS – 12 Novembre 2015
Etape 2 : CSS
<style>
#bg
{
position:fixed;
top:0;
left:0;
width:100%;
height:100%;
}
</style>
Meetup Firefox OS – 12 Novembre 2015
Etape 3 : Javascript
<script>
var battery = navigator.battery || navigator.mozBattery ||
navigator.webkitBattery;
document.getElementById("bg").style.opacity = battery.level;
</script>
0 à 1.00 à 1.0
0 à 1.00 à 1.0
Meetup Firefox OS – 12 Novembre 2015
Démo
Bonus.html
Script exemple disponible : https://github.com/hellosct1/Firefoxos-api-battery-status
Meetup Firefox OS – 12 Novembre 2015
Autres idées Projets
● Jeux
● Utilitaires
● API avec une base de données (NoSQL, SQL…)
● Musiques
● Vidéo
● Etc...
Meetup Firefox OS – 12 Novembre 2015
Merci
● Source
– Francesco Lovine
– W3C
● Plus loin
– https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
Meetup Firefox OS – 12 Novembre 2015
● Liens :
http://firefoxos.mozfr.org
https://developer.mozilla.org/fr/
Questions ?

Contenu connexe

Similaire à Firefox OS - Api battery status

Le service workers
Le service workersLe service workers
Le service workersneuros
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Microsoft
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPATouchify
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Firefox OS de la théorie à la pratique - OSDC
Firefox OS de la théorie à la pratique - OSDCFirefox OS de la théorie à la pratique - OSDC
Firefox OS de la théorie à la pratique - OSDCChristophe Villeneuve
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...LeClubQualiteLogicielle
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1David Herviou
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Presentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedPresentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedTECOS
 

Similaire à Firefox OS - Api battery status (20)

Le service workers
Le service workersLe service workers
Le service workers
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Firefox OS de la théorie à la pratique - OSDC
Firefox OS de la théorie à la pratique - OSDCFirefox OS de la théorie à la pratique - OSDC
Firefox OS de la théorie à la pratique - OSDC
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
Presentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedPresentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamed
 
12-Factor
12-Factor12-Factor
12-Factor
 

Plus de Christophe Villeneuve

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 

Plus de Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 

Firefox OS - Api battery status

  • 1. Meetup Firefox OS – 12 Novembre 2015 API Battery Status Meetup Firefox OS – 12 Novembre 2015 Christophe Villeneuve @hellosct1
  • 2. Meetup Firefox OS – 12 Novembre 2015 Qui ??? Christophe Villeneuve
  • 3. Meetup Firefox OS – 12 Novembre 2015 Aujourd'hui… ce sera !!! ● Battery ● … Batterie… ● … et encore un peu de B..… ● Bonus
  • 4. Meetup Firefox OS – 12 Novembre 2015 Contrôle APPs - Multitouch - WebTelephony - WebSMS - Geolocalisation - Battery API - WebNFC - WebVibration - WebContacts - FullScreen API - Settings API - WebUSB - Camera - WebBluetooth - WebGL
  • 5. Meetup Firefox OS – 12 Novembre 2015 Un matériel ● 1 téléphone se compose couche API – Touch – Geolocation – Motion – Battery – Network – Proximity – Vibration – Alarm – Simple push – ... ● API base – Contacts – Camera – TCP Sockets – Device Storage – Browser ● API certifié – Bluetooth websms permissions webfm, time/clock
  • 6. Meetup Firefox OS – 12 Novembre 2015 Quand on parle de Batterie
  • 7. Meetup Firefox OS – 12 Novembre 2015 Vidéo ● Pour mesurer une batterie, voici la procédure https://www.youtube.com/watch?v=FEITnTqmnL0
  • 8. Meetup Firefox OS – 12 Novembre 2015 En résumé, il vous faut...
  • 9. Meetup Firefox OS – 12 Novembre 2015 Mobile
  • 10. Meetup Firefox OS – 12 Novembre 2015 Mais... ● Nous sommes dans… – Internet / Web – Http / https – Mobile – Smartphone – Tablette – Cloud / Nuage – Etc... ● En vrai Un monde de...
  • 11. Meetup Firefox OS – 12 Novembre 2015 Problème Comment effectuer les mesures avec tout cela ?
  • 12. Meetup Firefox OS – 12 Novembre 2015 Les questions... ● Comment mesurer le niveau de la batterie ? ● Connaître autonomie ? ● Le temps de chargement ? ● Utilisation pendant le chargement ? ● Etc...
  • 13. Meetup Firefox OS – 12 Novembre 2015
  • 14. Meetup Firefox OS – 12 Novembre 2015 Solutions ● HTML 5 ● Source importante pour un site web ● Avoir des informations sur le matériel des visiteurs – Combien de batterie il vous reste – Si vous utilisez un système mobile : Smartphone, Tablette, Ordinateur portable ● But : économiser votre batterie ● Valider par W3C
  • 15. Meetup Firefox OS – 12 Novembre 2015 W3C : Battery Status API (1/2) ● Fournir les informations sur l'état de la batterie de l'appareil ● 3 Dates : 2012 / 2014 / 2015 ● Concept
  • 16. Meetup Firefox OS – 12 Novembre 2015 W3C : Battery Status API (2/2) ● Fev. 2012 : Battery Manager ● NavigatorBattery ● BatteryManager : Evénement de base ● Dec. 2014 : Navigation Battery ● Navigator ● BatteryManager : Gestion du temps, niveau chargement ● Aout 2015 ● Navigator : Evolution ● BatteryManager : Evolution
  • 17. Meetup Firefox OS – 12 Novembre 2015 Cas pratique : Gestion de la batterie ● https://github.com/franciov/low-energy-messenger
  • 18. Meetup Firefox OS – 12 Novembre 2015 Le matériel donne les informations ● https://developer.mozilla.org/en-US/Apps/Build/gather_and_modify_data/retrieving_battery_status_information
  • 19. Meetup Firefox OS – 12 Novembre 2015 Battery Manager © W3C : http://www.w3.org/TR/2012/CR-battery-status-20120508/
  • 20. Meetup Firefox OS – 12 Novembre 2015 4 fonctionnalités
  • 21. Meetup Firefox OS – 12 Novembre 2015 Battery Manager ● Plusieurs Propriétés Disponible ● Obtenir les informations sur le niveau de charge ● Possibilité d'intéragir avec l'API d'état de la batterie ● 4 fonctions importantes https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
  • 22. Meetup Firefox OS – 12 Novembre 2015 BatteryManager.charging ● Statut de la batterie Batterie en cours de charge ? <div id="charging"></div> <script> var battery = navigator.battery; battery.onchargingchange = function () { document.querySelector('#charging') .textContent = battery.charging ? 'Oui' : 'Non'; }; </script>
  • 23. Meetup Firefox OS – 12 Novembre 2015 BatteryManager.chargingTime ● Temps restant de chargement (en secondes) → 100 % Temps de chargement Restant : <div id="chargingTime"></div> <script> var battery = navigator.battery; battery.onchargingtimechange = function () { document.querySelector('#chargingTime') .textContent = parseInt(battery.chargingTime / 60, 10) + " Minutes"; } </script>
  • 24. Meetup Firefox OS – 12 Novembre 2015 BatteryManager.dischargingTime ● Temps restant avant que la batterie soit décharger Autonomie restante ? <div id="dischargingTime"></div> <script> var battery = navigator.battery; battery.onchargingchange = function () { document.querySelector('#dischargingTime') .textContent = parseInt(battery.dischargingTime/60, 10) + " Minutes"; }; </script>
  • 25. Meetup Firefox OS – 12 Novembre 2015 BatteryManager.level ● Niveau de la batterie (valeur entre 0 et 1.0) Niveau de la batterie: <div id="level"></div> <script> var battery = navigator.battery; battery.onchargingchange = function () { document.querySelector('#level') .textContent = Math.round(battery.level * 100) + " %"; }; </script>
  • 26. Meetup Firefox OS – 12 Novembre 2015 Gestion d'événements ● BatteryManager.onchargingchange – Etat de charge est mis à jour ● BatteryManager.onchargingtimechange – Etat de charge est mis à jour ● BatteryManager.ondischargingtimechange – Etat de charge est mis à jour ● BatteryManager.onlevelchange – Etat de charge est mis à jour
  • 27. Meetup Firefox OS – 12 Novembre 2015 Navigator.battery © W3C : http://www.w3.org/TR/2014/CR-battery-status-20141209/
  • 28. Meetup Firefox OS – 12 Novembre 2015 Une seule fonctionnalité
  • 29. Meetup Firefox OS – 12 Novembre 2015 Navigator.battery (1/2) ● HTML5 ● Consomme moi de ressources ● Obtenir les informations sur le niveau de charge ● Possibilité de prévenir pour éviter la perte de données https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery
  • 30. Meetup Firefox OS – 12 Novembre 2015 GetBattery() ● Retourne les valeurs de BatteryManager() <script> navigator.getBattery().then(function(result) {}); </script> // result: BatteryManagery { charging: false, chargingTime: Infinity, dischargingTime: 8940, level: 0.59, onchargingchange: null, onchargingtimechange: null, ondischargingtimechange: null, onlevelchange: null }
  • 31. Meetup Firefox OS – 12 Novembre 2015 Battery Status API © W3C : https://dvcs.w3.org/hg/dap/raw-file/default/battery/Overview.html
  • 32. Meetup Firefox OS – 12 Novembre 2015 Battery Status API (1/2) ● Fournit les informations sur le niveau de charge du système ● Permet d'envoyer des événements pour prévenir d'un chargement du niveau de la charge de la batterie ● Permet d'ajuster la consommation d'une application et la réduire ● Gère plusieurs batteries – Exposer une vue unifiée des batteries ● Définit dans ECMASRIPT (Draft W3C 8 octobre 2015) queue a task / fires a simple event / event handlers / event handler event types / browsing context https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
  • 33. Meetup Firefox OS – 12 Novembre 2015 Battery Status API (2/2) ● Charging – Retourne OUI si une batterie externe ● ChargingTime – Retourne la somme restant de chargement de toutes les batteries connectées ● DischargingTime – Retourne la temps restant d'autonomie totales ● Level – Moyenne de l'état de charge https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
  • 34. Meetup Firefox OS – 12 Novembre 2015 Evolution GetBattery() ● Retourne les valeurs de BatteryManager() <script> navigator.getBattery().then(function(result) {}); </script> // result: BatteryManagery { charging: false, chargingTime: Infinity, dischargingTime: 8940, level: 0.59, onchargingchange: null, onchargingtimechange: null, ondischargingtimechange: null, onlevelchange: null }
  • 35. Meetup Firefox OS – 12 Novembre 2015 Utilisation <div id="charging">(charging state unknown)</div> <div id="level">(battery level unknown)</div> <div id="dischargingTime">(discharging time unknown)</div> <script> window.onload = function () { function updateBatteryStatus(battery) { document.querySelector('#charging').textContent = battery.charging ? 'charging' : 'not charging'; document.querySelector('#level').textContent = battery.level; document.querySelector('#dischargingTime').textContent=battery.dischargingTime/60; } navigator.getBattery().then(function(battery) { // Update the battery status initially when the promise resolves ... updateBatteryStatus(battery); // .. and for any subsequent updates. battery.onchargingchange = function () { updateBatteryStatus(battery); }; battery.onlevelchange = function () { updateBatteryStatus(battery); }; battery.ondischargingtimechange = function () { updateBatteryStatus(battery); }; }); }; </script> http://www.w3.org/TR/battery-status/#examples
  • 36. Meetup Firefox OS – 12 Novembre 2015
  • 37. Meetup Firefox OS – 12 Novembre 2015 Compatible avec les navigateurs http://caniuse.com/battery-status
  • 38. Meetup Firefox OS – 12 Novembre 2015 Hacking
  • 39. Meetup Firefox OS – 12 Novembre 2015 Hacking ● API Battery Status ne donnent pas accès – A vos données – Ni aux empreintes digitales ● Stockées sur votre smartphone
  • 40. Meetup Firefox OS – 12 Novembre 2015 Espionnage / surveillance
  • 41. Meetup Firefox OS – 12 Novembre 2015 Surveillance / Vie Privée ● Les données des batteries peuvent être utiliser pour vous traquer ● 2 informations (dispo toutes les 30 secondes) : – Le niveau de charge de votre batterie en pourcentage – Le temps restant avant que votre batterie ne soit entièrement vide ● Alertes des chercheurs de sécurité – Pas de validations et de confirmations
  • 42. Meetup Firefox OS – 12 Novembre 2015 Exemple Votre Ordinateur Identifier votre machine Identifier votre machine Résultat : Savoir quels sites vous visitez simultanément → Ces données pourront ensuite être exploitée
  • 43. Meetup Firefox OS – 12 Novembre 2015 Solution Ne pas être pisté
  • 44. Meetup Firefox OS – 12 Novembre 2015 Procédure désactiver la batterie (1/2)
  • 45. Meetup Firefox OS – 12 Novembre 2015 Procédure désactiver la batterie (2/2)
  • 46. Meetup Firefox OS – 12 Novembre 2015 Bonus en Custom
  • 47. Meetup Firefox OS – 12 Novembre 2015 Souvenez-vous…
  • 48. Meetup Firefox OS – 12 Novembre 2015 Custom Firefox en batterie 1.0 0.66 0.33 0.10 0.05 0.02
  • 49. Meetup Firefox OS – 12 Novembre 2015 Etape 1 : Affiche une image SVG <html> <head> </head> <body> <img src="Mozilla_Firefox_logo_2013.svg" id="bg" alt="Logo Mozilla Firefox"> </body> </html>
  • 50. Meetup Firefox OS – 12 Novembre 2015 Etape 2 : CSS <style> #bg { position:fixed; top:0; left:0; width:100%; height:100%; } </style>
  • 51. Meetup Firefox OS – 12 Novembre 2015 Etape 3 : Javascript <script> var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery; document.getElementById("bg").style.opacity = battery.level; </script> 0 à 1.00 à 1.0 0 à 1.00 à 1.0
  • 52. Meetup Firefox OS – 12 Novembre 2015 Démo Bonus.html Script exemple disponible : https://github.com/hellosct1/Firefoxos-api-battery-status
  • 53. Meetup Firefox OS – 12 Novembre 2015 Autres idées Projets ● Jeux ● Utilitaires ● API avec une base de données (NoSQL, SQL…) ● Musiques ● Vidéo ● Etc...
  • 54. Meetup Firefox OS – 12 Novembre 2015 Merci ● Source – Francesco Lovine – W3C ● Plus loin – https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API
  • 55. Meetup Firefox OS – 12 Novembre 2015 ● Liens : http://firefoxos.mozfr.org https://developer.mozilla.org/fr/ Questions ?