【Android】录音机
程序源码:http://download.csdn.net/detail/jsgaobiao/9456694
Ø 【实验目的】
使用AndroidStudio实现一个录音机的功能,要求有录音、播放等按钮并显示出声音的时域波形。
选做:显示出声音的频率波形。
Ø 【实验器材】
Android Studio 1.5.1
Xiaomi Pad (7.9’’): Android 4.4.4 , 1536*2048 xhdpi
Ø 【实验原理】
一、UI界面的设计
1、 UI界面采用框架布局(FrameLayout),并在最高层的FrameLayout属性中添加android:background="@drawable/background"属性,设置背景图片。其中,背景图片文件放在工程“\app\src\main\res\drawable”目录下。
2、 在背景FrameLayout上添加4个按钮(Button)——开始录音、结束录音、播放录音、结束播放。设置好字号、id、对齐等属性。
3、 在按钮下方的空白区域添加一个FrameLayout布局,并在其中添加自定义的DrawView组件用于显示波形。
其中,DrawView是View组件的子类
二、录音和播放功能的实现
1、 录音功能依靠MediaRecorder类实现。
首先定义MediaRecorder类的对象myRecorder,并将其与”开始录音”、“停止录音”按钮关联。
在”开始录音“的监听函数中,通过myRecorder设置录音源为麦克风,以及录音文件的格式(MPEG_4)、路径和编码方式(DEFAULT)等。
在”停止录音”的监听函数中,执行myRecorder的stop()函数,并将myRecorder释放。
2、 播放功能依靠MediaPlayer类实现。
首先定义MediaPlayer类的对象myPlayer,并将其与“播放录音”、“停止播放”按钮的监听函数关联。
在“播放录音”的监听函数中,设置播放文件的路径为“开始录音”中保存的文件路径,并执行myPlayer.start()函数进行播放。
在”停止录音”的监听函数中,执行myPlayer的release()函数,将myPlayer对象释放掉。
3、 为了保证程序的正确运行,防止出现如“未结束录音就开始播放”等可能使得程序崩溃的情况出现,我为4个按钮的监听程序加上了互斥锁——也就是程序中的Recording和Playing两个boolean变量。
通过判断当前是否在录音中或播放中,保证错误的按键顺序不会被执行。同时,如果按键的顺序出现错误,还会出现如:”上一段录音正在播放,请结束播放后重试!“等提示信息。
三、波形绘制
1、 时域波形绘制
通过回调onWaveFormDataCapture函数更新获得waveform的数据,并根据数据的大小将其映射成长短不一的波形(如上图所示)。其中采样的数据个数为128个,采样频率为Visualizer.getMaxCaptureRate() / 2;
2、 频域波形绘制
通过回调onFftDataCapture函数获得fft[]的数据,对其进行一些简单的处理。
其中采样数据个数、采样频率都和1中相同,range=48——将频率数据映射为range等份,再通过直方图的形式可视化,以示和时域波形的区别。其效果如下图所示:
Ø 【小结】
因为之前没有接触过Android编程,第一次实验花费了挺多的时间,收获还比较多。
首先是基本了解了Android工程的结构和Android Studio的基本使用,熟悉了Java的基本语法。其次基本掌握了MediaRecorder、MediaPlayer等音频处理相关的类,学会了使用IDE进行调试和处理错误。
借这个机会我还购买了两本Android编程的书,希望这学期可以跟随机器感知实验这门课程读完这两本书,掌握Android应用开发的本领。
【Android】录音机相关推荐
- android简单录音机波形,android 录音机源码(带波形显示)
[实例简介] android 录音机源码, 可以显示波形 [实例截图] [核心代码] d78dbf10-09a0-4149-b851-d49cef36ac33 └── MediaRecorder ├─ ...
- Android 录音机小米商业项目开源代码 AudioRecord录音暂停 播放 Wav格式(音频二)
Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...
- android 录音机 apk,实时录音机
实时录音机 介绍 所有?Recorder是高品?的?音?. ?是很容易使用,最好的刻?品?.?化的MP3?音. ????,???置,?停和?音?控可用. 支持修剪文件????音. 不?示?告,不需要任 ...
- android 录音机笔记
最近看了一下一个录音机的代码SoundRecorder https://github.com/MiCode/SoundRecorder.git 有点小小总结吧. 他的代码基本上是分层的.如上图.不过 ...
- android 录音机 apk,小米录音机apk
为你带来小米自带录音软件下载,通过安装小米录音机apk到手机即可体验小米录音机的录音功能,非常好用,下载来试试吧. 软件介绍 大都手机系统的自带工具,基本上都处于"能用"的等级,有 ...
- Android录音机占用录音功能,其他app无法正常使用录音功能
项目app录音问题:手机系统录音机在录音过程中退到后台录音,此时打开项目app开始录像,因为录音功能被系统录音机占用,导致项目app不能正常使用录音功能,录制下来的视频文件不能正常播放.检测出现问题的 ...
- Android录音机应用
一.不显示"删除栏": SoundRecorder/src/com/android/soundrecorder/ListActivity.java public void on ...
- Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)
Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...
- android音频杂音问题_android – 使用audiorecorder从音频样本记录中删除噪音
我正在制作像应用程序一样的TalkingTomcat.我正在使用 Android录音机录制语音并使用libsonic我通过改变音调播放声音.但在播放声音时会产生很多噪音. 即使我正在使用音轨播放声音样 ...
- Android多媒体开发:录音机
我们可以使用Android提供的MediaRecorder类的相关方法来实现一个录音机的功能.步骤如下 创建一个MediaRecorder实例 使用 MediaRecorder的setAudioSou ...
最新文章
- CentOS安装高版本gcc
- Win11怎么设置桌面软件小图标 Win11设置桌面软件小图标教程
- Redmine Gantt 实现 (Show relations in Gantt diagram)
- 大数据入门(一)-大数据概念和特点(1)
- (秒杀项目) 4.7 缓存商品与用户
- java封装继承多态
- python图形编程复选按钮和单选按钮详细说明_python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例...
- tomcat-解决get请求中文乱码问题
- word2003流程图变成图片_Microsoft Office 2003(word2003)制作流程图的操作方法介绍
- 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
- 一味研究:岩石股份摘帽即收“两连板”,海银系要认真酿酒了吗?
- 0起步的摄影初学笔记
- 华为天才少年火了!刚毕业就拿201万年薪,全球仅4人!又是这个学校的
- xinxin - 初步学习tkinter
- 解决雷电模拟器上Xposed框架不能用的问题。
- python|简单实现英文单词大小写转化
- 智能车小白必看,该竞赛相关宝贵经验+资源借鉴总结1
- nginx的日志放在哪里?
- 再预告:DIY大宝剑,大宝剑二号 ——名字还没想好
- 金仓数据库KStudio使用手册(3. 数据库管理)