android音频录音,(一)MediaRecorder简介

1.MediaRecorder概述

Android 多媒体框架支持捕获和编码各种常见的音频和视频格式,简要介绍音频录音。

2.MediaRecorder

源码路径:
frameworks/base/media/java/android/media/MediaRecorder.java

源码接口:

setAudioSource(MediaRecorder.AudioSource.MIC) 用于设置音频源,如:MediaRecorder.AudioSource.MIC,此MIC一般为设备主MIC:
源码函数:
public native void setAudioSource(@Source int audioSource)throws IllegalStateException;

setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)设置输出文件格式,如:MediaRecorder.OutputFormat.THREE_GPP,THREE_GPP表示录音保存文件为3gp:
源码函数:
public native void setOutputFormat(int output_format)throws IllegalStateException;

setOutputFile()设置输出文件名,如" sdcard/audiorecordtest.3gp":
源码函数:
public void setOutputFile(File file)
{
mPath = null;
mFd = null;
mFile = file;
}

setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)设置音频编码器,MediaRecorder.AudioEncoder.AMR_NB,AMR_NB为编码格式:
源码函数:
public native void setAudioEncoder(int audio_encoder)throws IllegalStateException;

prepare()各参数设置完成后,启动初始化:
源码函数:
public void prepare() throws IllegalStateException, IOException
{
if (mPath != null) {
RandomAccessFile file = new RandomAccessFile(mPath, "rw");
try {
_setOutputFile(file.getFD());
} finally {
file.close();
}
} else if (mFd != null) {
_setOutputFile(mFd);
} else if (mFile != null) {
RandomAccessFile file = new RandomAccessFile(mFile, "rw");
try {
_setOutputFile(file.getFD());
} finally {
file.close();
}
} else {
throw new IOException("No valid output file");
}
_prepare();
}

start() 执行录音启动:
源码函数:
public native void start() throws IllegalStateException;

stop()停止录音:
源码函数:
public native void stop() throws IllegalStateException;

3 权限申请:

使用录音功能,APK必须告知用户它将访问设备的音频输入。从 Android 6.0(API 级别 23)开始,APK录音运行时,必须请求用户批准。APK 需要请求如下权限。

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

以上,MediaRecorder录取模式简要说明,可以参照源码进行查看。

不同参数类型: https://mp.csdn.net/mp_blog/creation/editor/140903503

相关推荐
专业开发者几秒前
Auracast™ 广播音频将如何掀起新一轮音频创新浪潮
物联网·音视频
崎岖Qiu6 分钟前
【设计模式笔记26】:深入浅出「观察者模式」
java·笔记·观察者模式·设计模式
会算数的⑨16 分钟前
Java场景化面经分享(一)—— JVM有关
java·开发语言·jvm·后端·面试
lpfasd12317 分钟前
Spring Boot 4.0 新特性全解析 + 实操指南
java·spring boot·后端
葵花楹19 分钟前
【JAVA期末复习】
java·开发语言·排序算法
38242782724 分钟前
Edge开发者工具:保留日志与禁用缓存详解
java·前端·javascript·python·selenium
山山而川 潺潺如镜33 分钟前
python防止程序多开,但程序运行脚本
android·开发语言·python
m0_5981772335 分钟前
SQL(5)- 事务
java·数据库·sql
C++chaofan41 分钟前
JUC 并发编程从入门到精通(超详细笔记 + 实战案例)
java·jvm·spring boot·redis·后端·并发·juc
阿猿收手吧!42 分钟前
【音视频】将数据包的时间戳从输入流时间基转换为输出流时间基的目的
音视频