gpt4 book ai didi

Android - 按顺序播放多个声音

转载 作者:行者123 更新时间:2023-11-29 00:37:58 24 4
gpt4 key购买 nike

我需要在 Activity 运行时运行许多小声音。某些文件每隔固定时间间隔播放一次(例如 5 秒)当触摸屏幕时,一些文件将在一个完成下一个开始时按顺序播放(例如 sound1、sound2、sound3)。

总声音约为 35 个短 mp3 文件(最长 3 秒)。

实现它的最佳方法是什么?

谢谢

最佳答案

SoundPool通常用于播放多个短音。您可以在 onCreate() 中加载所有声音,将它们的位置存储在 HashMap 中。

创建 SoundPool

public static final int SOUND_1 = 1;
public static final int SOUND_2 = 2;

SoundPool mSoundPool;
HashMap<Integer, Integer> mSoundMap;

@Override
public void onCreate(Bundle savedInstanceState){
mSoundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100);
mSoundMap = new HashMap<Integer, Integer>();

if(mSoundPool != null){
mSoundMap.put(SOUND_1, mSoundPool.load(this, R.raw.sound1, 1));
mSoundMap.put(SOUND_2, mSoundPool.load(this, R.raw.sound2, 1));
}
}

然后当您需要播放声音时,只需使用您的声音的常量值调用 playSound()。

/*
*Call this function from code with the sound you want e.g. playSound(SOUND_1);
*/
public void playSound(int sound) {
AudioManager mgr = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;

if(mSoundPool != null){
mSoundPool.play(mSoundMap.get(sound), volume, volume, 1, 0, 1.0f);
}
}

关于Android - 按顺序播放多个声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11375027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com