2010-07-23 5 views
4

J'ai créé une classe SoundManager qui utilise les fonctions de SoundPool pour faire une boucle sur un son spécifique, mais je n'arrive pas à comprendre pourquoi elle ne joue pas de son.SoundPool ne reproduit pas les sons

public class SoundManager { 
private SoundPool mSoundPool; 
private HashMap<Integer, Integer> mSoundPoolMap; 
private AudioManager mAudioManager; 
private Context mContext; 

public SoundManager() 
{ 

} 

public void initSounds(Context theContext) { 
    mContext = theContext; 
    mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); 
    mSoundPoolMap = new HashMap<Integer, Integer>(); 
    mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);   
} 

public void addSound(int Index, int SoundID) { 
    mSoundPoolMap.put(Index, mSoundPool.load(mContext, SoundID, 1)); 
} 

public void playSound(int index) { 
    int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f); 
} 

public void playLoopedSound(int index) { 
    int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, -1, 1f); 
} 

}

Cette classe est appelée de mon activité via:

private SoundManager mSoundManager; 
mSoundManager = new SoundManager(); 
mSoundManager.initSounds(getBaseContext()); 
mSoundManager.addSound(1, R.raw.sound); 
mSoundManager.playSound(1); 

Répondre

2

Apparemment, il ne fonctionne pas onCreate pour mon activité, mais l'appeler quand un événement se produit (Intentions/Keypress) il semble fonctionner

1

J'ai eu ce problème et finalement résolu en exécutant sur un émulateur qui a supporté l'audio !!

Je ne peux pas croire que c'était aussi simple!

Fenêtre> AVD Manager> Modifier votre AVD (j'ai créé un nouveau pour être la cause de bon côté, je fuyais snapshot)> Matériel> Nouveau> Lecture audio Soutien