单击按钮时 MediaPlayer 启动延迟
MediaPlayer start delay when click on button
我想在用户单击按钮时播放 res/raw 文件夹中的 mp3 文件
我的代码如下:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MediaPlayer mp = MediaPlayer.create(MainActivity.this,
R.raw.click);
mp.start();
}
});
运行良好,但点击按钮后需要一些时间才能播放。请任何人给我一个解决方案。
谢谢
这是媒体播放器 buffer size 的结果。
尝试使用 SoundPool for a more responsive playback. You can see an implementation of it 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);
加载时间取决于 MediaPlayer 的缓冲区大小(硬编码在固件中),并且无法更改它。阅读更多 here.
选项 1:
无需创建媒体播放器然后在按钮的 onClick 中调用 start() 方法,您可以初始化 mediaPlayer在 activity.
的 onCreate() 中
关于按钮点击的实现,只需要调用mediaPlayer.start()即可。
选项 2:
您可以使用 Android 提供的 SoundPool API。与 MediaPlayer API 相比,这具有更低的延迟。推荐SoundPool,主要是播放短片
我想在用户单击按钮时播放 res/raw 文件夹中的 mp3 文件
我的代码如下:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MediaPlayer mp = MediaPlayer.create(MainActivity.this,
R.raw.click);
mp.start();
}
});
运行良好,但点击按钮后需要一些时间才能播放。请任何人给我一个解决方案。 谢谢
这是媒体播放器 buffer size 的结果。
尝试使用 SoundPool for a more responsive playback. You can see an implementation of it 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);
加载时间取决于 MediaPlayer 的缓冲区大小(硬编码在固件中),并且无法更改它。阅读更多 here.
选项 1:
无需创建媒体播放器然后在按钮的 onClick 中调用 start() 方法,您可以初始化 mediaPlayer在 activity.
的 onCreate() 中关于按钮点击的实现,只需要调用mediaPlayer.start()即可。
选项 2: 您可以使用 Android 提供的 SoundPool API。与 MediaPlayer API 相比,这具有更低的延迟。推荐SoundPool,主要是播放短片