android模拟微信聊天功能,Android应用开发Android 仿微信实现语音聊天功能开发教程...

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;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值