2009-06-13 8 views
5

मेरे पास एक एंड्रॉइड (संस्करण 1.5) एप्लिकेशन है जिसे बटन दबाए जाने पर लगातार चलने की आवश्यकता होती है। इसलिए, जब Button दबाया जाता है तो मैं फोन को चालू रखना चाहता हूं और स्क्रीन या सीपीयू को समय-समय पर नहीं चाहता हूं।एप्लिकेशन/स्क्रीन टाइमआउट को रोकना एंड्रॉइड

जब कोई अन्य Button दबाया जाता है, तो मैं फोन को सामान्य सेटिंग्स और उपयोगकर्ता सेटिंग्स के अनुसार टाइम-आउट पर वापस लेना चाहता हूं।

+0

[फोर्स स्क्रीन ऑन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2131948/force- स्क्रीन-on) –

उत्तर

3

अद्यतन: स्टीव Pomeroy द्वारा सुझाए गए अनुसार, this ऐसा करने का एक बेहतर तरीका हो सकता है।


आप एक WakeLock कि निम्न अनुमति की आवश्यकता का उपयोग कर सकते हैं:

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

यहाँ आप कैसे प्राप्त किया जाता है और एक WakeLock जारी:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); 
wl.acquire(); 
// wake locked... 
wl.release(); 

अपनी आवश्यकताओं पर निर्भर करता है कि आप हो सकता है WakeLock के एक अलग प्रकार का उपयोग करने में सक्षम। एक wakelock का उपयोग करने का

+0

मैंने उस समाधान के बारे में सोचा था, हालांकि मैं केवल वेक लॉक जारी कर सकता हूं जहां इसे स्थानीय रूप से बनाया गया था , "ऑफ" बटन में नहीं, जहां इसे रिलीज़ करने की आवश्यकता है। विचार? – Tom

+2

एक सेवा बनाएँ। सेवा के ऑनक्रेट() में, एक निजी डेटा सदस्य में आयोजित वेक लॉक को पकड़ें। सेवा के ऑनस्ट्रोय() में, वेक लॉक जारी करें। गतिविधि में, जब आपको स्क्रीन/सीपीयू पर रहने की आवश्यकता होती है, तो startService() पर कॉल करें। कुछ समय बाद, जब आपको स्क्रीन/सीपीयू पर रहने की आवश्यकता नहीं है, तो StopService() पर कॉल करें। अब, जब तक सेवा चल रही है, तो वेक लॉक तब तक आयोजित किया जाएगा, इससे कोई फर्क नहीं पड़ता कि आपकी गतिविधि के साथ क्या होता है। इसके अलावा, सेवा बैटरी घटनाओं के लिए भी देख सकती है, शायद बैटरी लाइफ कम होने के बाद भी वेक लॉक को छोड़ दें। – CommonsWare

+0

मैं बार आ रही है .release पद्धति पर "WL हल नहीं किया जा सकता है": सार्वजनिक वर्ग WakeLockService फैली सेवा { \t @Override \t सार्वजनिक IBinder onBind (आशय arg0) { \t \t // TODO स्वत: निर्मित विधि स्टब \t \t वापसी शून्य; \t} \t \t सार्वजनिक शून्य OnCreate() { \t \t PowerManager बजे = (PowerManager) getSystemService (Context.POWER_SERVICE); \t \t PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.FULL_WAKE_LOCK, "मेरा टैग"); \t \t wl.acquire(); \t} \t \t सार्वजनिक शून्य OnDestroy() { \t \t wl.release(); \t} } – Tom

2

इसके बजाय, आप पर विचार करना चाहिए यहाँ समाधान प्रस्तावित: Force Screen On

यह बहुत उपयोग करना आसान है और गलती से उपयोगकर्ता की बैटरी बर्बाद कर के संभावित नहीं है।

+0

आह बहुत अच्छा है। मैंने इसे अपने जवाब में जोड़ा है। धन्यवाद! –

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