Android AudioRecord

AudioRecord是Android系统中一个用于录制音频的类,它可以从audio soruce(例如麦克风)采集音频数据,并且以PCM格式进行编码,同时将数据存储到buffer中。AudioRecord类的功能也非常强大,提供了丰富的属性和方法,可以满足多种录音需求。其中包括:

设置音频参数:AudioRecord可以设置音频源、音频采样率、通道数、音频格式等参数。

读取音频数据:AudioRecord可以通过read()方法读取音频数据,读取的数据格式为PCM格式。

控制音频录制:AudioRecord可以通过startRecording()、stop等方法来控制音频录制状态。

监听音频录制事件:AudioRecord可以设置监听器,获取音频录制状态和错误事件等,例如setRecordPositionUpdateListener()可以监听录制进度的的变化。

AudioTrack由JAVA代码、JNI代码、C++代码组成:

AudioRecord代码位于:

frameworks/base/media/java/android/media/AudioRecord.java

frameworks/base/media/java/android/media/AudioRecordingMonitor.java

frameworks/base/media/java/android/media/AudioRecordingMonitorClient.java

frameworks/base/core/jni/android_media_AudioRecord.cpp

frameworks/base/core/jni/android_media_AudioRecord.h

frameworks/av/media/libaudioclient/AudioRecord.cpp

frameworks/av/media/libaudioclient/AudioRecord.h

AudioRecord的定义:

public class AudioRecord implements AudioRouting, MicrophoneDirection, AudioRecordingMonitor, AudioRecordingMonitorClient {}
class AudioRecord : public AudioSystem::AudioDeviceCallback {}
public interface AudioRecordingMonitor {}
public interface AudioRecordingMonitorClient {}

二、AudioRecordAPI

AudioRecord分为JAVA API和Native API,下面分别介绍它们。

1、AudioRecord Java API

AudioRecord Java API:

  • AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes) :构造函数

  • static int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat):计算最小缓冲区大小,参数同构造函数中三个参数。

  • Builder setAudioSource(int audioSource):设置音频采集来源

  • void startRecording():开始录制

  • int read(byte[] audioData, int offsetInBytes, int sizeInBytes) :从硬件读取音频数据保存到缓冲区

  • int read(ByteBuffer audioBuffer, int sizeInBytes) :从硬件读取音频数据保存到缓冲区

  • int read(short[] audioData, int offsetInShorts, int sizeInShorts) :从硬件读取音频数据保存到缓冲区

  • void stop():停止录制

  • void release():释放资源

  • int getState():获取状态

  • int getRecordingState():获取录制状态

2、AudioRecord Native API

AudioRecord Native API:

  • AudioRecord(audio_source_t inputSource, uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask, const String16& opPackageName):构造函数

  • status_t start(AudioSystem::sync_event_t event, audio_session_t triggerSession):开始录制

  • void stop():停止录制

  • ssize_t read(void* buffer, size_t userSize, bool blocking):读取数据

  • status_t setInputDevice(audio_port_handle_t deviceId) :设置输入设备

  • void releaseBuffer(const Buffer* audioBuffer):释放缓冲区

三、AudioRecord 流程分析

1、CreateRecord流程分析

Android13 CreateRecord流程分析-CSDN博客

2、AudioRecord startRecording流程分析

Android13 AudioRecord startRecording流程分析-CSDN博客

3、AudioRecord read流程分析

待更新

4、AudioRecord getMinBufferSize

Android13 AudioRecord getMinBufferSize流程分析-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值