Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaPlayer与SoundPool仅针对1个同步流_Android_Media Player_Soundpool - Fatal编程技术网

Android MediaPlayer与SoundPool仅针对1个同步流

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

我正在做一个游戏,每次摇动手机都会播放一个声音。 在“我的活动”的onCreate中使用声音池并加载声音是否有意义,或者每次创建一个mediaplayer是否可以,如下所示:

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,速度快得多。