单击按钮时MediaPlayer启动延迟

时间:2018-02-21 05:25:05

标签: android android-mediaplayer

当用户点击按钮

时,我想从res / raw文件夹播放mp3文件

我的代码如下:

btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        MediaPlayer mp = MediaPlayer.create(MainActivity.this,
        R.raw.click);
        mp.start();
    }
});

工作正常,但点击按钮后需要一些时间玩。拜托,有人,给我一个解决方案。 感谢

3 个答案:

答案 0 :(得分:2)

加载时间取决于MediaPlayer的缓冲区大小(在固件中是硬编码的),并且没有任何可以更改它的方法。阅读更多here

答案 1 :(得分:1)

这是媒体播放器buffer size的结果。

尝试使用SoundPool进行更具响应性的播放。您可以看到它的实现here

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
HashMap<Integer, Integer> soundPoolMap soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(soundID, soundPool.load(this, R.raw.click, 1));

使用soundPool.play(soundId, 1, 1, 1, 0, 0);

开始播放声音

答案 2 :(得分:1)

选项1:

您可以在活动的onCreate()中初始化mediaPlayer,而不是创建媒体播放器,然后在按钮的 onClick 中调用 start()方法。 / p>

至于按钮点击实现,您只需要调用 mediaPlayer.start()

选项2: 您可以使用Android提供的SoundPool API。与MediaPlayer API相比,这具有更低的延迟。 SoundPool主要用于播放短片。