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 內部以全域單例方式持有引擎,重複調用會返回已建立的執行個體。
參數 | 類型 | 說明 |
|---|---|---|
context | Context | Android 應用上下文 |
config | AoqCreateConfig | 引擎建立配置 |
listener | AoqClientListener | 引擎事件回調監聽 |
音訊裝置管理
fadeMs:淡出/淡入時間長度(毫秒);0 表示立即執行。
音頻編碼配置
視頻裝置管理
視頻編碼與外部輸入
媒體流發送控制
音頻檔案播放
外部音頻流
即時訊息
音訊框架回調
視訊框架回調
AoqClientListener 回調
AoqClientListener 是 SDK 所有非同步事件通知的統一出口。所有回調方法都帶有預設空實現,無需強制重寫不關心的方法。
AoqAudioFrameListener
AoqVideoFrameListener
資料類型與枚舉
通用類型
AoqCreateConfig
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
workDir | String | "" | SDK 工作目錄 |
isBTScoMode | boolean | false | true 藍芽 SCO 模式;false A2DP 模式 |
enableDumpAudio | boolean | false | 是否開啟音頻 dump(調試用) |
extras | String | "" | 擴充參數字串 |
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
token | String | "" | 串連鑒權 Token |
sid | String | "" | 會話 ID |
certFingerprint | String | "" | 伺服器憑證指紋 |
relayEndpoints | List<AoqRelayEndpoint> | 空 | Relay 存取點列表 |
workspaceIdHash | String | "" | 工作空間 ID Hash |
publishTracks | List<AoqTrackParam> | 空 | 本端發布軌道列表 |
subscribeTracks | List<AoqTrackParam> | 空 | 本端訂閱軌道列表 |
統計資訊類型
AoqNetworkStats
欄位 | 類型 | 說明 |
|---|---|---|
sendBitrate | int | 發送碼率(bps) |
sendBytes | long | 累計發送位元組數 |
recvBitrate | int | 接收碼率(bps) |
recvBytes | long | 累計接收位元組數 |
loss | int | 丟包率(0-100) |
rtt | int | 往返延遲(ms) |
枚舉類型
AoqErrorCode
枚舉值 | 值 | 說明 |
|---|---|---|
AoqErrorCodeOK | 0 | 成功 |
AoqErrorCodeParamInvalid | 1 | 參數非法 |
AoqErrorCodeStateInvalid | 2 | 狀態非法 |
AoqErrorCodeUnSupport | 3 | 不支援 |
AoqErrorCodeAudio | 100 | 音頻通用錯誤 |
AoqErrorCodeAudioExternalBufferFull | 110 | 外部音頻緩衝區滿 |
AoqErrorCodeAudioDevice | 120 | 音訊裝置通用錯誤 |
AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | 錄音許可權未擷取 |
AoqErrorCodeAudioDeviceRecordingOccupied | 122 | 錄音裝置被佔用 |
AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | 後台啟動錄音失敗 |
AoqErrorCodeAudioDeviceRecordingStartFail | 124 | 錄音啟動失敗 |
AoqErrorCodeAudioDevicePlayoutOccupied | 125 | 播放裝置被佔用 |
AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | 後台啟動播放失敗 |
AoqErrorCodeAudioDevicePlayoutStartFail | 127 | 播放啟動失敗 |
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode | 128 | 耳機需要 VoIP 模式 |
AoqErrorCodeVideo | 200 | 視頻通用錯誤 |
AoqErrorCodeVideoExternalBufferFull | 210 | 外部視頻緩衝區滿 |
AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | 外部視頻採集未啟用 |
AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | 外部視頻編碼未啟用 |
AoqErrorCodeVideoDevice | 220 | 視頻裝置通用錯誤 |
AoqErrorCodeVideoDeviceCameraOpenFail | 221 | 網路攝影機開啟失敗 |
AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | 網路攝影機許可權未擷取 |
AoqErrorCodeVideoDeviceCameraOccupied | 223 | 網路攝影機被佔用 |
AoqErrorCodeVideoDeviceCameraRunningError | 224 | 網路攝影機運行異常 |
AoqErrorCodeVideoCodec | 230 | 視頻編解碼通用錯誤 |
AoqErrorCodeVideoCodecEncoderInitFail | 231 | 視頻編碼器初始化失敗 |
AoqErrorCodeVideoRender | 240 | 視頻渲染通用錯誤 |
AoqErrorCodeVideoRenderCreateFail | 241 | 視頻渲染建立失敗 |
AoqErrorCodeVideoRenderDrawError | 242 | 視頻渲染繪製錯誤 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqWCOK | 0 | 無警告 |
AoqWCAudio | 100 | 音頻通用警告 |
AoqWCAudioHowling | 101 | 音頻嘯叫檢測 |
AoqWCAudioDevice | 120 | 音訊裝置通用警告 |
AoqWCAudioDeviceMicEnumerateError | 121 | 麥克風枚舉錯誤 |
AoqWCAudioDeviceMicStartTimeout | 122 | 麥克風啟動逾時 |
AoqWCAudioDeviceRecordingError | 123 | 錄音過程錯誤 |
AoqWCAudioDeviceSpeakerEnumerateError | 124 | 擴音器枚舉錯誤 |
AoqWCAudioDeviceSpeakerStartTimeout | 125 | 擴音器啟動逾時 |
AoqWCAudioDevicePlayoutError | 126 | 播放過程錯誤 |
AoqWCVideo | 200 | 視頻通用警告 |
AoqWCVideoCameraEnumerateError | 201 | 網路攝影機枚舉錯誤 |
AoqWCVideoEncoderSwitched | 202 | 視頻編碼器已切換 |
AoqWCVideoRenderDowngrade | 203 | 視頻渲染降級 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqTrackTypeAudio | 0 | 音頻軌道 |
AoqTrackTypeVideo | 1 | 視頻軌道 |
AoqTrackTypeData | 2 | 資料訊息軌道 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqEncoderTypeUnknown | 0 | 未知格式 |
AoqEncoderTypeAudioPCM | 1 | 音頻 PCM |
AoqEncoderTypeAudioOpus | 2 | 音頻 Opus |
AoqEncoderTypeVideoH264 | 3 | 視頻 H.264 |
AoqEncoderTypeVideoJpeg | 4 | 視頻 JPEG |
AoqEncoderTypeDataText | 5 | 資料文本 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqConnectionStatusDisconnected | 0 | 未串連 |
AoqConnectionStatusConnecting | 1 | 串連中 |
AoqConnectionStatusConnected | 2 | 已串連 |
AoqConnectionStatusFailed | 3 | 串連失敗 |
音訊類型
AoqAudioCaptureConfig
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
isExternal | boolean | false | 是否為外部採集模式 |
isVoipMode | boolean | false | 是否啟用 VoIP 模式(影響裝置路由,如耳機) |
channel | int | 1 | 聲道數(預設單聲道) |
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
isVoipMode | boolean | false | 是否啟用 VoIP 模式(硬體 AEC),移動端有效 |
isDefaultSpeaker | boolean | true | 是否預設擴音器,移動端有效 |
isExternal | boolean | false | 是否為外部播放模式 |
channel | int | 1 | 聲道數(預設單聲道) |
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
trackType | AoqTrackType | Audio | 軌道類型 |
codecType | AoqEncoderType | AudioPCM | 編碼格式 |
sampleRate | int | 48000 | 採樣率(Hz) |
channel | int | 1 | 聲道數 |
bitrate | int | 32000 | 位元速率(bps) |
視頻類型
AoqVideoCaptureConfig
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
width | int | 1280 | 採集寬度(像素),isExternal=true 時無效 |
height | int | 720 | 採集高度(像素),isExternal=true 時無效 |
fps | int | 15 | 採集幀率,isExternal=true 時無效 |
isExternal | boolean | false | 是否外部採集,true 時不開啟網路攝影機 |
cameraDirection | AoqCameraDirection | Front | 網路攝影機方向,isExternal=true 時無效 |
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
trackType | AoqTrackType | Video | 軌道類型 |
codecType | AoqEncoderType | VideoH264 | 編碼格式 |
width | int | 720 | 編碼寬度(像素) |
height | int | 1280 | 編碼高度(像素) |
fps | int | 5 | 編碼幀率 |
bitrate | int | 500000 | 目標位元速率(bps) |
minBitrate | int | 128000 | 最小位元速率(bps) |
keyframeInterval | int | 2 | 主要畫面格間隔(秒) |
mirrorMode | AoqMirrorMode | Disabled | 鏡像模式 |
orientationMode | AoqOrientationMode | Auto | 視頻方向模式 |
isExternal | boolean | false | true 時 SDK 不做二次編碼,由 pushExternalVideoEncodedFrame 直推 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqVideoPixelFormatUnknown | 0 | 未知格式 |
AoqVideoPixelFormatI420 | 1 | I420(YUV 三平面格式) |
AoqVideoPixelFormatNV12 | 2 | NV12(YUV 半平面格式) |
AoqVideoPixelFormatNV21 | 3 | NV21(YUV 半平面格式) |
AoqVideoPixelFormatBGRA | 4 | BGRA(32 位) |
AoqVideoPixelFormatRGBA | 5 | RGBA(32 位) |
AoqVideoPixelFormatTextureOES | 7 | 外部 OES 紋理 |
AoqVideoPixelFormatTexture2D | 8 | 普通 2D 紋理 |
外部音頻流類型
AoqAudioExternalStreamConfig
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
trackType | AoqTrackType | Audio | 音頻軌道類型 |
codecType | AoqEncoderType | AudioPCM | 音頻流格式 |
channels | int | 1 | 聲道數 |
sampleRate | int | 48000 | 採樣率(Hz) |
playoutVolume | int | 100 | 播放音量 [0-100] |
publishVolume | int | 100 | 推流音量 [0-100] |
maxBufferDuration | int | 1000 | 最大緩衝時間長度(毫秒) |
enable3A | boolean | false | 是否對輸入 PCM 進行 3A 處理 |
枚舉值 | 值 | 說明 |
|---|---|---|
AoqAudioStreamPublish | 0 | 發布流(推流) |
AoqAudioStreamPlayout | 1 | 播放流(拉流) |
資料訊息類型
AoqDataMsg
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
data | byte[] | new byte[0] | 訊息資料(位元組數組) |