2016-12-12 66 views
5

我有一個Android應用程序,我從一個node.js webpack項目創建。停止我的應用程序從睡眠(科爾多瓦/ Android)

當我在我的手機上安裝我的應用程序時,我注意到它在睡眠時睡覺。因此,例如,我有一個JavaScript定時器,停止調用:

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 API

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();函數釋放鎖。

OR

對於科爾多瓦應用程序,你也可以使用插件insomniaconfig文件中所做的更改是在該文檔中提到,它可以通過以下方式來簡單地用作

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

防止您的cordova android應用程序進入睡眠的最簡單的選擇是使用Insomnia-PhoneGap-Plugin。該插件在Android,iOS和Windows等大多數平臺中也受支持。

這個插件很容易使用。​​函數在插件中防止設備進入睡眠狀態,並且函數調用允許設備再次進入睡眠狀態。你可以在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設備設置爲「永不睡眠」(而您的應用程序正在運行)。

相關問題