2013-01-18 31 views
7

मैं यूडीपी सॉकेट के माध्यम से ध्वनि प्राप्त करने के लिए ऑडियोट्रैक का उपयोग कर रहा हूं। मुझे ध्वनि के साथ बहुत शोर मिल रहा है इसलिए मैंने ऑडियोमैनेजर का उपयोग करने का फैसला किया। लेकिन AudioManager एप्लिकेशन की सीमाओं से परे ध्वनि रूटिंग बदलता है। नीचे वह कोड है जिसका मैं उपयोग कर रहा हूं।ऑडियोमैनेजर सेटस्पीकरफोन के साथ ऑडियोट्रैक का उपयोग करें

 m_amAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
     m_amAudioManager.setMode(AudioManager.MODE_IN_CALL); 
     m_amAudioManager.setSpeakerphoneOn(false); 

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

m_amAudioManager.setSpeakerphoneOn(true); 

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

उत्तर

12

सबसे पहले आपको ऑडियोमैनेजर सेटिंग्स बदलने के लिए प्रकट होने के लिए उपयोगकर्ता अनुमति MODIFY_AUDIO_SETTINGS घोषित करने की आवश्यकता होगी।

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
  1. इससे पहले कि आप किसी भी सेटिंग में बदलाव, आप वर्तमान AudioManager सेटिंग्स सहेजने चाहिए!

    oldAudioMode = audioManager.getMode(); 
    oldRingerMode = audioManager.getRingerMode(); 
    isSpeakerPhoneOn = audioManager.isSpeakerphoneOn(); 
    
  2. अपनी ऑडियो सेटिंग (उदाहरण)

    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
    audioManager.setMode(AudioManager.MODE_NORMAL); 
    audioManager.setSpeakerphoneOn(true); 
    
  3. तब खत्म पर

    , लागू करें सेटिंग्स

    audioManager.setSpeakerphoneOn(isSpeakerPhoneOn); 
    audioManager.setMode(oldAudioMode); 
    audioManager.setRingerMode(oldRingerMode); 
    
+0

उत्तर के लिए बहुत बहुत धन्यवाद। मैंने इस अनुमति का उपयोग किया है। और मेरी समस्याओं में से एक को ठीक किया। स्पीकर डिफ़ॉल्ट रूप से चालू नहीं है। लेकिन इस कोड के साथ मैंने संगीत प्लेयर चलाने की कोशिश की और यह फ्रंट स्पीकर पर चलना शुरू कर दिया। किसी भी विचार को डिफ़ॉल्ट रूप से कैसे बदला जाए? – SoH

+0

डिफॉल्ट आपके ऐप को शुरू करने से पहले डिवाइस के उपयोगकर्ता द्वारा सेट किया गया डिफ़ॉल्ट है। बिंदु यह है कि ऑडियोमैनेजर सेटिंग को राज्य में पुनर्स्थापित करना आपके द्वारा इसे बदलने से पहले था। इसलिए यदि आपका ऐप शुरू होने से पहले स्पीकरफोन बंद है, तो आपका ऐप बंद होने पर यह बंद हो जाएगा। – TouchBoarder

+0

@hsigmond यह ठीक है अगर हम ऑडियोट्रैक शुरू होने के बाद मोड बदलते हैं? – onmyway133

1

सेट जब एप्लिकेशन को बंद करने को बहाल।

m_amAudioManager.setMode (AudioManager.MODE_NORMAL);