2011-08-14 13 views
11

मैंने निम्नलिखित कोड का उपयोग कर अपने आवेदन में मीडिया प्लेयर की ऑडियो स्ट्रीम को सेटिंग्स की कोशिश की है, लेकिन जब मैं ऐसा करता हूं तो मुझे एमुलेटर में कोई आवाज नहीं सुनाई देती है। अगर मैं प्लेयर के लिए स्ट्रीम सेट नहीं करता हूं तो ऑडियो ठीक खेलता है। मुझे यकीन है कि मैं इस गलत का उपयोग कर रहा हूं लेकिन कसरत नहीं कर सकता, कोई मदद कैसे?एंड्रॉइड मीडियाप्लेयर - STREAM_ALARM में कैसे खेलें?

MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.test_audio); 

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
audioManager.getStreamVolume(AudioManager.STREAM_ALARM); 
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
player.setAudioStreamType(AudioManager.STREAM_ALARM); 
player.start(); 

नोट: मैंने पहले से ही मेरे मैनिफेस्ट में MODIFY_AUDIO_SETTINGS अनुमति को जोड़ा है।

धन्यवाद!

player.setAudioStreamType(AudioManager.STREAM_ALARM); 
player.prepare(); 
player.start(); 

और क्यों आप "audioManager.getStreamVolume (AudioManager.STREAM_ALARM);" बुला रहे हैं:

उत्तर

0

निम्नलिखित का प्रयास करें? मूल्य एक चर में संग्रहीत नहीं है, तो यह नहीं बल्कि बेकार है;)

मुझे आशा है कि मदद की

+0

मैंने इसे player.prepare() के साथ करने की कोशिश की लेकिन इससे कोई फर्क नहीं पड़ता। अभी भी कोई ऑडियो खेला नहीं है। मैं स्ट्रीम वैल्यू को एक वैरिएबल में संग्रहीत कर रहा था जिसे बाद में मेरे ऐप में इस्तेमाल किया गया था, मैंने डीबगिंग में मदद के लिए अस्थायी रूप से असाइनमेंट निकाला था। – James

19

मैं नहीं जानता कि वजह से ऐसा हो जाएगा, फिर भी काम करता है नीचे कोड। आपको create() के बजाय डेटा स्रोत को setDataSource() के साथ सेट करना चाहिए।

इस कोड काम करता है:

MediaPlayer mp = new MediaPlayer(); 
mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
mp.setDataSource(this,Uri.parse("android.resource://PACKAGE_NAME/"+R.raw.soundfile)); 
mp.prepare(); 
mp.start(); 

इस कोड नहीं काम:

MediaPlayer mp = MediaPlayer.create(this, R.raw.soundfile); 
mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
mp.prepare(); 
mp.start(); 
+1

यूरी लिखने के लिए बेहतर: जैसे Uri.parse ("android.resource: //" + mContext.getPackageName() + "/" + R.raw.sound) ' –

2

1. setAudioStreamType (पूर्णांक streamtype)

इस विधि कॉल करने से पहले तैयार ();

2. MediaPlayer.create (संदर्भ संदर्भ, पूर्णांक resid)

सफलता पर, तैयार() पहले से ही बुलाया गया है जाएगा और फिर से नहीं कहा जाना चाहिए।

3

समस्या यह है कि आप अपने मीडियाप्लेयर बनाने के लिए MediaPlayer.create() का उपयोग कर रहे हैं। Create फ़ंक्शन prepare() फ़ंक्शन को कॉल करता है जो आपके मीडिया को अंतिम रूप देता है और आपको AudioStreamType बदलने की अनुमति नहीं देता है।

समाधान setDataSource बजाय उपयोग कर रहा है create की:

MediaPlayer mp = new MediaPlayer(); 
mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
mp.setLooping(true); 
try { 
    mp.setDataSource(getApplicationContext(), yourAudioUri); 
    mp.prepare(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
mp.start(); 

अधिक जानकारी के लिए this link देखें।

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