2016-12-12 6 views
5

У меня есть приложение для Android, которое я создаю из проекта node.js webpack.Остановить мое приложение от сна (Cordova/Android)

Когда я устанавливаю свое приложение на свой телефон, я замечаю, что он спит, когда телефон спит. Так, например, у меня есть яваскрипт таймер, который прекращает получать называется:

pingTimer=setInterval(ping,pingInterval); 

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

UPDATE

Я следовал инструкциям, как описано здесь:

http://www.greenbot.com/article/2993199/android/how-to-turn-off-doze-mode-for-specific-apps-in-android-marshmallow.html

, но не повезло.

+1

Проблема, которая может возникнуть при использовании режима дозировки или экономии заряда батареи. Вам нужно, чтобы ваш конечный пользователь отредактировал настройку приложения и не разрешил дозу. Нет, вы не можете сделать это программно. – Eric

ответ

7

Самый лучший вариант для вас, чтобы использовать это WakeLock апи

Добавить разрешение в manifest file для wakeLock

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

, то вы можете добавить следующее в соответствии с вашими модификациями вроде как предложено в поведении MDN

function forPingTimer(){ 
var lock = window.navigator.requestWakeLock('screen'); 
//set timeout or until the timer expires 
} 

и отпустите замок, используя функцию lock.unlock();.

ИЛИ

Для приложения Cordova вы также можете использовать плагин insomnia изменения, которые будут сделаны в файле config являются, как указано в документации, и это может быть просто использован следующим образом, как

function forPingTimer(){ 
//as long as the app runs or set the timeout here or wrap it in a promise 
//Simply calling window.plugins.insomnia.keepAwake() to keep awake 
} 
//window.plugins.insomnia.allowSleepAgain() to sleep again until the timer after the timer is fulfilled 
4

Самый простой способ предотвратить спаривание вашего андроида от кордоны - использовать плагин Insomnia-PhoneGap. Этот плагин также поддерживается на большинстве платформ, таких как Android, iOS и windows.

Этот плагин прост в использовании. keepAwake Функция в плагине не позволяет устройству спать и allowSleepAgain вызов функции позволяет устройству снова спать. Вы можете найти дополнительную информацию об official insomnia plugin link.

Надеюсь, это поможет. Приветствия.

0

Для простоты синтаксиса установите плагин cordova-plugin-insomnia. Затем включите простой интервальный таймер в вашем коде:

// start an interval timer 
var mainloopid = setInterval(mainloop, 1000); 
function mainloop { 
    // call the plugin every (say) one second to keep your app awake 
    window.plugins.insomnia.keepAwake(); 
} 

Вы должны вызывать метод keepAwake плагина периодически (., По крайней мере, прежде чем устройство хочет, чтобы спать) Это является обязательным для всех часов отображения и интервал таймер может быть частью вашего таймера, который используется для обновления секунд в часах. Это решение переопределяет настройку на вашем устройстве, которая говорит, например, «спать через 15 секунд». Это эквивалентно настройке Android-устройства, которая «никогда не сна» (пока приложение работает).

Смежные вопросы