【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 ...
最新文章
- Go环境搭建、Sublime Text 3 安装Go语言相关插件gosublime
- Android程序员一年工作经验能重复用十年?高效学习很重要!
- LeetCode 709:To Lower Case
- Linux初到者五个最易犯的错误
- C++——可变模板参数
- IOS开发高级之点餐系统的实现-01
- Django学习笔记(4)
- java 简化判断_简化Java内存分析
- 软件测试bug文档模板,软件bug测试记录模板
- 一键洞悉员工级人效!智邦国际集团业财一体化管理系统:业财一心,基业长青
- Bootstrap 分页导航
- 亿元大奖后抑郁被网友质疑卖惨 信小呆:不想再被打扰
- 大学计算机python期末考试用什么软件_大学计算机--Python算法实践_章节测验,期末考试,慕课答案查询公众号...
- 一张图学会python-一张图让你学会Python
- 【HDOJ】1261 字串数【组合数学--排列+代数】
- BP神经网络设计方法
- 物联网工程导论第二版答案选择题
- 一台变两台,电脑也分身
- STM32F401的外部中断EXTI
- 大学生必读的100本书
热门文章
- Jbd7:Spark
- 汽车充电桩的功率如何选择对保养电池更好?
- 高手系列!数据科学家私藏pandas高阶用法大全 ⛵
- 2020双十一实时大屏_双十一成交额历年对比 2020双十一成交额实时数据更新 - 商业资讯...
- iOS中文版资源库,非常全
- 【React教程】一、React简介
- MAC版本的IBM SPSS Statistics 安装教程
- linux在终端找文件,在Linux Shell上查找文件的四种方法
- 探究 Go Profile-Guided Optimizations(PGO)
- 王垠:怎样成为一个天才