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

相关推荐
野生的码农3 小时前
码农的妇产科实习记录
android·java·人工智能
王正南4 小时前
kali-linux 虚拟机连接安卓模拟器
android·linux·运维·虚拟机连接模拟器·安卓模拟器,linux虚拟机
撩得Android一次心动4 小时前
Android Jetpack 概述
android·android jetpack
JinBeen4 小时前
sourcetree下码云gitee的ssh经常失效问题
android·gitee·ssh
毕设源码-赖学姐4 小时前
【开题答辩全过程】以 高校人才培养方案管理系统的设计与实现为例,包含答辩的问题和答案
java
帅得不敢出门5 小时前
Android各芯片平台日志打开及获取
android
一起努力啊~5 小时前
算法刷题-二分查找
java·数据结构·算法
极客小云5 小时前
【Android Gradle 构建常见报错及解决方法大全】
android·运维开发
小途软件5 小时前
高校宿舍访客预约管理平台开发
java·人工智能·pytorch·python·深度学习·语言模型
J_liaty5 小时前
Java版本演进:从JDK 8到JDK 21的特性革命与对比分析
java·开发语言·jdk