ऑडियो Android पर हैंडलिंग थोड़ी देर के लिए बहुत भयानक होने जा रहा है। एपीआई बहुत अजीब, खराब दस्तावेज हैं, और संस्करणों के बीच बदलना/हटाना/टूटना जारी रखें। यहां तक कि AudioManager
कोड में FIXMEs भी हैं।
वैसे भी, एंड्रॉइड (संगीत, सूचनाएं, फोन कॉल इत्यादि) में कई स्ट्रीम प्रकार हैं और एप्लिकेशन प्लेबैक के लिए उचित विकल्प चुनने के लिए हैं। मुझे लगता है कि अधिकांश एंड्रॉइड ऐप्स को संगीत/मीडिया प्रकार (STREAM_TYPE_MUSIC
) का उपयोग करना चाहिए। आप इसे पर setAudioStreamType
विधि का उपयोग करके सेट करते हैं।
एसडीके आप के कारण अन्य सभी धाराओं — को म्यूट कर दिया है, लेकिन मैं नहीं मानता कि आप ऑडियो की पहचान विशेष अनुप्रयोगों के द्वारा वापस खेला जा रहा है और किसी भी तरह रोक सकते हैं एकल — रूप प्रकार एक एकल स्ट्रीम निर्धारित करने की अनुमति देता है/फिर से चलाने यह। सामान्य रूप में संगीत अनुप्रयोगों PhoneStateListener
का उपयोग खुद को रोकने के लिए जब एक कॉल में आता होगा।
अपने मामले में
तो, आप "उधार" हो सकता है आपके MediaPlayer
के लिए फोन कॉल स्ट्रीम और जब प्लेबैक, शुरू होता है तो संयुक्त राष्ट्र विधि कॉल AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)
का उपयोग false
के साथ स्ट्रीम करें जब प्लेबैक या आपका Activity
किया जाता है।
मैं आपको बता सकता है कि इस काम करता है, लेकिन मैं बेतकल्लुफ़ आप जब आवाज फोन धारा (इस तरह: AudioManager.setMode(AudioManager.MODE_IN_CALL)
) का उपयोग भी MODE_IN_CALL
करने के लिए ऑडियो मोड निर्धारित करने की आवश्यकता है कि क्या याद नहीं कर सकते। यदि आपको लगता है कि यह आवश्यक है, तो आपको यह सुनिश्चित करने की आवश्यकता है कि प्लेबैक पूर्ण हो जाने पर आप मोड को MODE_NORMAL
पर वापस कर दें, अन्यथा जब भी आप वॉल्यूम हार्ड कुंजी दबाते हैं, तो यह "इन-कॉल वॉल्यूम" कहेंगे! हालांकि, अगर आप MODE_NORMAL
पर वापस बदलना चाहते हैं, तो आपको यह जांचना होगा कि उस समय एक वास्तविक फोन कॉल नहीं हो रहा है ...
हो सकता है कि आप वॉइस कॉल की बजाय किसी अन्य स्ट्रीम प्रकार का उपयोग कर सकें, लेकिन मैं सिर्फ एक ऐप पर काम करने वाले अनुभव से बात कर रहा हूं जो ऑडियो प्लेबैक के लिए स्पीकरफ़ोन या इयरपीस का उपयोग कर सकता है, जो को वॉयस कॉल स्ट्रीम का उपयोग करने की आवश्यकता है।
जैसा कि मैंने कहा, ऑडियो हैंडलिंग विशेष रूप से मज़ा नहीं है ...;)
स्रोत
2010-01-03 18:24:54
धन्यवाद क्रिस्टोफर देखें है, आपकी सलाह की मौके पर ही किया गया था। मैंने वास्तव में अपहरण कर लिया है, STREAM_ALARM, जो मेरे उद्देश्य के अनुरूप है, इसे एकल पर सेट करें और इसका वांछित प्रभाव है। एक बार फिर धन्यवाद। –
हूप्स, कम से कम हेडफ़ोन के साथ ऐसा अच्छा विचार नहीं है। VOICE_CALL पर वापस जाएं। कम से कम अब तक MODE_IN_CALL की आवश्यकता नहीं लगती है। –