我有一个问题,或者更确切地说是一个问题。
我正在制作音乐播放器应用,可以在背景音乐播放期间使用按钮播放其他音效。我已经做到了,但点击按钮和播放声音之间的延迟比我想要的要大。
我在Stack上发现了一个使用SoundPool的提示,但我觉得使用soundPool和另一个MediaPlayer之间没有任何变化。不知道我是否做了所有的财产,这就是为什么我要问你们。
mediaPlayer = MediaPlayer.create(this, R.raw.music2);
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
HashMap<Integer, Integer> soundPoolMap;
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(this, R.raw.plate, 1));
public void playMusic (View w) {
if(mediaPlayer.isPlaying())
{
mediaPlayer.pause();
playBtn.setBackgroundResource(R.drawable.pause);
}else {
mediaPlayer.start();
playBtn.setBackgroundResource(R.drawable.play);
}
}
public void playDeep (View w) {
if(mediaPlayer.isPlaying())
{
MediaPlayer mp = MediaPlayer.create(this, R.raw.deep);
mp.start();
}
}
public void playPlate (View w) {
if(mediaPlayer.isPlaying())
{
soundPool.play(1, 1, 1, 1, 0, 0);
}
}
答案 0 :(得分:0)
你应该在后台播放空的 mp3(?)。
我使用以下代码播放了 1 小时的空 mp3,然后立即播放了 mp3。
public static void main(String[] args) {
BasicPlayer player = new BasicPlayer();
player.open(new File("emtpy 1h.mp3"));
player.play();
BasicPlayer realPlayer = new BasicPlayer();
realPlayer.open(new File("i want to play it.mp3"));
realPlayer.play();
//...
}
我不知道它为什么有效,但它有效。