我有多个原始声音,我想在用户输入时播放。我使用文档中的示例:
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start();
但是由于我有多个声音,我应该在每次想要播放不同的声音时执行 MediaPlayer.create(...(,还是应该实例化多个 MediaPlayer 对象并只调用我想播放的 start((?
我想我问的是在需要时实例化与保留在内存中的成本。
如果你想使用多个小声音,实际上最好使用 SoundPool:
AudioAttributes audioAttributes = AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_GAME)
.build();
SoundPool soundPool = new SoundPool.Builder()
.setAudioAttributes(audioAttributes)
.build();
int id = soundPool.load(context, resourceId, 0);
soundPool.play(id, 1, 1, 0, 0, 1);
但是,如果您真的需要回答我的问题,我会说您应该将 MediaPlayer 保留在内存中,在运行时实例化它会减慢您的应用程序并延迟声音。