程序源码: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】录音机相关推荐

  1. android简单录音机波形,android 录音机源码(带波形显示)

    [实例简介] android 录音机源码, 可以显示波形 [实例截图] [核心代码] d78dbf10-09a0-4149-b851-d49cef36ac33 └── MediaRecorder ├─ ...

  2. Android 录音机小米商业项目开源代码 AudioRecord录音暂停 播放 Wav格式(音频二)

    Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...

  3. android 录音机 apk,实时录音机

    实时录音机 介绍 所有?Recorder是高品?的?音?. ?是很容易使用,最好的刻?品?.?化的MP3?音. ????,???置,?停和?音?控可用. 支持修剪文件????音. 不?示?告,不需要任 ...

  4. android 录音机笔记

    最近看了一下一个录音机的代码SoundRecorder https://github.com/MiCode/SoundRecorder.git  有点小小总结吧. 他的代码基本上是分层的.如上图.不过 ...

  5. android 录音机 apk,小米录音机apk

    为你带来小米自带录音软件下载,通过安装小米录音机apk到手机即可体验小米录音机的录音功能,非常好用,下载来试试吧. 软件介绍 大都手机系统的自带工具,基本上都处于"能用"的等级,有 ...

  6. Android录音机占用录音功能,其他app无法正常使用录音功能

    项目app录音问题:手机系统录音机在录音过程中退到后台录音,此时打开项目app开始录像,因为录音功能被系统录音机占用,导致项目app不能正常使用录音功能,录制下来的视频文件不能正常播放.检测出现问题的 ...

  7. Android录音机应用

    一.不显示"删除栏": SoundRecorder/src/com/android/soundrecorder/ListActivity.java public void on ...

  8. Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)

    Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...

  9. android音频杂音问题_android – 使用audiorecorder从音频样本记录中删除噪音

    我正在制作像应用程序一样的TalkingTomcat.我正在使用 Android录音机录制语音并使用libsonic我通过改变音调播放声音.但在播放声音时会产生很多噪音. 即使我正在使用音轨播放声音样 ...

  10. Android多媒体开发:录音机

    我们可以使用Android提供的MediaRecorder类的相关方法来实现一个录音机的功能.步骤如下 创建一个MediaRecorder实例 使用 MediaRecorder的setAudioSou ...

最新文章

  1. Go环境搭建、Sublime Text 3 安装Go语言相关插件gosublime
  2. Android程序员一年工作经验能重复用十年?高效学习很重要!
  3. LeetCode 709:To Lower Case
  4. Linux初到者五个最易犯的错误
  5. C++——可变模板参数
  6. IOS开发高级之点餐系统的实现-01
  7. Django学习笔记(4)
  8. java 简化判断_简化Java内存分析
  9. 软件测试bug文档模板,软件bug测试记录模板
  10. 一键洞悉员工级人效!智邦国际集团业财一体化管理系统:业财一心,基业长青
  11. Bootstrap 分页导航
  12. 亿元大奖后抑郁被网友质疑卖惨 信小呆:不想再被打扰
  13. 大学计算机python期末考试用什么软件_大学计算机--Python算法实践_章节测验,期末考试,慕课答案查询公众号...
  14. 一张图学会python-一张图让你学会Python
  15. 【HDOJ】1261 字串数【组合数学--排列+代数】
  16. BP神经网络设计方法
  17. 物联网工程导论第二版答案选择题
  18. 一台变两台,电脑也分身
  19. STM32F401的外部中断EXTI
  20. 大学生必读的100本书

热门文章

  1. Jbd7:Spark
  2. 汽车充电桩的功率如何选择对保养电池更好?
  3. 高手系列!数据科学家私藏pandas高阶用法大全 ⛵
  4. 2020双十一实时大屏_双十一成交额历年对比 2020双十一成交额实时数据更新 - 商业资讯...
  5. iOS中文版资源库,非常全
  6. 【React教程】一、React简介
  7. MAC版本的IBM SPSS Statistics 安装教程
  8. linux在终端找文件,在Linux Shell上查找文件的四种方法
  9. 探究 Go Profile-Guided Optimizations(PGO)
  10. 王垠:怎样成为一个天才