2016-12-12 5 views
5

私はnode.js webpackプロジェクトから作成したAndroid Appを持っています。私のアプリが眠らないようにする(Cordova/Android)

私の電話に私のアプリをインストールするとき、私はそれがスリープ状態になるとスリープすることに気付きます。例えば、私は呼び出されるのをやめるjavascriptタイマーを持っています:

pingTimer=setInterval(ping,pingInterval); 

for the 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

wakeLock

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

ためmanifest file許可を追加している示唆したように、あなたはあなたのような変更に応じて、以下を追加することができますMDNの動作では

を開き、lock.unlock();機能を使用してロックを解除します。

OR

あなたもconfigファイルに行われる変更は、ドキュメントに記載されているとして、それは単に

として、以下のように用いることができるプラグイン insomniaを使用することができコルドバアプリの場合
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 appがスリープ状態にならないようにする最も簡単な方法は、Insomnia-PhoneGap-Pluginを使用することです。このプラグインは、Android、iOS、Windowsなどのほとんどのプラットフォームでもサポートされています。

このプラグインは使いやすいです。プラグインの​​関数は、デバイスがスリープ状態になることを防ぎ、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デバイスの設定が「スリープしない」(アプリの実行中)の場合と同じです。

関連する問題