2016-12-12 26 views
5

मेरे पास एक एंड्रॉइड ऐप है जिसे मैं node.js वेबपैक प्रोजेक्ट से बनाता हूं।मेरा ऐप सोने से रोकें (कॉर्डोवा/एंड्रॉइड)

जब मैं अपने फोन पर अपना ऐप इंस्टॉल करता हूं तो मुझे लगता है कि फोन सोते समय सो जाता है। तो उदाहरण के लिए, मेरे पास एक जावास्क्रिप्ट टाइमर है जो कॉलिंग हो रहा है:

pingTimer=setInterval(ping,pingInterval); 

पिंग इंटरवल के लिए। मैं अपने ऐप को सोने से कैसे रोकूं? आखिरकार, मैं चाहता हूं कि मेरा ऐप सो जाए, लेकिन अब सोने से फोन को रोकना मेरा सबसे अच्छा विकल्प है।

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

लेकिन कोई भाग्य के साथ:

अद्यतन

मैं के रूप में यहाँ वर्णित निर्देशों का पालन किया।

+1

आपके पास जो समस्या हो सकती है वह डोज मोड या बैटरी बचत है। आपको अपना अंतिम उपयोगकर्ता ऐप सेटिंग संपादित करने की आवश्यकता है और डोज़ की अनुमति नहीं देता है। नहीं, आप प्रोग्रामेटिक रूप से ऐसा नहीं कर सकते हैं। – Eric

उत्तर

7

आप उपयोग करने के लिए सबसे अच्छा विकल्प की तरह के रूप में सुझाव दिया है WakeLock एपीआई

wakeLock

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

के लिए manifest file में अनुमति जोड़े तो आप निम्न अपने संशोधनों के अनुसार जोड़ सकते हैं MDN व्यवहार

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

और lock.unlock(); फ़ंक्शन का उपयोग कर लॉक को रिलीज़ करें।

या

कॉर्डोबा एप्लिकेशन के लिए आप भी प्लगइन 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

नींद से अपने कॉर्डोवा एंड्रॉइड ऐप को रोकने के लिए सबसे आसान विकल्प अनिद्रा-फोनगैप-प्लगइन का उपयोग करना है। यह प्लगइन एंड्रॉइड, आईओएस और विंडोज जैसे अधिकांश प्लेटफार्मों में भी समर्थित है।

यह प्लगइन उपयोग करना आसान है। प्लगइन में keepAwake फ़ंक्शन डिवाइस को सोने से रोकता है और allowSleepAgain फ़ंक्शन कॉल डिवाइस को फिर से सोने की अनुमति देता है। आप official insomnia plugin link पर अधिक जानकारी प्राप्त कर सकते हैं।

उम्मीद है कि यह मदद करता है। चीयर्स।

0

सिंटैक्स पर स्पष्ट होने के लिए, कॉर्डोवा-प्लगइन-अनिद्रा प्लगइन स्थापित करें। कर सकते हैं

// 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 सेकंड के बाद सोएं"। यह एंड्रॉइड डिवाइस सेटिंग रखने के बराबर है जो "नींद कभी नहीं" है (जबकि आपका ऐप चल रहा है)।

संबंधित मुद्दे