跳转到主要内容
AOQ SDK 参考

Android SDK

AOQ Android SDK API 参考

AOQ Client SDK Android 版提供完整的实时音视频通信能力,包括引擎生命周期管理、音频/视频采集与播放、编解码配置、外部音频流注入、音频文件混音、实时消息收发、音视频帧数据回调等功能。本文档为 Android 平台 Java API 的完整参考。

接口目录

引擎生命周期

接口简介
createEngine创建引擎实例(单例模式)
destroy销毁引擎实例
getVersion获取 SDK 版本号
connect连接 Relay 服务器
disconnect断开服务器连接

音频设备管理

接口简介
startAudioCapture打开音频采集设备(麦克风)
stopAudioCapture关闭音频采集设备
muteAudioCapture静音或取消静音音频采集
startAudioPlayer开始音频渲染(播放远端音频)
stopAudioPlayer停止音频渲染
pauseAudioPlayer暂停音频渲染,支持淡出
resumeAudioPlayer恢复音频渲染,支持淡入
interruptAudioPlayer打断本轮音频通话
enableSpeakerphone切换音频输出到扬声器或听筒
isSpeakerphoneEnabled查询当前是否使用扬声器输出

音频编码配置

接口简介
setAudioEncoderConfig设置音频编码参数
setAudioDecoderConfig设置音频解码参数

视频设备管理

接口简介
startVideoCapture打开视频采集设备(摄像头)
stopVideoCapture关闭视频采集设备
switchCamera切换前后置摄像头
setLocalView设置或移除本地视频渲染窗口
setRemoteView设置或移除远端视频渲染窗口

视频编码与外部输入

接口简介
setVideoEncoderConfig设置视频编码参数
pushExternalVideoCapturedFrame推送外部采集视频帧
pushExternalVideoEncodedFrame推送外部已编码视频帧

媒体流发送控制 / 实时消息

接口简介
enableSendMediaStream控制本地媒体流的发送开关
sendDataMsg发送实时数据消息

音频文件播放

接口简介
startAudioFile开始推流播放本地音频文件
stopAudioFile停止音频文件播放
pauseAudioFile暂停音频文件播放
resumeAudioFile恢复音频文件播放
getAudioFileDuration获取音频文件总时长
getAudioFileCurrentPosition获取音频文件当前播放位置
setAudioFilePositionMillis设置音频文件播放位置(seek)
setAudioFileVolume设置音频文件音量
getAudioFileVolume获取音频文件当前音量

外部音频流

接口简介
addAudioExternalStream新增一条外部音频流
removeAudioExternalStream移除外部音频流
pushAudioExternalStreamData输入外部音频 PCM 数据
setAudioExternalStreamVolume设置外部音频流音量
getAudioExternalStreamVolume获取外部音频流音量
clearAudioExternalStreamBuffer清空外部音频流缓存

音视频帧回调

接口简介
setAudioFrameObserver设置音频帧数据回调监听
enableAudioFrameObserver开启或关闭指定位置的音频帧回调
setVideoFrameObserver设置视频帧数据回调监听
enableVideoFrameObserver开启或关闭指定位置的视频帧回调

AoqClientListener 回调

回调简介
onError引擎错误回调
onWarning引擎警告回调
onConnectionStatusChange连接状态变化回调
onStats引擎统计信息回调
onAudioDeviceStateChanged音频设备操作状态变化回调
onAudioDeviceRouteChanged音频输出路由变化回调
onAudioDeviceInterrupted音频设备中断回调
onVideoDeviceStateChanged视频设备操作状态变化回调
onAudioDeviceFocusChanged音频焦点变化回调
onAudioFileState音频文件播放状态回调
onDataMsg收到实时数据消息回调

接口详情

引擎生命周期

createEngine 创建引擎实例。SDK 内部以全局单例方式持有引擎,重复调用会返回已创建的实例。
@NonNull
public static AoqClientEngine createEngine(
    @NonNull Context context,
    @NonNull AoqCreateConfig config,
    @NonNull AoqClientListener listener)
参数类型说明
contextContextAndroid 应用上下文
configAoqCreateConfig引擎创建配置
listenerAoqClientListener引擎事件回调监听
返回值:AoqClientEngine 引擎实例,不会返回 null。 destroy 销毁引擎实例,释放所有资源。
public static int destroy()
返回值:0 表示成功;非 0 表示失败。 getVersion
@NonNull
public static String getVersion()
返回值:版本号字符串,如 "1.0.0"。 connect 连接 Relay 服务器。连接参数由业务方 AppServer 通过 /api/v1/allocate 分配后下发给客户端。
public abstract int connect(@NonNull AoqConnectConfig config)
返回值:0 表示调用已下发(异步执行);非 0 表示参数校验失败。 disconnect
public abstract int disconnect()
返回值:0 表示调用已下发(异步执行);非 0 表示失败。

音频设备管理

public abstract int startAudioCapture(@NonNull AoqAudioCaptureConfig config)
public abstract int stopAudioCapture()
public abstract int muteAudioCapture(boolean mute)
public abstract int startAudioPlayer(@NonNull AoqAudioPlaybackConfig config)
public abstract int stopAudioPlayer()
public abstract int pauseAudioPlayer(int fadeMs)
public abstract int resumeAudioPlayer(int fadeMs)
public abstract int interruptAudioPlayer(@NonNull AoqTrackType trackType, int fadeMs)
public abstract int enableSpeakerphone(boolean enable)
public abstract boolean isSpeakerphoneEnabled()
fadeMs:淡出/淡入时长(毫秒);0 表示立即执行。

音频编码配置

public abstract int setAudioEncoderConfig(@NonNull AoqAudioCodecConfig config)
public abstract int setAudioDecoderConfig(@NonNull AoqAudioCodecConfig config)

视频设备管理

public abstract int startVideoCapture(@NonNull AoqVideoCaptureConfig config)
public abstract int stopVideoCapture()
public abstract int switchCamera(@NonNull AoqCameraDirection direction)
public abstract int setLocalView(@NonNull AoqTrackType trackType, @Nullable AoqVideoCanvas canvas)
public abstract int setRemoteView(@NonNull AoqTrackType trackType, @Nullable AoqVideoCanvas canvas)
setLocalView/setRemoteView 的 trackType 参数传 AoqTrackTypeVideo。

视频编码与外部输入

public abstract int setVideoEncoderConfig(@NonNull AoqVideoCodecConfig config)
public abstract int pushExternalVideoCapturedFrame(@NonNull AoqTrackType trackType, @NonNull AoqVideoFrame frame)
public abstract int pushExternalVideoEncodedFrame(@NonNull AoqTrackType trackType, @NonNull AoqVideoEncodedFrame frame)
pushExternalVideoCapturedFrame 仅在 startVideoCapture(isExternal=true) 后消费。若缓冲区满返回 AoqErrorCodeVideoExternalBufferFull(210)。

媒体流发送控制

public abstract int enableSendMediaStream(@NonNull AoqTrackType trackType, boolean enable)
建议初始化后先 enableSendMediaStream(false),待 onConnectionStatusChange(Connected) 后再开启。

音频文件播放

public abstract int startAudioFile(@NonNull String fileId, @NonNull AoqAudioFileMixConfig config)
public abstract int stopAudioFile(@NonNull String fileId)
public abstract int pauseAudioFile(@NonNull String fileId)
public abstract int resumeAudioFile(@NonNull String fileId)
public abstract long getAudioFileDuration(@NonNull String fileId)
public abstract long getAudioFileCurrentPosition(@NonNull String fileId)
public abstract int setAudioFilePositionMillis(@NonNull String fileId, long positionMillis)
public abstract int setAudioFileVolume(@NonNull String fileId, @NonNull AoqAudioStreamDirection type, int volume)
public abstract int getAudioFileVolume(@NonNull String fileId, @NonNull AoqAudioStreamDirection type)

外部音频流

public abstract int addAudioExternalStream(@NonNull String streamId, @NonNull AoqAudioExternalStreamConfig config)
public abstract int removeAudioExternalStream(@NonNull String streamId)
public abstract int pushAudioExternalStreamData(@NonNull String streamId, @NonNull AoqAudioFrameData data)
public abstract int setAudioExternalStreamVolume(@NonNull String streamId, @NonNull AoqAudioStreamDirection type, int volume)
public abstract int getAudioExternalStreamVolume(@NonNull String streamId, @NonNull AoqAudioStreamDirection type)
public abstract void clearAudioExternalStreamBuffer(@NonNull String streamId, int fadeoutMs)
pushAudioExternalStreamData 缓冲区满时返回 AoqErrorCodeAudioExternalBufferFull(110),建议 Sleep 30ms 后重试。

实时消息

public abstract int sendDataMsg(@NonNull AoqDataMsg msg)

音频帧回调

public abstract int setAudioFrameObserver(@Nullable AoqClientListener.AoqAudioFrameListener listener)
public abstract int enableAudioFrameObserver(boolean enabled, @NonNull AoqAudioSource audioSource, @NonNull AoqAudioObserverConfig config)

视频帧回调

public abstract int setVideoFrameObserver(@Nullable AoqClientListener.AoqVideoFrameListener listener)
public abstract int enableVideoFrameObserver(boolean enabled, @NonNull AoqVideoSource videoSource, @NonNull AoqVideoObserverConfig config)

AoqClientListener 回调

AoqClientListener 是 SDK 所有异步事件通知的统一出口。所有回调方法都带有默认空实现,无需强制重写不关心的方法。
public void onError(int code, String message)
public void onWarning(int code, String message)
public void onConnectionStatusChange(@NonNull AoqConnectionStatus status)
public void onStats(@NonNull AoqStats stats)
public void onAudioDeviceStateChanged(@NonNull AoqAudioDeviceState state)
public void onAudioDeviceRouteChanged(int routeType)
public void onAudioDeviceInterrupted(boolean interrupt)
public void onVideoDeviceStateChanged(@NonNull AoqVideoDeviceState state)
public void onAudioDeviceFocusChanged(int audioFocus)
public void onAudioFileState(@NonNull AoqAudioFileState state)
public void onDataMsg(@NonNull AoqDataMsg msg)
连接状态流转:Disconnected → Connecting → Connected/Failed → Disconnected。

AoqAudioFrameListener

public interface AoqAudioFrameListener {
    default void onCapturedAudioFrame(@NonNull AoqAudioFrameData frame) {}
    default void onProcessCapturedAudioFrame(@NonNull AoqAudioFrameData frame) {}
    default void onPublishAudioFrame(@NonNull AoqTrackType trackType, @NonNull AoqAudioFrameData frame) {}
    default void onPlaybackAudioFrame(@NonNull AoqAudioFrameData frame) {}
}

AoqVideoFrameListener

public interface AoqVideoFrameListener {
    default boolean onCapturedVideoFrame(@NonNull AoqVideoFrameData frame) { return false; }
    default boolean onPreEncodeVideoFrame(@NonNull AoqTrackType trackType, @NonNull AoqVideoFrameData frame) { return false; }
    default boolean onRemoteVideoFrame(@NonNull AoqTrackType trackType, @NonNull AoqVideoFrameData frame) { return false; }
}
返回 true 表示数据已修改需写回 SDK(仅 I420 写回生效)。frame 中 ByteBuffer/textureId 仅在回调期间有效,异步使用需自行拷贝。

数据类型与枚举

通用类型

AoqCreateConfig
字段类型默认值说明
workDirString""SDK 工作目录
isBTScoModebooleanfalsetrue 蓝牙 SCO 模式;false A2DP 模式
enableDumpAudiobooleanfalse是否开启音频 dump(调试用)
extrasString""扩展参数字符串
AoqConnectConfig
字段类型默认值说明
tokenString""连接鉴权 Token
sidString""会话 ID
certFingerprintString""服务器证书指纹
relayEndpointsList<AoqRelayEndpoint>Relay 接入点列表
workspaceIdHashString""工作空间 ID Hash
publishTracksList<AoqTrackParam>本端发布轨道列表
subscribeTracksList<AoqTrackParam>本端订阅轨道列表

统计信息类型

AoqNetworkStats
字段类型说明
sendBitrateint发送码率(bps)
sendByteslong累计发送字节数
recvBitrateint接收码率(bps)
recvByteslong累计接收字节数
lossint丢包率(0-100)
rttint往返延迟(ms)

枚举类型

AoqErrorCode
枚举值说明
AoqErrorCodeOK0成功
AoqErrorCodeParamInvalid1参数非法
AoqErrorCodeStateInvalid2状态非法
AoqErrorCodeUnSupport3不支持
AoqErrorCodeAudio100音频通用错误
AoqErrorCodeAudioExternalBufferFull110外部音频缓冲区满
AoqErrorCodeAudioDevice120音频设备通用错误
AoqErrorCodeAudioDeviceRecordingAuthFailed121录音权限未获取
AoqErrorCodeAudioDeviceRecordingOccupied122录音设备被占用
AoqErrorCodeAudioDeviceRecordingBackgroundStart123后台启动录音失败
AoqErrorCodeAudioDeviceRecordingStartFail124录音启动失败
AoqErrorCodeAudioDevicePlayoutOccupied125播放设备被占用
AoqErrorCodeAudioDevicePlayoutBackgroundStart126后台启动播放失败
AoqErrorCodeAudioDevicePlayoutStartFail127播放启动失败
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode128听筒需要 VoIP 模式
AoqErrorCodeVideo200视频通用错误
AoqErrorCodeVideoExternalBufferFull210外部视频缓冲区满
AoqErrorCodeVideoExternalCaptureNotEnabled211外部视频采集未启用
AoqErrorCodeVideoExternalEncoderNotEnabled212外部视频编码未启用
AoqErrorCodeVideoDevice220视频设备通用错误
AoqErrorCodeVideoDeviceCameraOpenFail221摄像头打开失败
AoqErrorCodeVideoDeviceCameraAuthFailed222摄像头权限未获取
AoqErrorCodeVideoDeviceCameraOccupied223摄像头被占用
AoqErrorCodeVideoDeviceCameraRunningError224摄像头运行异常
AoqErrorCodeVideoCodec230视频编解码通用错误
AoqErrorCodeVideoCodecEncoderInitFail231视频编码器初始化失败
AoqErrorCodeVideoRender240视频渲染通用错误
AoqErrorCodeVideoRenderCreateFail241视频渲染创建失败
AoqErrorCodeVideoRenderDrawError242视频渲染绘制错误
AoqWarningCode
枚举值说明
AoqWCOK0无警告
AoqWCAudio100音频通用警告
AoqWCAudioHowling101音频啸叫检测
AoqWCAudioDevice120音频设备通用警告
AoqWCAudioDeviceMicEnumerateError121麦克风枚举错误
AoqWCAudioDeviceMicStartTimeout122麦克风启动超时
AoqWCAudioDeviceRecordingError123录音过程错误
AoqWCAudioDeviceSpeakerEnumerateError124扬声器枚举错误
AoqWCAudioDeviceSpeakerStartTimeout125扬声器启动超时
AoqWCAudioDevicePlayoutError126播放过程错误
AoqWCVideo200视频通用警告
AoqWCVideoCameraEnumerateError201摄像头枚举错误
AoqWCVideoEncoderSwitched202视频编码器已切换
AoqWCVideoRenderDowngrade203视频渲染降级
AoqTrackType
枚举值说明
AoqTrackTypeAudio0音频轨道
AoqTrackTypeVideo1视频轨道
AoqTrackTypeData2数据消息轨道
AoqEncoderType
枚举值说明
AoqEncoderTypeUnknown0未知格式
AoqEncoderTypeAudioPCM1音频 PCM
AoqEncoderTypeAudioOpus2音频 Opus
AoqEncoderTypeVideoH2643视频 H.264
AoqEncoderTypeVideoJpeg4视频 JPEG
AoqEncoderTypeDataText5数据文本
AoqConnectionStatus
枚举值说明
AoqConnectionStatusDisconnected0未连接
AoqConnectionStatusConnecting1连接中
AoqConnectionStatusConnected2已连接
AoqConnectionStatusFailed3连接失败

音频类型

AoqAudioCaptureConfig
字段类型默认值说明
isExternalbooleanfalse是否为外部采集模式
isVoipModebooleanfalse是否启用 VoIP 模式(影响设备路由,如听筒)
channelint1声道数(默认单声道)
AoqAudioPlaybackConfig
字段类型默认值说明
isVoipModebooleanfalse是否启用 VoIP 模式(硬件 AEC),移动端有效
isDefaultSpeakerbooleantrue是否默认扬声器,移动端有效
isExternalbooleanfalse是否为外部播放模式
channelint1声道数(默认单声道)
AoqAudioCodecConfig
字段类型默认值说明
trackTypeAoqTrackTypeAudio轨道类型
codecTypeAoqEncoderTypeAudioPCM编码格式
sampleRateint48000采样率(Hz)
channelint1声道数
bitrateint32000比特率(bps)

视频类型

AoqVideoCaptureConfig
字段类型默认值说明
widthint1280采集宽度(像素),isExternal=true 时无效
heightint720采集高度(像素),isExternal=true 时无效
fpsint15采集帧率,isExternal=true 时无效
isExternalbooleanfalse是否外部采集,true 时不打开摄像头
cameraDirectionAoqCameraDirectionFront摄像头方向,isExternal=true 时无效
AoqVideoCodecConfig
字段类型默认值说明
trackTypeAoqTrackTypeVideo轨道类型
codecTypeAoqEncoderTypeVideoH264编码格式
widthint720编码宽度(像素)
heightint1280编码高度(像素)
fpsint5编码帧率
bitrateint500000目标比特率(bps)
minBitrateint128000最小比特率(bps)
keyframeIntervalint2关键帧间隔(秒)
mirrorModeAoqMirrorModeDisabled镜像模式
orientationModeAoqOrientationModeAuto视频方向模式
isExternalbooleanfalsetrue 时 SDK 不做二次编码,由 pushExternalVideoEncodedFrame 直推
AoqVideoPixelFormat
枚举值说明
AoqVideoPixelFormatUnknown0未知格式
AoqVideoPixelFormatI4201I420(YUV 三平面格式)
AoqVideoPixelFormatNV122NV12(YUV 半平面格式)
AoqVideoPixelFormatNV213NV21(YUV 半平面格式)
AoqVideoPixelFormatBGRA4BGRA(32 位)
AoqVideoPixelFormatRGBA5RGBA(32 位)
AoqVideoPixelFormatTextureOES7外部 OES 纹理
AoqVideoPixelFormatTexture2D8普通 2D 纹理

外部音频流类型

AoqAudioExternalStreamConfig
字段类型默认值说明
trackTypeAoqTrackTypeAudio音频轨道类型
codecTypeAoqEncoderTypeAudioPCM音频流格式
channelsint1声道数
sampleRateint48000采样率(Hz)
playoutVolumeint100播放音量 [0-100]
publishVolumeint100推流音量 [0-100]
maxBufferDurationint1000最大缓冲时长(毫秒)
enable3Abooleanfalse是否对输入 PCM 进行 3A 处理
AoqAudioStreamDirection
枚举值说明
AoqAudioStreamPublish0发布流(推流)
AoqAudioStreamPlayout1播放流(拉流)

数据消息类型

AoqDataMsg
字段类型默认值说明
databyte[]new byte[0]消息数据(字节数组)