本文转载自:http://www.jb51.net/article/82281.htm

这篇文章主要介绍了Android App调用MediaRecorder实现录音功能的实例,MediaRecorder非常强大,不仅能够用来录制音频还可以录制视频,需要的朋友可以参考下
 

MediaRecorder

Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。
MediaRecorder在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaRecorder程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。
以开源的Android为例MediaRecorder的代码主要在以下的目录中:
JAVA程序的路径:

  1. packages/apps/Camera/src/com/android/camera/VideoCamera.java

JAVA Framework的路径:

  1. frameworks/base/media/java/android/media/MediaRecorder.java

JAVA本地调用部分(JNI):

  1. frameworks/base/media/jni/android_media_MediaRecorder.cpp

这部分内容编译成为目标是libmedia_jni.so。
主要的头文件在以下的目录中:

  1. frameworks/base/include/media/

多媒体底层库在以下的目录中:

  1. frameworks/base/media/libmedia/

这部分的内容被编译成库libmedia.so。
多媒体服务部分:

  1. frameworks/base/media/libmediaplayerservice/

MediaRecorder和MeidaPlayer使用相同的服务。
基于OpenCore部分

  1. external/opencore/android/author

这部分内容被编译成库libopencoreauthor.so。

基本的录音功能实现:
好了,了解了大概的路径,具体的调用MediaRecorder的内容便可以深入各文件中去研究,接下来我们便直接来看例子,这个录音器的代码实现的说明都写在了注释中,非常简单:

  1. import java.io.IOException;
  2.  
  3. import android.app.Activity;
  4. import android.media.MediaRecorder;
  5. import android.os.Bundle;
  6. /**
  7. * @description 对通过android系统手机进行录音的一点说明测试
  8. * @author chenzheng_java
  9. * @since 2011/03/23
  10. */
  11. public class MediaRecordActivity extends Activity {
  12.  
  13. MediaRecorder mediaRecorder ;
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.main);
  18.  
  19. mediaRecorder = new MediaRecorder();
  20. record();
  21.  
  22. }
  23.  
  24. /**
  25. * 开始录制
  26. */
  27. private void record(){
  28. /**
  29. * mediaRecorder.setAudioSource设置声音来源。
  30. * MediaRecorder.AudioSource这个内部类详细的介绍了声音来源。
  31. * 该类中有许多音频来源,不过最主要使用的还是手机上的麦克风,MediaRecorder.AudioSource.MIC
  32. */
  33. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  34. /**
  35. * mediaRecorder.setOutputFormat代表输出文件的格式。该语句必须在setAudioSource之后,在prepare之前。
  36. * OutputFormat内部类,定义了音频输出的格式,主要包含MPEG_4、THREE_GPP、RAW_AMR……等。
  37. */
  38. mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  39. /**
  40. * mediaRecorder.setAddioEncoder()方法可以设置音频的编码
  41. * AudioEncoder内部类详细定义了两种编码:AudioEncoder.DEFAULT、AudioEncoder.AMR_NB
  42. */
  43. mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  44. /**
  45. * 设置录音之后,保存音频文件的位置
  46. */
  47. mediaRecorder.setOutputFile("file:///sdcard/myvido/a.3pg");
  48.  
  49. /**
  50. * 调用start开始录音之前,一定要调用prepare方法。
  51. */
  52. try {
  53. mediaRecorder.prepare();
  54. mediaRecorder.start();
  55. } catch (IllegalStateException e) {
  56. e.printStackTrace();
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60.  
  61. }
  62.  
  63. /***
  64. * 此外,还有和MediaRecorder有关的几个参数与方法,我们一起来看一下:
  65. * sampleRateInHz :音频的采样频率,每秒钟能够采样的次数,采样率越高,音质越高。
  66. * 给出的实例是44100、22050、11025但不限于这几个参数。例如要采集低质量的音频就可以使用4000、8000等低采样率
  67. *
  68. * channelConfig :声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声
  69. *
  70. * recorder.stop();停止录音
  71. * recorder.reset(); 重置录音 ,会重置到setAudioSource这一步
  72. * recorder.release(); 解除对录音资源的占用
  73. */
  74. }

这里,一定要注意一点,那就是如果我们想要录音的话,那么首先得添加录音权限到AndroidManiferst.xml中:

  1. <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>

Android App调用MediaRecorder实现录音功能的实例【转】的更多相关文章

  1. android app自动化测试之UIAutomator

    一.UIAutomator Android自动化测试工具有很多,但是要免费.易上手,本人觉得就直接使用Eclipse自带的UIAutomator就不错.测试人员无需跟开发要代码信息,只要手机上有安装之 ...

  2. Android app启动activity并调用onCreate()方法时都默默地干了什么?

    Android app启动activity并调用onCreate() 方法时都默默地干了什么?   在AndroidManifest.xml文件中的<intent-filter>元素中有这 ...

  3. 原生Android App项目调用Untiy导出的Android项目

    背景:采用Google VR SDK for Unity 开发3D场景功能,然后导出Android项目,合并到一个Android App里面,供其它Activity调用. 用Google VR for ...

  4. android app widget 创建调用周期

    1 ?Android widget 大小问题 2 ?RemoteViewService Android开发历程_15(AppWidget的使用) Appwidget就是手机应用中常常放在桌面(即hom ...

  5. Android简单的利用MediaRecorder进行录音的实例代码

    MainActivity.java package com.example.soundrecord_demo; import java.io.IOException; import android.m ...

  6. Android(java)学习笔记117:英文朗诵android App编写实例

    1.首先,我先把代码放到下面: package com.himi.speaker; import java.util.Locale; import android.app.Activity; impo ...

  7. 通过实例介绍Android App自动化测试框架--Unittest

    1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...

  8. 简单两步实现Android app 本地设置信息的保存与调用

    调用值 SharedPreferences preferences = this.getSharedPreferences("mspda", 0); lblVer.setText( ...

  9. Android音频录制MediaRecorder之简易的录音软件实现代码(转)

    原文:http://www.jb51.net/article/46182.htm Android音频录制MediaRecorder之简易的录音软件实现代码 这篇文章主要介绍了Android音频录制Me ...

随机推荐

  1. swift protocol 与类继承结合时的bug

    protocol CommonTrait: class { func commonBehavior() -> String } extension CommonTrait { func comm ...

  2. Protecting resources in iPhone and iPad apps

    源码:https://github.com/lingzhao/EncryptedResourceDemo UPDATE: The example project has been updated to ...

  3. Vue课程思维导图

  4. 模拟title提示!

    转载http://wouit.com/post/2013-08-15/40052169981html <a href="#" tishi="常见的网页新闻循环跳动显 ...

  5. RabbitMQ系列(二)--基础组件

    声明:对于RabbitMQ的学习基于某课网相关视频和<RabbitMQ实战指南>一书,后续关于RabbitMQ的博客都是基于二者 一.什么是RabbitMQ RabbitMQ是开源代理和队 ...

  6. vue基础---计算属性和侦听器

    [一]计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> ...

  7. 王垠:写给支持和反对《完全用Linux工作》的人们

    王垠:写给支持和反对<完全用Linux工作>的人们 在一阵阵唾骂和欢呼声中,<完全用linux工作>被转载到了天涯海角.很多人支持我,也有很多人唾骂我.我不知道它是怎样流传到那 ...

  8. Codeforces 280C - Game on Tree

    传送门:280C - Game on Tree 不知道期望是啥的请自行Baidu或Google,(溜了 题目大意,有一棵有根树,每次随机选择一个节点,将这个节点和它的子树删除,问将整棵树删除的期望次数 ...

  9. java导出word的6种方式(转发)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  10. config对象的使用及常用方法

    config对象的使用及常用方法 制作人:全心全意 config对象主要用于取得服务器的配置信息.通过pageContext对象的getServletConfig()方法可以获取一个config对象. ...