2010-08-21 13 views
11

मैं प्रत्येक अलग-अलग धाराओं (मीडिया, अधिसूचना, रिंगटोन, आदि) के लिए वॉल्यूम सेटिंग्स को समायोजित करने का एक तरीका बनाने का प्रयास कर रहा हूं और प्रत्येक के आउटपुट ध्वनि स्तर का पूर्वावलोकन करने का एक तरीका है धारा। मेरा मानना ​​है कि मेरे पास सही कार्यान्वयन है, लेकिन जब मैं आउटपुट स्ट्रीम प्रकार सेट करता हूं, तो कोई आवाज नहीं होती है।मीडियाप्लेयर ऑडियो स्ट्रीम प्रकार को सही ढंग से सेट करने के लिए कैसे करें

Uri mediaUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
MediaPlayer mp=MediaPlayer.create(getApplicationContext(), mediaUri); 
//mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
mp.start();` 

कि बाहर लाइन टिप्पणी की कि मुझे क्या कारण समस्याएं हो रही है:

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

उत्तर

23

ठीक है, मुझे थोड़ी अधिक परीक्षण के बाद समाधान मिला और ऐसा लगता है, अगर कोई और एक ही समस्या में चलता है तो मुझे लगता है। इस काम के लिए मैनिफेस्ट में MODIFY_AUDIO_SETTINGS अनुमति की आवश्यकता है।

AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
am.setMode(AudioManager.MODE_NORMAL); 
MediaPlayer mp=new MediaPlayer(); 
Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
try 
{ 
    mp.setDataSource(getApplicationContext(), ringtoneUri); 
    mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); 
    mp.prepare(); 
    mp.start(); 
} 
catch(Exception e) 
{ 
    //exception caught in the end zone 
} 
संबंधित मुद्दे