安卓录音方法

核心类名 主要方法(录音相关) 场景
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_STATERESULT_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. 若编码过程中突然无数据输入,检查上游录音源是否被抢占
相关推荐
恋猫de小郭4 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab5 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe10 小时前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农17 小时前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少18 小时前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker18 小时前
一杯美式搞定 Kotlin 空安全
android·kotlin
三少爷的鞋18 小时前
Android 协程时代,Handler 应该退休了吗?
android
火柴就是我1 天前
让我们实现一个更好看的内部阴影按钮
android·flutter
砖厂小工2 天前
用 GLM + OpenClaw 打造你的 AI PR Review Agent — 让龙虾帮你审代码
android·github
张拭心2 天前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能