摘要:本文将带你了解Android应用开发Android 仿微信实现语音聊天功能开发教程,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android 仿微信实现语音聊天功能开发教程,希望本文对大家学Android有所帮助。
Android 仿微信实现语音聊天功能开发教程。
注意注意:
Android 6.0动态获取录音权限,我并没有加上,所以你们需要在写完代码后,运行时在权限管理中指定该权限
否则会崩溃哦~~, 当然你们可以改变as中的targerversion<23就可以了
话不多说,直接上效果图:
\
MainActivity :
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private ArrayAdapter
private List
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;
}
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号