开发《Android高仿iOS Messages声音播放波形效果》完成后,TapePlayView
已经实现了音频播放功能。但是结合RecyclerView
使用时,会出现控件被回收,但音频要继续播放的问题。
这种场景下,MediaPlayer
播放功能不应该关联到控件,TapePlayView
应该只显示播放波形。
一、目标
将播放功能从TapePlayView
中分离出来,使音频播放的生命周期脱离控件的生命周期。
二、最终实现
TapePlayView
已经实现了播放功能,只需要将代码分离处理即可。
public class AudioPlayer {
private int duration;
private boolean isPlaying = false;
private File targetFile;
private MediaPlayer mMediaPlayer = null;
private Consumer<AudioPlayer> mOnCompletionListener;
public AudioPlayer() {
}
public void setTarget(File file) {
this.targetFile = file;
}
public void setOnCompletionListener(Consumer<AudioPlayer> consumer) {
this.mOnCompletionListener = consumer;
}
public boolean start() {