Можно ли обнаружить устройство с батарейным питанием в javascript? - PullRequest
3 голосов
/ 06 марта 2012

Клиент недавно попросил меня создать слайд-шоу на нашем сайте.Я обеспокоен тем, что постоянно анимируемые переходы изображений на главной странице будут привязывать процессор большинства мобильных устройств, поэтому я хочу отключить автоматическое продвижение, чтобы сохранить время автономной работы.Есть ли способ сделать это, не пытаясь обнаружить пользовательский агент?

Я видел, что есть API состояния батареи, составленный здесь , но я не знаю, как это завершитьесть, или в каких браузерах это реализовано.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2015

Теперь вы можете с этим API: http://davidwalsh.name/javascript-battery-api

navigator.getBattery().then(function(result) {});
2 голосов
/ 06 марта 2012

На самом деле определение батареи будет довольно сложным и, вероятно, связано с различными проблемами с разрешениями.

Попробуйте просто выполнить небольшой фрагмент кода и проверить, сколько времени это заняло.Выберите отсечение и, если код выполняется слишком медленно, отключите переходы / анимация / автоадрес.Это поймает больше, чем просто устройства батареи;что-нибудь слишком медленное получит неанимированную версию.Изящно ухудшаться.

1 голос
/ 12 февраля 2015

Еще одна старая тема, но все еще актуальная - теперь я проверяю, есть ли у устройства датчики движения, не так много ноутбуков, но все современные смартфоны и планшеты имеют - так что пользователи ноутбуков могут жить с немного большим расходом батареи -

JQuery:

if (window.DeviceOrientationEvent) {
    $(window).one("devicemotion", function(event) {
        if (event.originalEvent.acceleration
                && event.originalEvent.acceleration.x !== null) { // Chrome fakes it on desktop
            isMobile = true;
        }
    });
}

Простой Javascript:

if (window.DeviceOrientationEvent) {
    window.ondevicemotion = function(event) {
        if (event.acceleration
                && event.acceleration.x !== null) { // Chrome fakes it on desktop
            window.ondevicemotion = null;
            isMobile = true;
        }
    };
}
...