मैं बटन को छूने के बाद ध्वनि बजाना चाहता हूं। मीडियाप्लेयर ठीक काम करता है, लेकिन मैंने कहीं पढ़ा है कि यह पुस्तकालय लंबे समय तक है। वाव (संगीत की तरह)।लघु .wav फ़ाइलों को बजाना - एंड्रॉइड
क्या छोटा .wav (2-3 सेकंड) खेलने का कोई बेहतर तरीका है?
मैं बटन को छूने के बाद ध्वनि बजाना चाहता हूं। मीडियाप्लेयर ठीक काम करता है, लेकिन मैंने कहीं पढ़ा है कि यह पुस्तकालय लंबे समय तक है। वाव (संगीत की तरह)।लघु .wav फ़ाइलों को बजाना - एंड्रॉइड
क्या छोटा .wav (2-3 सेकंड) खेलने का कोई बेहतर तरीका है?
SoundPool इसके लिए सही कक्षा है। नीचे दिया गया कोड इसका उपयोग करने का एक उदाहरण है। ध्वनि का प्रबंधन करने के लिए यह मेरे द्वारा कई कोडों में उपयोग किया जाने वाला कोड भी है। जैसा कि आप चाहें (या स्मृति परमिट के रूप में) हो सकता है।
public class SoundPoolPlayer {
private SoundPool mShortPlayer= null;
private HashMap mSounds = new HashMap();
public SoundPoolPlayer(Context pContext)
{
// setup Soundpool
this.mShortPlayer = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
mSounds.put(R.raw.<sound_1_name>, this.mShortPlayer.load(pContext, R.raw.<sound_1_name>, 1));
mSounds.put(R.raw.<sound_2_name>, this.mShortPlayer.load(pContext, R.raw.<sound_2_name>, 1));
}
public void playShortResource(int piResource) {
int iSoundId = (Integer) mSounds.get(piResource);
this.mShortPlayer.play(iSoundId, 0.99f, 0.99f, 0, 0, 1);
}
// Cleanup
public void release() {
// Cleanup
this.mShortPlayer.release();
this.mShortPlayer = null;
}
}
आप को फोन करके इस का प्रयोग करेंगे: अपनी गतिविधि के onCreate में
SoundPoolPlayer sound = new SoundPoolPlayer(this);
() (या उसके बाद कभी भी)। उसके बाद, एक ध्वनि सरल कॉल खेलने के लिए:
sound.playShortResource(R.raw.<sound_name>);
अंत में, एक बार आप ध्वनियों के साथ काम हो गया, कहते हैं:
sound.release();
संसाधनों मुक्त करने के लिए।
यह बहुत अच्छी तरह से काम करता है, लेकिन मेरे पास दो प्रश्न हैं। 1. मुझे हर उपयोग (जैसे मीडियाप्लेयर) के बाद रिलायंस करना पड़ सकता है या शायद जब मैं ऐप // गतिविधि से बाहर निकलता हूं? 2. नमूना रोकने के लिए कोई रास्ता है? – CookieMonssster
आपको केवल तब ही रिलीज़ करना चाहिए जब आप पूरे ऐप सत्र के लिए कोई आवाज बजाएंगे (इसलिए ऑनस्ट्रोय() एक अच्छी पसंद होगी)। आप एक विराम() विधि जोड़ सकते हैं जो SoundPools की [रोकें) विधि विधि का उपयोग करता है (http://developer.android.com/reference/android/media/SoundPool.html#pause (int))। –
यह बहुत आसान था। एफडब्ल्यूआईडब्लू, ग्रहण ने बेहतर प्रदर्शन के लिए 'mSounds' के लिए 'स्पैसइन्टएरे()' का सुझाव दिया, इसलिए मैंने यही किया। –
हाँ, ['SoundPool'] (http://developer.android.com/reference/android/media/SoundPool.html) जाने का तरीका है। – kcoppock