在我的应用程序中,我有 recyclerview 项目,当我单击它时,每个项目都会播放声音。问题是当我点击几个项目时,它们都会同时播放声音直到它们完成。假设我单击 10 个项目,同时单击所有 10 个播放声音,一段时间后应用程序崩溃,我收到此错误:E/MediaPlayer: error (1, -19)。我通过使用以下代码实现自动发布来避免应用程序崩溃:
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaPlayer.release();
}
});Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,同时听到很少的声音很烦人。我想要的是在单击新声音时停止以前的声音,我尝试实施媒体播放器停止和释放,但没有成功。
这是 google play 中的应用程序,您可以自行查看:https : //play.google.com/store/apps/details?id=org.pero.androidd.animalSoundsQuiz
这是我播放声音的适配器代码。在这段代码中有一部分 MediaPlayer.OnCompletionListener() 我在声音结束后释放声音到 aviod E/MediaPlayer: error (1, -19)错误,但这不是我想要的应用程序。单击新声音后,我想停止以前的声音。
import android.content.Context;
import android.media.MediaPlayer;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.pero.androidd.animalsoundsforchildren.R;
import java.util.List;
public class ZivotinjeAdapter extends RecyclerView.Adapter<ZivotinjeAdapter.ViewHolder> {
private List<Zivotinje> mZivotinje;
@Override
public ZivotinjeAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { …Run Code Online (Sandbox Code Playgroud)audio android media-player android-mediaplayer android-recyclerview