Android MediaPlayer与SoundPool仅针对1个同步流
我正在做一个游戏,每次摇动手机都会播放一个声音。 在“我的活动”的onCreate中使用声音池并加载声音是否有意义,或者每次创建一个mediaplayer是否可以,如下所示:Android MediaPlayer与SoundPool仅针对1个同步流,android,media-player,soundpool,Android,Media Player,Soundpool,我正在做一个游戏,每次摇动手机都会播放一个声音。 在“我的活动”的onCreate中使用声音池并加载声音是否有意义,或者每次创建一个mediaplayer是否可以,如下所示: private void onShake() { MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]); mp.start(); } 我猜SoundPool更好,因为声音只加载一次。我说得对吗 谢谢 Julie
private void onShake() {
MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]);
mp.start();
}
我猜SoundPool更好,因为声音只加载一次。我说得对吗
谢谢
Julien您可以在
onShake
方法之外创建mediaPlayer,然后在每次摇动时重置并启动它:
MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]);
...
private void onShake() {
mp.reset();
mp.start();
}
//or
private void onShake() {
try {
mp.stop();
mp.prepare();
} catch (IllegalStateException e) { /* Ignore */
} catch (IOException e) {/* Ignore */ }
try {
mp.start();
} catch (IllegalStateException e) {
Log.e(TAG, "MediaPlayer failed ", e);
}
}
正如所料,SoundPool的速度要快得多…我必须每次加载声音,因为根据震动强度,声音可能会有所不同。我用过SoundPool,速度快得多。