【发布时间】:2016-02-23 05:38:09
【问题描述】:
所以在我的程序中,我有一个带有一系列按钮的 recyclerview,当单击一个按钮时,它应该播放一个声音文件。但如果有任何其他声音在播放,它应该先停止它们并播放当前声音。
但是,当我选择一个并快速选择另一个时,它会重播第一个,然后播放第二个。
编辑:所以我注意到当第一个重播时,它会相对较快地停止,所以它不会播放整个文件,但它仍然会开始
recyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
for(MediaPlayer player : mediaPlayerList){
if(player.isPlaying()){
player.pause();
player.seekTo(0);
}
}
mediaPlayerList.get(position).start();
}
})
);
}
一切正常,只是选择的第一个声音出于某种奇怪的原因播放了两次,我放置了一个 pause() 和 seekTo(0) 以便它会停止它并允许它从头开始重播
我不确定这是否相关,但我也收到 logcat 错误:getSlotFromBufferLocked: unknown buffer: 0xab80f170。
MediaplayerList 包含
final List<MediaPlayer> mediaPlayerList = new ArrayList<MediaPlayer>();
mediaPlayerList.add(0,mediaPlayer0);mediaPlayerList.add(1,mediaPlayer1);
mediaPlayerList.add(2,mediaPlayer2);mediaPlayerList.add(3,mediaPlayer3);
mediaPlayerList.add(4,mediaPlayer4);mediaPlayerList.add(5,mediaPlayer5);
每个媒体播放器
final MediaPlayer mediaPlayer0 = MediaPlayer.create(this, R.raw.sound);
【问题讨论】:
标签: android audio android-mediaplayer android-recyclerview