mAdapter;
private ListmDatas =new ArrayList<>();
private AudioRecorderButton mAudioRecorderButton;
private View mAnimView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListViewAdapter();
}
private void initView(){
mListView = findViewById(R.id.id_listview);
mAudioRecorderButton = findViewById(R.id.id_recorder_button);
mAudioRecorderButton.setAudioFinishRecorderListener(new AudioRecorderButton.AudioFinishRecorderListener() {
@Override
public void onFinish(float seconds, String filePath) {
//每完成一次录音
Recorder recorder = new Recorder(seconds,filePath);
mDatas.add(recorder);
//更新adapter
mAdapter.notifyDataSetChanged();
//设置listview 位置
mListView.setSelection(mDatas.size()-1);
}
});
}
private void setListViewAdapter(){
mAdapter = new RecorderAdapter(this, mDatas);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
//如果第一个动画正在运行, 停止第一个播放其他的
if (mAnimView != null) {
mAnimView.setBackgroundResource(R.drawable.adj);
mAnimView = null;
}
//播放动画
mAnimView = view.findViewById(R.id.id_recorder_anim);
mAnimView.setBackgroundResource(R.drawable.play_anim);
AnimationDrawable animation = (AnimationDrawable) mAnimView.getBackground();
animation.start();
//播放音频 完成后改回原来的background
MediaManager.playSound(mDatas.get(position).filePath, new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mAnimView.setBackgroundResource(R.drawable.adj);
}
});
}
});
}
/**
* 根据生命周期 管理播放录音
*/
@Override
protected void onPause() {
super.onPause();
MediaManager.pause();
}
@Override
protected void onResume() {
super.onResume();
MediaManager.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
MediaManager.release();
}
//数据类
class Recorder{
float time;
String filePath;
public float getTime() {
return time;
}
public void setTime(float time) {
this.time = time;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public Recorder(float time, String filePath) {
super();
this.time = time;
this.filePath = filePath;
}
}
}