2012-04-21 13 views
14

इस सवाल का मैं किसी अन्य उपयोगकर्ता जो अपने सवाल का कोई जवाब नहीं मिला है उद्धृत करने के लिए जा रहा हूँ के लिए है:चेक वॉल्यूम बटन उपयोग स्क्रीन के बंद

मैं के लिए हार्डवेयर वॉल्यूम बटन का उपयोग करता है एक Andoid एप्लिकेशन लिखा है एक और उद्देश्य

यदि यह ऐप चल रहा है और दृश्यमान है तो यह ठीक काम करता है, लेकिन जब मैं स्क्रीन बंद करता हूं या इसे टाइम आउट करता हूं, तो बटन क्लिक मेरे हैंडलर में नहीं मिलता है।

क्या किसी को पता है कि स्क्रीन बंद होने पर इन बटन क्लिकों का पता लगाने का कोई तरीका है या नहीं? स्रोत: AV695's question

मैं एक ऐप्स अपने आप को कि वॉल्यूम बटनों में से उपयोग करता है पर काम कर रहा हूँ, लेकिन यह उपयोगकर्ता के रूप में यह भी कहा, onKeyPress साथ बटन की जाँच के सामान्य व्यवहार एक बार स्क्रीन बंद होने पर कार्य करना बंद कर। ऐसा इसलिए है क्योंकि गतिविधि को स्क्रीन पर रोक दिया जाता है।

क्या स्क्रीन बंद होने पर गतिविधि को चालू रखने का कोई तरीका है, या स्क्रीन बंद होने पर वॉल्यूम बटन के उपयोग की जांच करें? मैंने पहले इसके लिए एक सेवा का उपयोग करने की कोशिश की लेकिन कमांडवेयर द्वारा नोट किए गए वॉल्यूम कुंजियों की जांच करना असंभव है।

+0

क्या आपके पास ऐसा कुछ ऐसा उदाहरण है जो ऐसा करने के लिए प्रतीत होता है, जो सुझाव देगा कि यह भी संभव है? सीमित केस के बाहर जहां एप्लिकेशन सीपीयू चल रहा है लेकिन स्क्रीन बंद है, क्या कोई संकेत है कि कर्नेल जाग गया है और इस तथ्य से अवगत कराया गया है कि कुंजी दबा दी गई है? यदि हार्डवेयर नहीं है या कम से कम रेडियो फर्मवेयर मोड की आवश्यकता होगी। केवल अगर/जब कर्नेल कुंजी घटना से अवगत हो, तो यह आपके कोड को इसके बारे में जानने के लिए प्लेटफॉर्म को मनाने की समस्या बन सकता है। –

+0

दुख की बात है कि मैं नहीं करता हूं। केवल एक चीज जिसे मैं सोच सकता हूं वह मध्यस्थ हैं। मुझे विश्वास है कि मेरा विचार जितना आसान है (आपके फोन को अपनी जेब से बाहर ले जाने के बिना अधिसूचनाओं की जांच करें, बस वॉल्यूम बटन दबाकर जो आपके डिवाइस को कंपनियां लंबित कर देगा यदि आपके पास लंबित अधिसूचनाएं हैं) बनाने के लिए बस बहुत जटिल है। –

+0

यदि आपके पास स्टेटस बार में नई सूचनाएं हैं, तो एलईडी आमतौर पर फ्लैश नहीं करता है, जिसमें तृतीय पक्ष ऐप्स से कस्टम शामिल हैं? –

उत्तर

6

का उपयोग करना चाहिए मुझे शक है कि इस समर्थित है पिछले करने के लिए संशोधनों के बिना या तो मंच, गिरी, या अंतर्निहित रेडियो फर्मवेयर स्तरों पर मात्रा लाने के लिए (एक बैटरी draining wakelock का सहारा के बिना) कर्नेल के ध्यान में सोने के दौरान प्रेस।

उचित सिस्टम-रोम संशोधनों के दायरे में, डिवाइस के लिए मौजूदा ओपन सोर्स रॉम को संशोधित करने के लिए एक अधिक उचित एक हो सकता है, जो आमतौर पर उठने के लिए उपयोग किए जाने वाले पावर बटन के हैंडलिंग में कुछ कस्टम प्लेटफ़ॉर्म स्तर कोड डालने के लिए होता है डिवाइस को अनलॉक करने के लिए प्रारंभिक - कम से कम हम जानते हैं कि कर्नेल का ध्यान मिलता है। उस कोड को उपयोगकर्ता को ध्वनि या कंपन द्वारा सूचित किया जा सकता है यदि अनजान अधिसूचनाएं हैं।

आप वैकल्पिक रूप से संक्षेप में प्रतीक्षा कर सकते हैं, डिवाइस अभिविन्यास की जांच कर सकते हैं, या किसी अन्य कुंजी दबाए जाने के लिए एक परेशान तरीके से ऐसा करने से बचने के लिए जब उपयोगकर्ता डिवाइस को अपनी जेब से बाहर रख रहा है और इसे अनलॉक करने का प्रयास कर रहा है।


या आप मात्रा कुंजी का उपयोग नहीं कर सकता है और बस हर 15 मिनट में जाग और कंपन अगर वहाँ अस्वीकृत सूचना नहीं है, लोगों को जेब में गड़बड़ कर देना करने की जरूरत से बचने के लिए एक टाइमर सेट।


आप उल्लेख यह एक कस्टम अनुरोध है: यदि तात्पर्य यह एक बंद या कम मात्रा है, विचार करने के लिए एक और विकल्प हो सकता है कि कुछ विक्रेताओं एक SDK आप एक से पुश सूचनाएं देता है कि के साथ बाहर "ब्लूटूथ घड़ियों" है एंड्रॉइड डिवाइस।

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

+3

व्यापक टिप्पणी के लिए धन्यवाद। अफसोस की बात है कि मुझे लगता है कि मैं इस छोटी परियोजना के बारे में सोचना बंद कर दूंगा और आगे बढ़ जाऊंगा, संभवतया इसे भविष्य में फिर से कोशिश करूँगा जहां इस तरह की चीजें थोड़ा आसान हैं। यह उन लोगों में से एक था "जी, आप जानते हैं कि क्या अच्छा होगा?" एक यादृच्छिक ऑनलाइन अजनबी से विचारों की तरह, तो मुझे लगता है कि ब्लूटूथ घड़ी विचार थोड़ा अधिक है। हालांकि विचार के लिए धन्यवाद :) –

+0

वास्तव में वेक-लॉक का उपयोग करते समय आप इसे कैसे करेंगे? ऐसा लगता है कि एक बार स्क्रीन बंद हो जाने पर, गतिविधि रोक दी जाती है और कोई चाबियाँ नहीं दी जाती हैं? – ondra

-1

मुझे यकीन है कि अगर यह इस रूप में सरल है नहीं कर रहा हूँ, लेकिन यह एंड्रॉयड ब्लॉग की जाँच करें:

Allowing applications to play nice(r) with each other: Handling remote control buttons

यह एक प्रसारण रिसीवर कि ऊपर/नीचे मात्रा पर नियंत्रण और अन्य संगीत नियंत्रण प्राप्त करता है के उपयोग बताते हैं ।

सारांश में आप registerMediaButtonEventReceiver

+2

क्या यह मानने का कोई कारण है कि इन तरीकों से स्क्रीन बंद हो जाएगी? –

2

जब आपका एप्लिकेशन पृष्ठभूमि में है, तो आप कुंजी को अवरुद्ध नहीं कर सकते हैं, लेकिन KeyPress को सुनने के बजाए। this question में वर्णित अनुसार आप एक ContentObserver पंजीकृत कर सकते हैं।

0

जैसा कि क्रिस स्ट्रैटन ने उल्लेख किया है, आपके ऐप को जीवित रखने का एकमात्र तरीका बैटरी-नाली जागने वाले ताले का उपयोग करके है।

हालांकि, चूंकि मैंने खुद को एक ही स्थिति में पाया, इसलिए मैं एक और समाधान के साथ आया। दुर्भाग्यवश, आपको जड़ वाले डिवाइस के साथ-साथ एक्सपोज़ेड फ्रेमवर्क की आवश्यकता होगी।

एक्सपॉइड के साथ, जो ज़ीगो प्रक्रिया को प्रतिस्थापित करता है ताकि आप स्वयं को किसी भी कन्स्ट्रक्टर और सिस्टम की विधि में लगा सकें, आप सिस्टम को संभालने से पहले कच्चे कीवर्ड्स को पकड़ सकेंगे।

यह फोनविंडोमैनेजर.interceptKeyBeforeQueueing() में किया जाता है। XC_MethodHook का उपयोग करके, आप प्रत्येक हार्डवेयर बटन ईवेंट को पकड़ने के लिए पहले उल्लिखित विधि पर पहले HookedMethod() का उपयोग कर सकते हैं, भले ही डिवाइस गहरी नींद में हो।

ऐसी घटनाओं को पकड़ने के बाद आप रुचि रखते हैं, आप अपनी चीजों को करने के लिए अस्थायी वेक लॉक बना सकते हैं लेकिन अपना काम पूरा करने के बाद वेक लॉक जारी करना न भूलें।

इसे पूरा करने का एक अच्छा उदाहरण Xposed Torch मॉड्यूल है। यदि आप, हालांकि, एक गैर रूट सिस्टम पर भरोसा करते हैं, तो बुरी खबर यह है कि बैटरी को निकाले बिना यह संभव नहीं है ...

0

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

पृष्ठभूमि वीडियो रिकॉर्डर 2 (बीवीआर 2) (और संभव बीवीआर 1 भी, मैंने कोशिश नहीं की) उन ऐप्स में से एक है जो स्क्रीन बंद होने पर वॉल्यूम कुंजी प्रेस का पता लगा सकते हैं। मेरे ऐप में स्क्रीन बंद होने पर वॉल्यूम कुंजी का पता लगाने की कोशिश करते समय, मैंने यह सुनिश्चित करने के लिए बीवीआर 2 स्थापित किया कि यह कैसे काम करता है। मेरे आश्चर्य की बात यह है कि स्क्रीन बंद होने पर भी वॉल्यूम कुंजियों का पता लगाने के लिए मेरे ऐप को ablity दिया। मेरे ऐप में वॉल्यूम परिवर्तनों की निगरानी करने के लिए एक ContentObserver था, लेकिन स्क्रीन बंद होने पर काम नहीं कर रहा था। जब बीवीआर 2 सक्रिय होता है तो मेरा ऐप भी स्क्रीन बंद होने पर वॉल्यूम कुंजी प्रेस का पता लगा सकता है। अभी भी खोदना

लेकिन बीवीआर 2 की अपनी ट्रिगर कार्रवाई है, जो कि वीडियो रिकॉर्ड करना है, एक ऐसी क्रिया जिसे आप केवल आपके आवेदन के लिए वॉल्यूम कुंजी प्रेस का पता लगाने के लिए नहीं करना चाहते हैं।

एक और ऐप QuickClick है। यह ऐप आपके ऐप को जो कुछ भी कम करता है, वह अतिरिक्त अवांछित कार्रवाइयों के बिना स्क्रीन बंद होने पर भी वॉल्यूम कुंजी प्रेस का पता लगाने की शक्ति दे सकता है। बस QuickClick स्थापित करें और किसी भी कार्रवाई को कॉन्फ़िगर न करें। स्ट्रीम वॉल्यूम परिवर्तनों की निगरानी के लिए ContentObserver बनाएं और आप तैयार हैं। स्क्रीन बंद होने पर भी आप ऐप वॉल्यूम कुंजी प्रेस का पता लगाने में सक्षम होंगे।

कृपया ध्यान दें कि मेरा ऐप पृष्ठभूमि सेवा के रूप में चलता है।

ऊपर वर्णित दोनों ऐप्स अन्य उपयोगों के लिए हैं, लेकिन कार्रवाई करने के लिए वॉल्यूम कुंजी पहचान का उपयोग करते हैं। मैं किसी भी तरह से जुड़े किसी भी एप्स से जुड़ा हुआ नहीं हूं।

यदि ये ऐप्स, और संभवतः दर्जन अन्य, वॉल्यूम कुंजी प्रेस का पता लगा सकते हैं, तो यह किया जा सकता है।मैं विशेषज्ञों से अनुरोध करता हूं कि यह कैसे करें, ताकि हम किसी अन्य ऐप पर भरोसा किए बिना हमारे ऐप में कार्यान्वित कर सकें।

यदि आपको यह उत्तर उपयोगी लगता है, तो कृपया ऊपर वोट दें।