2012-05-04 14 views
14

मैं कोड का एक बहुत ही सरल टुकड़ा करना चाहता हूं जो ध्वनि प्रभाव बजाता है। अब तक मैं इस कोड है:एंड्रॉइड में ध्वनि प्रभाव कैसे खेलें

SoundManager snd; 
int combo; 

private void soundSetup() { 
    // Create an instance of the sound manger 
    snd = new SoundManager(getApplicationContext()); 

    // Set volume rocker mode to media volume 
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 

    // Load the samples from res/raw 
    combo = snd.load(R.raw.combo); 
} 

private void playSound() { 
    soundSetup(); 
    snd.play(combo); 
} 

हालांकि, किसी कारण के लिए जब मैं playSound() विधि का उपयोग करें, कुछ नहीं होता। ऑडियो फ़ाइल सही स्थान पर है।

+0

एकल ध्वनियों के लिए 'मीडियाप्लेयर' और उच्च-प्रदर्शन प्लेबैक (उदाहरण के लिए बहुत सारी आवाज़ वाले गेम में) के लिए 'ध्वनिपूल' का उपयोग करें। कुशल स्मृति प्रबंधन के लिए, आपको उन कक्षाओं के साथ काम करने के लिए लाइब्रेरी का उपयोग करना चाहिए: https://github.com/delight-im/Android-Audio – caw

उत्तर

49

क्या कोई विशिष्ट कारण है जिसका आप SoundManager का उपयोग कर रहे हैं? मैं MediaPlayer बजाय प्रयोग करेंगे, यहाँ एंड्रॉयड डॉक्स

http://developer.android.com/reference/android/media/MediaPlayer.html

के लिए एक लिंक है तो यह है के रूप में सरल रूप में

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.combo); 
    mp.start(); 

बनाओ नाम वाली निर्देशिका "कच्चे /" के तहत "रेस /" निर्देशिका। कच्चे/निर्देशिका में Wav या एमपी 3 फ़ाइलों को खींचें। उन्हें ऊपर से कहीं भी खेलें।

4

मैंने शीर्ष उत्तर का उपयोग करने का भी प्रयास किया है, फिर भी इसके परिणामस्वरूप मीडियाप्लेयर से नलपॉन्टर अपवादों की वजह से मैंने पंक्ति में कई बार ध्वनि चलाने की कोशिश की, इसलिए मैंने कोड को थोड़ा बढ़ा दिया।

FXPlayer मेरा वैश्विक मीडियाप्लेयर है।

public void playSound(int _id) 
{ 
    if(FXPlayer != null) 
    { 
     FXPlayer.stop(); 
     FXPlayer.release(); 
    } 
    FXPlayer = MediaPlayer.create(this, _id); 
    if(FXPlayer != null) 
     FXPlayer.start(); 
} 
संबंधित मुद्दे