जवाबों:
एक विकल्प वेक लॉक का उपयोग करना है । डॉक्स से उदाहरण:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// screen and CPU will stay awake during this section
wl.release();
इस पृष्ठ पर एक तालिका भी है जो विभिन्न प्रकार के वाकेलॉक्स का वर्णन करती है।
ध्यान रखें कि वेक लॉक का उपयोग करते समय कुछ सावधानी बरतने की आवश्यकता है। सुनिश्चित करें कि आप हमेशा release()लॉक करते हैं जब आप इसके साथ किए जाते हैं (या अग्रभूमि में नहीं)। अन्यथा आपका ऐप संभावित रूप से कुछ गंभीर बैटरी नाली और सीपीयू उपयोग का कारण बन सकता है।
प्रलेखन में एक उपयोगी पृष्ठ भी होता है जो डिवाइस को जागृत रखने के लिए अलग-अलग तरीकों का वर्णन करता है, और जब आप किसी एक का उपयोग करना चुन सकते हैं। यदि "डिवाइस को नींद में जाने से रोकें" केवल स्क्रीन को संदर्भित करता है (और सीपीयू को सक्रिय नहीं रखता है) तो एक जगा ताला संभवतः आपकी आवश्यकता से अधिक है।
इस विधि का उपयोग करने के लिए आपको यह सुनिश्चित करने की भी आवश्यकता है कि आपके पास WAKE_LOCK की अनुमति है।
यदि आप किसी विशिष्ट पर स्लीप मोड को रोकना चाहते हैं View, तो बस setKeepScreenOn(true)उस पर कॉल करें Viewया keepScreenOnसंपत्ति सेट करें true। यह स्क्रीन पर स्क्रीन के बंद रहने से रोकता Viewहै। इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।
setKeepScreenOn(true)ही वसीयत प्रभावी होगी View।
मुझे एक और काम करने वाला समाधान मिला: ऑनक्रिएट इवेंट के तहत अपने ऐप में निम्न लाइन जोड़ें।
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
मेरा नमूना कॉर्डोवा परियोजना इस तरह दिखता है:
package com.apps.demo;
import android.os.Bundle;
import android.view.WindowManager;
import org.apache.cordova.*;
public class ScanManActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
super.loadUrl("http://stackoverflow.com");
}
}
उसके बाद, मेरा ऐप खुला रहने पर सो नहीं जाएगा। Awer के लिए धन्यवाद xSus को जाता है।
android:keepScreenOn="true" लेआउट XML से बेहतर विकल्प हो सकता है।
अधिक जानकारी: https://developer.android.com/training/scheduling/wakelock.html
नीचे दी गई गतिविधि की विंडो पर झंडे सेट करें
@Override public void onResume() {
super.onResume();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override public void onPause() {
super.onPause();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
रूट शेल (उदाहरण के लिए शेल शेल) से, आप इसके साथ लॉक कर सकते हैं:
echo mylockname >/sys/power/wake_lock
जिसके बाद डिवाइस तब तक जगी रहेगी, जब तक आप ऐसा नहीं करते:
echo mylockname >/sys/power/wake_unlock
'Mylockname' के लिए समान स्ट्रिंग के साथ।
ध्यान दें कि यह स्क्रीन को काले होने से नहीं रोकेगा, लेकिन यह सीपीयू को सोने से रोकेगा।
ध्यान दें कि / sys / power / aw_lock उपयोगकर्ता रेडियो (1001) और समूह प्रणाली (1000) और निश्चित रूप से, रूट के लिए पढ़ा-लिखा है।
एक संदर्भ यहाँ है: http://lwn.net/Articles/479841/
@eldarerathis ने जो कहा वह सभी पहलुओं में सही है, वेक लॉक डिवाइस को नींद में जाने से रोकने का सही तरीका है।
मैं नहीं जानता कि वाह आपको ऐप करने की ज़रूरत है लेकिन यह वास्तव में महत्वपूर्ण है कि आप यह सोचें कि आपका ऐप कैसा है, ताकि आप फ़ोन को ज़रूरत से ज़्यादा जागते रहने के लिए मजबूर न करें, या बैटरी जीवन को भारी नुकसान होगा।
मैं आपको इस बात का सही उदाहरण दूंगाAlarmManager कि आग की घटनाओं का उपयोग कैसे करें और फोन और (आपका ऐप) को जगाने के लिए आपको क्या करना है और फिर से सो जाना चाहिए: अलार्म मैनेजर (स्रोत: commonsware.com)