2016-08-15 8 views
19

मुझे एक बहुत ही रोचक समस्या है।एंड्रॉइड आंतरिक माइक्रोफोन रिलीज मुद्दे

मैं इस धारणा के तहत था कि जब मेरा ऐप माइक्रोफ़ोन का उपयोग करता है, और एंड्रॉइड सिस्टम प्रक्रिया (आने वाली या आउटगोइंग कॉल की तरह) माइक्रोफ़ोन की आवश्यकता होती है, तो मेरा ऐप बिना किसी विचार के रिलीज़ करता है।

लेकिन मुझे लगता है कि अब यह मुद्दा नहीं है, क्योंकि मुझे कुछ शिकायतें मिली हैं कि जब ऐप का उपयोग किया जा रहा है और आने वाली कॉल है, तो कॉल पर दूसरी तरफ, उन्हें सुन नहीं सकता है।

क्या यह सुनिश्चित करने का कोई तरीका है कि जब भी सिस्टम प्रक्रिया माइक्रोफ़ोन को रिलीज़ करने का अनुरोध करती है?

+0

http://stackoverflow.com/questions/4194342/how-can-i-record-voice-and-record-call-in-android –

+0

हाय पाविनेट का प्रयास करें। तो जो मैंने प्रदान किए गए लिंक पर पढ़ा है, कुछ क्षेत्रों में केवल कुछ ब्रांड इस समस्या को हल नहीं करते हैं। बाकी, स्वचालित रूप से माइक्रोफोन और किसी भी ऐप को पकड़ने का अनुरोध करता है, इसे सही जारी करता है? –

+0

और उसमें जोड़ने के लिए, मेरा सवाल यह है कि, क्योंकि मेरा ऐप एक रिकॉर्डिंग ऐप नहीं है, क्या यह सुनिश्चित करने का कोई तरीका है कि ऐप सिस्टम प्रक्रियाओं में माइक्रोफ़ोन जारी करेगा? –

उत्तर

5

वर्तमान में, यह जांचने का कोई तरीका नहीं है कि कोई अन्य ऐप माइक्रोफ़ोन का अनुरोध करता है या नहीं। हालांकि, कुछ कामकाज से जुड़े हैं:

  • आप रिकॉर्ड ध्वनि एक गतिविधि में, बस माइक्रोफोन onPause() में, जारी हैं ताकि अग्रभूमि एप्लिकेशन इसका इस्तेमाल कर सकते हैं। यदि आप पृष्ठभूमि सेवा में ऑडियो रिकॉर्ड करते हैं तो यह काम नहीं करेगा।
  • आने वाली कॉल होने पर रिकॉर्डिंग रोकें। आने वाली (और आउटगोइंग) कॉल का पता लगाने के लिए, this excellent answer पर एक नज़र डालें। जब कॉल समाप्त होता है, तो रिकॉर्डिंग फिर से शुरू करें।
  • एक गंदे हैक: यदि आने वाली कॉल का पता लगाना पर्याप्त नहीं है, तो आप सभी चल रहे ऐप्स के माध्यम से लूप कर सकते हैं और देख सकते हैं कि उनके पास माइक्रोफ़ोन अनुमति है या नहीं। जैसे ही माइक्रोफोन अनुमति के साथ एक ऐप चल रहा है, रिकॉर्डिंग रोकें। सभी चल रहे ऐप्स प्राप्त करना मुश्किल हो सकता है। अधिक जानकारी के लिए, here, here, here और here for checking the permissions देखें।
+0

धन्यवाद मनु। पृष्ठभूमि में रहते हुए मेरे ऐप को माइक्रोफ़ोन की आवश्यकता होती है, क्योंकि यह तब भी ऑडियो को पहचानने का प्रयास करता है, बेशक यदि उपयोगकर्ता इसे चाहता है। आने वाली कॉल और आउटगोइंग के लिए, मैंने पहले से ही समाधान लागू कर लिया है और इसका परीक्षण किया जाता है यह काम करता है। गंदे हैक के लिए, मैं इस तरह कुछ लागू करने की कोशिश कर रहा था, क्योंकि इस समय कोई अन्य विकल्प नहीं है, बस मैं जो सोच रहा था वह सिर्फ अग्रभूमि में ऐप की जांच करना है यदि उसके पास RECORD_AUDIO अनुमति है तो मैं इसका उपयोग बंद कर देता हूं माइक्रोफोन। लेकिन अगर मैं इसे 10-15 सेकंड के टाइमर पर चलाता हूं तो क्या यह इस तरह की अधिक प्रसंस्करण नहीं करेगा? –

+0

@BorceIvanovski मैंने एक समान ऐप विकसित किया है जो हर 2 सेकंड में सभी चल रहे ऐप्स की जांच करता है और यह बहुत अधिक बैटरी नहीं निकालता है। आप इसे और अनुकूलित कर सकते हैं, उदाहरण के लिए यदि स्क्रीन बंद है और इसलिए ... – Manu

+0

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

0

जहाँ तक मुझे पता है, कोई रास्ता नहीं माइक्रोफोन के राज्य पता करने के लिए किया जाता है, व्यस्त उपलब्ध या है अगर किसी को इसके लिए अनुरोध कर रहा है यह किसी भी तरह है, क्योंकि इन प्रक्रियाओं और संसाधनों तो यह ध्यान में रखते हुए प्रबंधन करने के लिए प्रणाली की जिम्मेदारी है ध्यान में, आप माइक्रोफ़ोन को हमेशा के लिए नहीं रख सकते हैं, इसलिए कोई भी तरीका यह नियंत्रित नहीं कर सकता है कि आप संसाधनों पर अनुरोध को व्यवस्थित और पहचान नहीं सकते हैं। कुछ जानकारी है जो आपकी मदद कर सकती है।

आप क्या कोशिश कर सकते हैं, जब सिस्टम माइक्रोफ़ोन का उपयोग कर सकता है, तो कॉल ब्रॉडकास्ट के लिए एक प्रसारण रिसीवर सेट अप करने की आवश्यकता होती है और जब उन्होंने माइक्रोफ़ोन को रिलीज़ किया और जब कॉल किया जाता है तो आप इसे फिर से प्राप्त कर सकते हैं।

+0

जानकारी के लिए धन्यवाद Pavneet। मैं माइक्रोफ़ोन को हमेशा के लिए रखने के लिए प्राप्त करने की कोशिश नहीं कर रहा हूं, असल में मैं oposite प्राप्त करना चाहता हूं। जब भी कोई माइक्रोफोन का अनुरोध कर रहा है, तो उसे छोड़ दें। मैंने एशिया में कुछ एंड्रॉइड डिवाइसों में एक मुद्दा चलाया है, जहां ऐप काम कर रहा है, इनकमिंग या आउटगोइंग कॉल्स माइक्रोफोन नहीं मिलता है, जिसे मैंने सोचा कि यह असंभव है, क्योंकि वे सिस्टम प्रक्रियाएं हैं।और हाँ, मैं दृष्टिकोण का पालन करता हूं, लेकिन कुछ उपयोगकर्ता लंबे समय तक पृष्ठभूमि में ऐप रख सकते हैं, जो अभी भी माइक्रोफ़ोन का उपयोग कर रहा है। –

+0

इसलिए मैंने इस सवाल से पूछा कि क्या मैं ऐप को अनुकूलित कर सकता हूं, और माइक्रोफ़ोन को पृष्ठभूमि में छोड़ सकता हूं और कुछ अन्य ऐप माइक्रोफ़ोन के उपयोग का अनुरोध कर रहा है। या यह सुनिश्चित करने के लिए कि जब सिस्टम प्रक्रिया माइक्रोफ़ोन को रिलीज़ करने का अनुरोध करती है, इससे कोई फर्क नहीं पड़ता कि मेरा ऐप किस चरण में है। –

0

मेरे मामले में मैंने पृष्ठभूमि थ्रेड बनाया जो माइक्रोफ़ोन से आने वाली बिट्स की जांच करता था। यदि वे शून्य (या कई सेकंड डेटा अंतराल) करेंगे तो ऐप प्रक्रिया को बाधित करेगा। फिर भी, ज़ाहिर है, यह एक "अच्छा" समाधान नहीं है लेकिन सहायक हो सकता है।

+0

धन्यवाद व्याचेस्लाव, लेकिन यह इस समस्या के साथ मेरे लिए कोई अच्छा नहीं होगा –

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