2011-12-09 11 views
43

मेरे पास मेरे ऐप में तीन गतिविधियां हैं। जब मैं दूसरी गतिविधि में होता हूं तो मैं स्क्रीन को जागृत रखना चाहता हूं। स्क्रीन को मेरी दूसरी गतिविधि में तब तक नहीं जाना चाहिए जब तक कि "लॉक" कुंजी मैन्युअल रूप से दबाया न जाए। मैं कई लिंक से गुजर गया लेकिन वे मेरे लिए अस्पष्ट लगते हैं।स्क्रीन को मेरी गतिविधि में जागृत रखें

+0

पर विस्तार के बारे में अधिक जानकारी यहां देखें ... http://stackoverflow.com/questions/5712849/how-do-i-keep-the-screen-on-in-my-app/24261889# 24261889 – Nepster

उत्तर

125

एंड्रॉयड ट्यूटोरियल में चर्चा की उपयोग करने के लिए Keep the Screen On, आप इसे कुछ तरीकों से कर सकते हैं। आप गतिविधि की खिड़की पर FLAG_KEEP_SCREEN_ON सेट कर सकते हैं:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

उस के लिए एक एक्सएमएल बराबर अपनी गतिविधि के लेआउट रूट दृश्य में विशेषता android:keepScreenOn="true" जोड़ना है। झंडा प्रोग्राम के रूप में स्थापित करने का लाभ यह है कि आप

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

उपयोग कर सकते हैं जब आप नहीं रह गया है, जबकि अपनी गतिविधि चल रहा है पर रहने के लिए स्क्रीन को बलपूर्वक करने की जरूरत है।

स्क्रीन (और कुछ अन्य संसाधन) को नियंत्रित करने के लिए एक अन्य तरीका एक सक्रिय करने वाले लॉक का उपयोग करने के लिए है:

mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE)) 
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName()); 
mWakeLock.acquire(); 
// screen stays on in this section 
mWakeLock.release(); 

प्रकट इस अनुमति शामिल करना होगा: के रूप में चर्चा की,

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

हालांकि ट्यूटोरियल में, अन्य उपयोग मामलों के लिए एक वेक लॉक अधिक उपयुक्त होता है (जैसे कि सेवा बंद होने पर सीपीयू को चलाने के लिए एक सेवा या पृष्ठभूमि कार्य की आवश्यकता होती है)।

+1

सही काम करता है! धन्यवाद! – user838522

+6

पहली पसंद ** बहुत ** बेहतर है ... एक जाग ताला का उपयोग न करें !!इसे मैनिफेस्ट में अतिरिक्त अनुमति की आवश्यकता है! http://stackoverflow.com/a/2134602/844882 –

+9

@AlexLockwood - ओपी के आवेदन के लिए, पहला दृष्टिकोण बेहतर है। हालांकि, "जागने के लॉक का उपयोग न करें" की नीति को अपनाना गलत है! एक वेक लॉक स्क्रीन-ऑन स्थिति पर अधिक नियंत्रण प्रदान करता है। जब गतिविधि को केवल छोटी अवधि के दौरान स्क्रीन को रखने की आवश्यकता होती है, तो बैटरी लॉक की बचत, जागने के लॉक को जारी किया जा सकता है। पहले दृष्टिकोण के साथ, गतिविधि पूरे समय तक चल रही है जब गतिविधि अग्रभूमि में है। साथ ही, पहले दृष्टिकोण को किसी गतिविधि की ओर से सेवा प्रदर्शन करने वाले सेवा द्वारा उपयोग नहीं किया जा सकता है। –

6

जैसा कि मैं आपके प्रश्न को समझता हूं, मुझे लगता है कि आपको अपने आवेदन में WAKE_LOCK का उपयोग करना होगा।

कुछ की तरह,

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");  
mWakeLock.acquire(); 

और में अपने एप्लिकेशन का Manifest.xml फ़ाइल फ़ाइल इस जोड़ने के लिए,

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

यह काम करता है .. धन्यवाद! – user838522

1

कोशिश इस

getWindow().addFlags(
         WindowManager.LayoutParams.FLAG_FULLSCREEN 
           | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
+0

क्या आप समाधान को हल करने के तरीके के बारे में थोड़ा और स्पष्टीकरण जोड़ सकते हैं? इससे ओपी को आपके समाधान को बेहतर ढंग से समझने में मदद मिलेगी। – KLee1

38

मैं इस समाधान बहुत आसान लगता है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is 
    ... 
    android:keepScreenOn="true"> // Add this line 

बस अपनी गतिविधि लेआउट एक्सएमएल में जोड़ना। आप उपयोग के साथ समाप्त करने के बाद, कॉल (सबसे अच्छा समाधान है कुछ गतिविधि के OnDestroy विधि में इस विधि कॉल करने के लिए)

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); 
wl.acquire(); 

:

+4

यह अच्छा और साफ है। – OneWorld

1

इस कोड को हटा दिया गया है, इस का प्रयोग

wl.release(); 

इस link

+2

[PowerManager.SCREEN_DIM_WAKE_LOCK] (http://developer.android.com/reference/android/os/PowerManager.html#SCREEN_DIM_WAKE_LOCK) को [WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON] (http://developer.android) के पक्ष में बहिष्कृत किया गया था। एपीआई स्तर 17 में कॉम/संदर्भ/एंड्रॉइड/व्यू/WindowManager.LayoutParams.html # FLAG_KEEP_SCREEN_ON)। – anon

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