android 实现按住说话功能
今天工作上需要做一个仿微信语音聊天中的按住说话的功能。其实很简单,主要就是利用MediaRecorder实现录音,用MediaPlayer实现播放功能。下面我就具体说一下是怎么实现的。
1,首先对按钮的onTouch事件进行监听。
<span style="font-size:18px;">mBtnVoice.setText("按住说话");mBtnVoice.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:startVoice();break;case MotionEvent.ACTION_UP:stopVoice();break;default:break;}return false;}});</span>
当按下的时候,开始进行录音,
<span style="font-size:18px;">/** 开始录音 */private void startVoice() {// 设置录音保存路径mFileName = PATH + UUID.randomUUID().toString() + ".amr";String state = android.os.Environment.getExternalStorageState();if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) {Log.i(LOG_TAG, "SD Card is not mounted,It is " + state + ".");}File directory = new File(mFileName).getParentFile();if (!directory.exists() && !directory.mkdirs()) {Log.i(LOG_TAG, "Path to file could not be created");}Toast.makeText(getApplicationContext(), "开始录音", 0).show();mRecorder = new MediaRecorder();mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mRecorder.setOutputFile(mFileName);mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);try {mRecorder.prepare();} catch (IOException e) {Log.e(LOG_TAG, "prepare() failed");}mRecorder.start();}</span>
这个方法中主要有4个方法,
<span style="font-size:18px;">设置用于录制的音源。
setAudioSource( audio_source)
设置在录制过程中产生的输出文件的格式
setOutputFormat(output_format)
设置输出文件的路径
setOutputFile(String path)
设置audio的编码格式
void setAudioEncoder(<span style="color:#00ff;">int</span><span style="color:#000000;"> audio_encoder)</span>
</span>
当手松开按钮时停止录音
<span style="font-size:18px;">/** 停止录音 */private void stopVoice() {mRecorder.stop();mRecorder.release();mRecorder = null;mVoicesList.add(mFileName);mAdapter = new MyListAdapter(RecordActivity.this);mVoidListView.setAdapter(mAdapter);Toast.makeText(getApplicationContext(), "保存录音" + mFileName, 0).show();}</span>
2,上面已经完成音频的录制,下面就该说说播放了。
<span style="font-size:18px;">mPlayer = new MediaPlayer();
mVoidListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View view,int position, long arg3) {try {mPlayer.reset();mPlayer.setDataSource(mVoicesList.get(position));mPlayer.prepare();mPlayer.start();} catch (IOException e) {Log.e(LOG_TAG, "播放失败");}}});
</span>
我这里录完音频,直接将其显示到列表,点击列表项播放。
到此为止,一个简单的按住说话功能就实现了。在此基础上稍作修改就可以做出微信语音的效果了。
android 实现按住说话功能相关推荐
- android长按动画效果,android 实现按住说话功能
今天工作上需要做一个仿微信语音聊天中的按住说话的功能.其实很简单,主要就是利用MediaRecorder实现录音,用MediaPlayer实现播放功能.下面我就具体说一下是怎么实现的. 1,首先对按钮 ...
- 小程序仿微信聊天按住说话功能
小程序仿微信聊天按住说话功能 实现:按住说话有录音动画,上滑可取消发送,松开发送录音 录音授权判断 # .wxml <view class="btn {{touchBtn?'hover ...
- php按住说话然后播放,小程序仿微信聊天按住说话功能
小程序仿微信聊天按住说话功能 实现:按住说话有录音动画,上滑可取消发送,松开发送录音 录音授权判断 # .wxml bind:longpress="onLongpress" cat ...
- uniapp微信小程序实现按住说话功能
前端页面布局代码 描述:@longpress是uniapp的事件,长按时触发的事件,@touchend事件可以监听松开按钮时触发的. <!-- 上传语音 --><view class ...
- 移动端按住说话功能实现
2019独角兽企业重金招聘Python工程师标准>>> (function(){var LSwiperMaker = function(o){ var that = this;thi ...
- android模拟微信聊天功能,android仿微信聊天界面 语音录制功能
本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图: 第一:chat.xml设计 android:layout_width="fill_parent" and ...
- [MAUI]模仿微信“按住-说话”的交互实现
文章目录 创建页面布局 创建手势控件 创建TalkBox 创建动画 拖拽物动画 按钮激活动画 TalkBox动画 Layout动画 项目地址 .NET MAUI 跨平台框架包含了识别平移手势的功能,在 ...
- Android实现按住缩小 松开放大的效果
在开发过程中 我们有时候会使用一种效果,如按钮按下时会缩小,松开变回原大小,下面我们试一下实现这个效果. 主要的思想就是使用view的setScaleX 和setScaleY这两个方法 ,在onT ...
- Android 程序自动更新功能模块实现
2019独角兽企业重金招聘Python工程师标准>>> Android 程序自动更新功能模块实现 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程 ...
最新文章
- 自学python需要买书吗-学习Python的正确姿势—基础教学,教科书该怎么买?
- UA OPTI512R 傅立叶光学导论23 透镜成像系统的物理光学模型
- android开发 java与c# 兼容AES加密
- python编程可以做什么菜_Python 编程! 我是菜菜菜鸟 大家帮帮忙
- git rebase基础
- vertical-align属性
- 菜鸟学习之Java入门基础知识
- 极客学院小程序视频教程
- 【云计算•云原生】1.什么是云计算?它为什么这么火?
- 3.1 人工智能定义
- curl使用用户名密码
- 网络规划和设计 - 关键路径法 CPM(关键路径、松弛时间)
- 6-DoF问题相关基础知识笔记
- 计算机网络 —— TCP的三次握手四次挥手
- mint-ui 图片懒加载及请求数据加载中提示方法
- Emgu-WPF 激光雷达研究-绘制雷达图
- 深度学习中的优化方法总结
- MySQL 5.7 Windows 免安装版 配置
- Ubuntu(Linux)下的整站下载工具
- fairyguiUI适配问题
热门文章
- 负载平衡是什么意思_什么是负载平衡?为什么要使用它?
- 微型计算机定义,微处理器、微型计算机与微型计算机系统的定义
- 兆信rxn305d使用说明书_直流电源 RXN-305D-II
- 诚之和:小鹏汽车财报里的难言之隐
- 关于网站改版注意的网站优化问题
- 很实用的一款数据恢复软件 easyrecovery 分享给大家
- 推荐在线编程学习网站
- python爬虫抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...
- 每天一段java代码-------第16天(最大公约数最小公倍数)
- Unity丛林战争学习01_TCP_异步接受连接和异步接收消息