安卓录音方法

核心类名 主要方法(录音相关) 场景
android.media. AudioRecord mAudioRecord = new AudioRecord.Builder() .setAudioFormat(format) .setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION) .setBufferSizeInBytes(minBufferSize * 2) .build(); - startRecording() - stop() - read(byte\[\] audioData, int offsetInBytes, int sizeInBytes) - release() 1. 实时语音处理场景(如语音识别、语音唤醒、实时降噪) 2. 需要获取原始 PCM 数据进行自定义处理(如音效算法、音频分析) 3. 构建多轨录音或复杂音频合成(需手动处理数据拼接) 4. 对录音数据有特殊格式要求(非标准编码格式) 检查录音权限占用状态,通过尝试初始化判断资源是否可用 1. 初始化前检查AudioRecord.getMinBufferSize()返回值是否有效 2. 尝试创建AudioRecord实例,若状态为STATE_INITIALIZED则表示可用 3. 失败时延迟重试或提示用户 "麦克风被占用"
android.media. MediaRecorder mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); - setAudioSource(int audioSource) - prepare() - start() - stop() - release() 1. 简单录音场景(如语音备忘录、语音留言) 2. 直接直接保存为常见音频格式(MP3、AAC 等) 3. 需快速实现录音功能(无需关注编码细节) 4. 结合视频录制(作为音视频同步录制的音频源) 依赖系统自动资源管理,通过异常捕获判断冲突 1. 在prepare()或start()时捕获IOException,通常表示设备被占用 2. 失败后提示用户关闭其他录音应用并重试
AAudio AudioStreamBuilder - setDirection(int direction) - build() 1. 低延迟录音场景(如乐器演奏录音、实时音频效果器) 2. 专业音频应用(如音乐制作 APP、音频工作站) 3. 需要与音频输出(播放)同步的场景(如实时监听录音) 4. 对系统资源占用敏感的高性能录音需求 明确指定共享模式,通过返回码判断冲突,支持更精细的冲突处理 1. 构建流时设置setSharingMode(SHARING_MODE_SHARED)(默认独占模式易冲突) 2. 检查open()返回码,若为RESULT_ERROR_INVALID_STATE或RESULT_ERROR_BUSY则表示冲突 3. 可注册AudioManager监听,当其他应用释放资源后重试
AudioStream - open() - start() - read(ByteBuffer buffer, int capacity) - stop() - close()
Oboe 开发者应考虑使用开源 Oboe 库,这个库可在 GitHub 上获得。Oboe 是一个 C++ 封装容器,提供与 AAudio 非常相似的 API。该封装容器在 AAudio 可用时对其进行调用,并在 AAudio 不可用时回退到 OpenSL ES
MediaCodec MIME_TYPE = "audio/mp4a-latm"; mEncoder = MediaCodec.createEncoderByType(MIME_TYPE); mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mEncoder.start(); - configure(MediaFormat format, Surface surface, MediaCrypto crypto, int flags) - start() - queueInputBuffer(int index, int offset, int size, long presentationTimeUs, int flags) - stop() - release() 1. 自定义音频编码场景(如指定特殊比特率、采样率的 AAC 编码) 2. 音视频混合编码(与视频编码器协同工作) 3. 需硬件加速编码以节省 CPU 资源的场景 4. 网络实时传输场景(编码为低带宽格式) 完全依赖系统处理冲突,应用层无控制能力 1. 与AudioRecord配合使用,先确保AudioRecord初始化成功 2. 若编码过程中突然无数据输入,检查上游录音源是否被抢占
相关推荐
stevenzqzq6 小时前
Android Jetpack Compose 列表开发指南:为什么你不需要再为底部 Item 写额外间距
android·android jetpack
撩得Android一次心动13 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
是真的小外套14 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
用户20187928316716 小时前
一文讲透 Android Native Heap 监控原理:一间"只进不出"的仓库,和总部派来的侦探
android
YB137517 小时前
Jetpack Compose 动画animate*AsState
android
高晶17 小时前
Android 通讯录应用开发实战:从零搭建 SQLite 数据持久化完整项目
android·设计模式·前端框架
隐擎fox18 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
换元不配限20 小时前
从 AsyncTask 到现代并发:Android 异步方案的演进与替代实践
android·asynctask·异步编程·方案对比·asynctask替代方案
用户20187928316720 小时前
你的 App 为什么是「电量刺客」?——从一条 WakeLock 追到 Linux 内核的 Android 省电原理全解
android