当前位置: 首页 > 编程笔记 >

Android App调用MediaRecorder实现录音功能的实例

庄文栋
2023-03-14
本文向大家介绍Android App调用MediaRecorder实现录音功能的实例,包括了Android App调用MediaRecorder实现录音功能的实例的使用技巧和注意事项,需要的朋友参考一下

MediaRecorder

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

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

JAVA Framework的路径:

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

JAVA本地调用部分(JNI):

frameworks/base/media/jni/android_media_MediaRecorder.cpp

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

frameworks/base/include/media/

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

frameworks/base/media/libmedia/ 

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

frameworks/base/media/libmediaplayerservice/

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

external/opencore/android/author

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

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

import java.io.IOException; 
 
import android.app.Activity; 
import android.media.MediaRecorder; 
import android.os.Bundle; 
/** 
 * @description 对通过android系统手机进行录音的一点说明测试 
 * @author chenzheng_java 
 * @since 2011/03/23 
 */ 
public class MediaRecordActivity extends Activity { 
  
 MediaRecorder mediaRecorder ; 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
   
  mediaRecorder = new MediaRecorder(); 
  record(); 
   
 } 
  
 /** 
  * 开始录制 
  */ 
 private void record(){ 
  /** 
   * mediaRecorder.setAudioSource设置声音来源。 
   * MediaRecorder.AudioSource这个内部类详细的介绍了声音来源。 
   * 该类中有许多音频来源,不过最主要使用的还是手机上的麦克风,MediaRecorder.AudioSource.MIC 
   */ 
  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
  /** 
   * mediaRecorder.setOutputFormat代表输出文件的格式。该语句必须在setAudioSource之后,在prepare之前。 
   * OutputFormat内部类,定义了音频输出的格式,主要包含MPEG_4、THREE_GPP、RAW_AMR……等。 
   */ 
  mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
  /** 
   * mediaRecorder.setAddioEncoder()方法可以设置音频的编码 
   * AudioEncoder内部类详细定义了两种编码:AudioEncoder.DEFAULT、AudioEncoder.AMR_NB 
   */ 
  mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
  /** 
   * 设置录音之后,保存音频文件的位置 
   */ 
  mediaRecorder.setOutputFile("file:///sdcard/myvido/a.3pg"); 
   
  /** 
   * 调用start开始录音之前,一定要调用prepare方法。 
   */ 
  try { 
   mediaRecorder.prepare(); 
   mediaRecorder.start(); 
  } catch (IllegalStateException e) { 
   e.printStackTrace(); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } 
   
 } 
  
 /*** 
  * 此外,还有和MediaRecorder有关的几个参数与方法,我们一起来看一下: 
  * sampleRateInHz :音频的采样频率,每秒钟能够采样的次数,采样率越高,音质越高。 
  * 给出的实例是44100、22050、11025但不限于这几个参数。例如要采集低质量的音频就可以使用4000、8000等低采样率 
  * 
  * channelConfig :声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声 
  * 
  * recorder.stop();停止录音 
  * recorder.reset(); 重置录音 ,会重置到setAudioSource这一步 
  * recorder.release(); 解除对录音资源的占用 
  */ 
} 

 

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

<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
 类似资料:
  • 本文向大家介绍IOS开发实现录音功能,包括了IOS开发实现录音功能的使用技巧和注意事项,需要的朋友参考一下 导入框架: 声明全局变量: 在ViewDidLoad中: 按钮的触发事件 代理方法:

  • 本文向大家介绍怎么使用HTML5实现录音的功能?相关面试题,主要包含被问及怎么使用HTML5实现录音的功能?时的应答技巧和注意事项,需要的朋友参考一下 navigatior.getUserMedia() 这个接口已经被废弃了,请使用 MediaDevices.getUserMedia()

  • 本文向大家介绍python实现播放音频和录音功能示例代码,包括了python实现播放音频和录音功能示例代码的使用技巧和注意事项,需要的朋友参考一下 音频预处理 这一讲主要介绍些音频基本处理方式,为接下来的语音识别打基础。 三种播放音频的方式 使用 python 播放音频有以下几种方式: os.system() os.system(file) 调用系统应用来打开文件,file 可为图片或者音频文件。

  • 本文向大家介绍Android 实现电话来去自动录音的功能,包括了Android 实现电话来去自动录音的功能的使用技巧和注意事项,需要的朋友参考一下 我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能。        来去电自动录音的关键在于如何监听手机电话状态的转变:    

  • 本文向大家介绍python3 实现调用串口功能,包括了python3 实现调用串口功能的使用技巧和注意事项,需要的朋友参考一下 python调用串口,写入数据 以上这篇python3 实现调用串口功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍android实现录屏小功能,包括了android实现录屏小功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了android实现录屏小功能的具体代码,供大家参考,具体内容如下 思路 android实现录屏功能有两种方案,一种是直接使用android自带的MediaProjectionManager实现录屏功能,第二种是是只录语音,用户的操作通过某种方式进行记录保存,最