Содержание
Не зная состояния батареи устройства, веб-разработчик должен спроектировать веб-приложение с предположением о достаточном уровне заряда батареи для выполняемой задачи. Это означает, что батарея устройства может разряжаться быстрее, чем хотелось бы, потому что веб-разработчики не могут принимать решения на основе состояния батареи.
Care Вы заботитесь о задачах, связанных с батареей, при программировании веб-приложения?
Пожалуйста, поделитесь своим ответом с сообществом в поле для комментариев.
Во многих случаях этот API может быть полезен:
- Это может быть использовано для настройки использования ресурсов вашего приложения, чтобы уменьшить расход заряда батареи, когда батарея разряжена.
- Сохраните изменения в чем-то вроде редактора до того, как батарея разрядится, чтобы предотвратить потерю данных.
- Создайте классный виджет в вашем приложении, чтобы показать состояние батареи для вашего пользователя.
Давайте начнем !
Проверка доступности
Чтобы проверить, доступен ли API-интерфейс батареи в вашем браузере, используйте любое из следующих утверждений if:
if(typeof(navigator.getBattery) != "undefined"){
console.log("Available");
}
// Or
if("getBattery" in navigator){
console.log("Available");
}
Хотя Battery API не является относительно новым,
Источник: Могу ли я использовать.
И нет, для этого API нет доступного полифилла, как вы заполняете что-то, что требует доступа к оборудованию?.
Все, что вам нужно знать об API
Чтобы использовать Battery API, используйте следующий фрагмент:
navigator.getBattery().then(function(battery){
console.log(battery.charging); // Boolean
console.log(battery.chargingTime); // Infinity
console.log(battery.dischargingTime); // Infinity
console.log(battery.level ); // Float (0 to 1)
});
API батареи возвращает нативный Promise, что означает, что это асинхронный метод .
Battery API предоставляет информацию об уровне заряда батареи системы и позволяет получать уведомления о событиях, которые отправляются при изменении уровня заряда батареи или состояния зарядки.
-
charging
Атрибут представляет состояние зарядки батареи системы. -
chargingTime
Атрибут представляет время, оставшееся в секундах до полной зарядки батареи системы. -
dischargingTime
Атрибут представляет время, оставшееся в секундах до полной разрядки батареи системы и остановки системы. -
level
Атрибут представляет уровень заряда системы.
API дополнительно предоставляет 4 события для проверки изменения свойства.
onchargingchange | chargingchange |
onchargingtimechange | chargingtimechange |
ondischargingtimechange | dischargingtimechange |
onlevelchange | levelchange |
Вы можете легко добавить слушателей, используя:
navigator.getBattery().then(function(battery){
battery.onlevelchange = function(){
alert("The battery level has changed");
};
// Or
battery.addEventListener("levelchange",function(){
alert("The battery level has changed");
},false);
});
Как проверить, используете ли вы настольный компьютер
Хотя это не имеет смысла, API батареи также доступен на настольном компьютере, и нет никакого способа узнать, использует ли пользователь ноутбук или настольный компьютер, однако вы можете сделать «предположение» с помощью следующего фрагмента.
Вы можете проверить, используете ли вы настольный компьютер, проверяя, dischargingTime
свойство конечно или нет, и проверка, если charging
свойство имеет значение true.
navigator.getBattery().then(function(battery){
var desktopOrLaptopConnectedInfo = function(_battery){
if((_battery.charging === true) && !isFinite(_battery.dischargingTime)){
console.log("Desktop detected");
}
// or
//if((data.charging === true) && (data.dischargingTime == Infinity)){
// console.log("Desktop detected");
//}
};
// And you may want to check when again if is a laptop and the
// charging property changes
battery.addEventListener('chargingchange', function(){
desktopOrLaptopConnectedInfo(battery);
});
});
К сожалению, если пользователь использует ноутбук и отсоединяет зарядное устройство, то предположение не удастся, и вам потребуется добавить слушатель зарядки для проверки еще раз.
Замечания: Вы можете проверить в операторе if свойство уровня, равное 1 (что указывает на то, что «батарея» полностью заряжена), чтобы повысить точность как свойства chargingTime
а также dischargingTime
всегда равны бесконечности.