2010-04-04 16 views
5

जैसा कि पिछले प्रश्न में बताया गया है, मुझे लंबे समय तक Service (निराश) के बिना सभी android.intent.action.SCREEN_ON घटनाओं को रोकने में कठिनाई हो रही है।स्क्रीन चालू होने पर कैसे पता लगाया जाए?

Service में, जब भी किसी भी समय स्क्रीन चालू हो, तो मैं बस आवश्यकता के आसपास काम करने में सक्षम हो सकता हूं।

क्या कोई भी विधि कॉल सुझा सकता है जो इस जानकारी को वापस कर देगा? 1.5 ऊपर

उत्तर

1

सिस्टम जानबूझकर अनुप्रयोगों को उनके मेनिफेस्ट में ACTION_SCREEN_ON और ACTION_SCREEN_OFF प्रसारण प्राप्त करने की अनुमति नहीं देता है, क्योंकि हम स्क्रीन को चालू या बंद करने के लिए ऐप्स का एक समूह लॉन्च नहीं करना चाहते हैं। यह ऐसा कुछ होता है जो हर समय होता है, और यथासंभव तेज़ होना चाहिए।

दुर्भाग्य से, जैसा कि बताया गया है, स्क्रीन देखने के लिए तत्काल जांचने का कोई तरीका नहीं है।

+0

वास्तव में यह संभव प्रसारण, प्राप्त करने के लिए लंबे समय तक रहा सेवा पर BroadcastReceivers के रूप में। मेरा ऐप यह बहुत खुशी से करता है, लेकिन मैं लंबी अवधि की सेवा को रद्द करने की कोशिश कर रहा हूं। यदि आप इसे रिसीवर पर एक इरादे-फ़िल्टर के रूप में आपूर्ति करते हैं तो यह चुपचाप विफल रहता है। –

3

क्या सिस्टम ACTION_USER_PRESENT का प्रसारण किसी भी मदद का इरादा रख सकता है?

3

यदि आपका कोड चल रहा है, तो स्क्रीन पर बहुत अच्छा मौका है। मुख्य अपवाद होगा यदि आपका कोड AlarmManager के माध्यम से जाग गया है।

यह अच्छा होगा अगर ACTION_SCREEN_ON एक चिपचिपा प्रसारण था, लेकिन ऐसा लगता है कि ऐसा नहीं लगता है।

यदि आप एंड्रॉइड 2.1 और नए, PowerManager के साथ रोल कर सकते हैं तो अब isScreenOn() विधि है। अच्छी खबर यह है कि यह उपलब्ध है। बुरी खबर यह है कि, क्योंकि इसे वहां जोड़ा गया था, यह असंभव है कि इसे आसानी से निर्धारित करने का कोई और तरीका है। और, स्रोत कोड का एक त्वरित निरीक्षण बहुत उम्मीद नहीं देता है कि आप पहले एसडीके में जानकारी के लिए अपना रास्ता हैक कर सकते हैं।

5

PowerManager.isScreenOn() के बाद से: एपीआई लेवल 7

+0

यह नोट 8 पर मेरे लिए काम करता था लेकिन टैब 4 पर नहीं ... –

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