AOQ Client SDK untuk Android menyediakan rangkaian lengkap kemampuan komunikasi audio/video real-time, mencakup manajemen siklus hidup engine, capture dan pemutaran audio/video, konfigurasi codec, injeksi aliran audio eksternal, mixing file audio, messaging real-time, serta callback frame audio/video. Dokumen ini merupakan referensi API Java lengkap untuk platform Android.
Indeks API
Siklus hidup engine
API | Deskripsi |
|---|---|
createEngine | Buat instans engine (singleton) |
destroy | Hapus instans engine |
getVersion | Ambil string versi SDK |
connect | Hubungkan ke server Relay |
disconnect | Putuskan koneksi dari server |
Manajemen perangkat audio
API | Deskripsi |
|---|---|
startAudioCapture | Buka perangkat capture audio (microphone) |
stopAudioCapture | Tutup perangkat capture audio |
muteAudioCapture | Mute atau unmute capture audio |
startAudioPlayer | Mulai pemutaran audio (putar audio remote) |
stopAudioPlayer | Hentikan pemutaran audio |
pauseAudioPlayer | Jeda pemutaran audio dengan fade-out opsional |
resumeAudioPlayer | Lanjutkan pemutaran audio dengan fade-in opsional |
interruptAudioPlayer | Interupsi giliran panggilan audio saat ini |
enableSpeakerphone | Alihkan output audio antara speaker dan earpiece |
isSpeakerphoneEnabled | Periksa apakah speaker sedang aktif |
Konfigurasi codec audio
API | Deskripsi |
|---|---|
setAudioEncoderConfig | Atur parameter pengkodean audio |
setAudioDecoderConfig | Atur parameter dekode audio |
Manajemen perangkat video
API | Deskripsi |
|---|---|
startVideoCapture | Buka perangkat capture video (Kamera) |
stopVideoCapture | Tutup perangkat capture video |
switchCamera | Alihkan antara kamera depan dan belakang |
setLocalView | Atur atau hapus tampilan rendering video lokal |
setRemoteView | Atur atau hapus tampilan rendering video remote |
Pengkodean video dan input eksternal
API | Deskripsi |
|---|---|
setVideoEncoderConfig | Atur parameter pengkodean video |
pushExternalVideoCapturedFrame | Dorong frame video mentah yang di-capture secara eksternal |
pushExternalVideoEncodedFrame | Dorong frame video yang telah dikodekan secara eksternal |
Kontrol aliran media / messaging real-time
API | Deskripsi |
|---|---|
enableSendMediaStream | Aktifkan atau nonaktifkan pengiriman aliran media lokal |
sendDataMsg | Kirim pesan data real-time |
Pemutaran file audio
API | Deskripsi |
|---|---|
startAudioFile | Mulai streaming file audio lokal |
stopAudioFile | Hentikan pemutaran file audio |
pauseAudioFile | Jeda pemutaran file audio |
resumeAudioFile | Lanjutkan pemutaran file audio |
getAudioFileDuration | Ambil durasi total file audio |
getAudioFileCurrentPosition | Ambil posisi pemutaran saat ini |
setAudioFilePositionMillis | Cari ke posisi tertentu dalam file audio |
setAudioFileVolume | Atur volume file audio |
getAudioFileVolume | Ambil volume file audio saat ini |
Aliran audio eksternal
API | Deskripsi |
|---|---|
addAudioExternalStream | Tambahkan aliran audio eksternal |
removeAudioExternalStream | Hapus aliran audio eksternal |
pushAudioExternalStreamData | Dorong data audio PCM eksternal |
setAudioExternalStreamVolume | Atur volume untuk aliran audio eksternal |
getAudioExternalStreamVolume | Ambil volume untuk aliran audio eksternal |
clearAudioExternalStreamBuffer | Bersihkan buffer untuk aliran audio eksternal |
Callback frame audio/video
API | Deskripsi |
|---|---|
setAudioFrameObserver | Atur listener callback data frame audio |
enableAudioFrameObserver | Aktifkan atau nonaktifkan callback frame audio pada titik tertentu |
setVideoFrameObserver | Atur listener callback data frame video |
enableVideoFrameObserver | Aktifkan atau nonaktifkan callback frame video pada titik tertentu |
Callback AoqClientListener
Callback | Deskripsi |
|---|---|
onError | Callback error engine |
onWarning | Callback peringatan engine |
onConnectionStatusChange | Callback perubahan status koneksi |
onStats | Callback statistik engine |
onAudioDeviceStateChanged | Callback perubahan status perangkat audio |
onAudioDeviceRouteChanged | Callback perubahan rute output audio |
onAudioDeviceInterrupted | Callback interupsi perangkat audio |
onVideoDeviceStateChanged | Callback perubahan status perangkat video |
onAudioDeviceFocusChanged | Callback perubahan fokus audio |
onAudioFileState | Callback status pemutaran file audio |
onDataMsg | Callback pesan data real-time diterima |
Detail API
Siklus hidup engine
createEngine
Membuat instans engine. SDK menyimpan engine sebagai singleton global; pemanggilan ulang metode ini akan mengembalikan instans yang telah ada.
Parameter | Type | Deskripsi |
|---|---|---|
context | Context | Konteks aplikasi Android |
config | AoqCreateConfig | Konfigurasi pembuatan engine |
listener | AoqClientListener | Listener callback event engine |
"1.0.0".
connect
Menyambungkan ke server Relay. Parameter koneksi dialokasikan oleh server aplikasi melalui /api/v1/allocate dan dikirimkan ke klien.
Manajemen perangkat audio
fadeMs: durasi fade-out/fade-in dalam milidetik; 0 berarti langsung.
Konfigurasi codec audio
Manajemen perangkat video
AoqTrackTypeVideo sebagai parameter trackType untuk setLocalView dan setRemoteView.
Pengkodean video dan input eksternal
pushExternalVideoCapturedFrame hanya mengonsumsi frame setelah startVideoCapture(isExternal=true) dipanggil. Jika buffer internal penuh, metode ini mengembalikan AoqErrorCodeVideoExternalBufferFull (210).Kontrol aliran media
enableSendMediaStream(false) setelah inisialisasi, lalu aktifkan setelah onConnectionStatusChange melaporkan Connected.
Pemutaran file audio
Aliran audio eksternal
pushAudioExternalStreamData mengembalikan AoqErrorCodeAudioExternalBufferFull (110), buffer internal penuh. Tunggu 30 ms lalu coba lagi.Messaging real-time
Callback frame audio
Callback frame video
Callback AoqClientListener
AoqClientListener adalah titik pengiriman terpadu untuk semua event asinkron dari SDK. Semua metode callback memiliki implementasi kosong bawaan, sehingga Anda hanya perlu meng-override yang relevan saja.
AoqAudioFrameListener
AoqVideoFrameListener
true untuk menunjukkan bahwa Anda telah memodifikasi data frame dan ingin SDK membacanya kembali (penulisan ulang hanya berlaku untuk format I420). ByteBuffer dan textureId dalam frame hanya valid selama callback; salin sebelum digunakan secara asinkron.
Tipe data dan enumerasi
Tipe umum
AoqCreateConfig
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
workDir | String | "" | Direktori kerja SDK |
isBTScoMode | boolean | false | true: mode Bluetooth SCO; false: mode A2DP |
enableDumpAudio | boolean | false | Aktifkan dump audio (untuk debugging) |
extras | String | "" | String parameter tambahan |
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
token | String | "" | Token autentikasi |
sid | String | "" | ID sesi |
certFingerprint | String | "" | Sidik jari sertifikat server |
relayEndpoints | List<AoqRelayEndpoint> | kosong | Daftar endpoint Relay |
workspaceIdHash | String | "" | Hash ID ruang kerja |
publishTracks | List<AoqTrackParam> | kosong | Track lokal yang akan dipublikasikan |
subscribeTracks | List<AoqTrackParam> | kosong | Track jarak jauh untuk berlangganan |
Tipe statistik
AoqNetworkStats
Field | Type | Deskripsi |
|---|---|---|
sendBitrate | int | Bitrate pengiriman (bps) |
sendBytes | long | Total byte terkirim |
recvBitrate | int | Bitrate penerimaan (bps) |
recvBytes | long | Total byte diterima |
loss | int | Laju loss paket (0–100) |
rtt | int | Waktu round-trip (ms) |
Enumerasi
AoqErrorCode
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqErrorCodeOK | 0 | Berhasil |
AoqErrorCodeParamInvalid | 1 | Parameter tidak valid |
AoqErrorCodeStateInvalid | 2 | Status tidak valid |
AoqErrorCodeUnSupport | 3 | Tidak didukung |
AoqErrorCodeAudio | 100 | Error umum audio |
AoqErrorCodeAudioExternalBufferFull | 110 | Buffer audio eksternal penuh |
AoqErrorCodeAudioDevice | 120 | Error umum perangkat audio |
AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | Izin merekam tidak diberikan |
AoqErrorCodeAudioDeviceRecordingOccupied | 122 | Perangkat perekam sedang digunakan |
AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | Gagal memulai perekaman di latar belakang |
AoqErrorCodeAudioDeviceRecordingStartFail | 124 | Gagal memulai perekaman |
AoqErrorCodeAudioDevicePlayoutOccupied | 125 | Perangkat pemutaran sedang digunakan |
AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | Gagal memulai pemutaran di latar belakang |
AoqErrorCodeAudioDevicePlayoutStartFail | 127 | Gagal memulai pemutaran |
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode | 128 | Earpiece memerlukan mode VoIP |
AoqErrorCodeVideo | 200 | Error umum video |
AoqErrorCodeVideoExternalBufferFull | 210 | Buffer video eksternal penuh |
AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | Capture video eksternal tidak diaktifkan |
AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | Encoder video eksternal tidak diaktifkan |
AoqErrorCodeVideoDevice | 220 | Error umum perangkat video |
AoqErrorCodeVideoDeviceCameraOpenFail | 221 | Gagal membuka kamera |
AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | Izin kamera tidak diberikan |
AoqErrorCodeVideoDeviceCameraOccupied | 223 | Kamera sedang digunakan |
AoqErrorCodeVideoDeviceCameraRunningError | 224 | Error runtime kamera |
AoqErrorCodeVideoCodec | 230 | Error umum codec video |
AoqErrorCodeVideoCodecEncoderInitFail | 231 | Gagal inisialisasi encoder video |
AoqErrorCodeVideoRender | 240 | Error umum rendering video |
AoqErrorCodeVideoRenderCreateFail | 241 | Gagal membuat renderer video |
AoqErrorCodeVideoRenderDrawError | 242 | Error gambar rendering video |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqWCOK | 0 | Tidak ada peringatan |
AoqWCAudio | 100 | Peringatan umum audio |
AoqWCAudioHowling | 101 | Terdeteksi howling audio |
AoqWCAudioDevice | 120 | Peringatan umum perangkat audio |
AoqWCAudioDeviceMicEnumerateError | 121 | Error enumerasi mikrofon |
AoqWCAudioDeviceMicStartTimeout | 122 | Timeout saat memulai mikrofon |
AoqWCAudioDeviceRecordingError | 123 | Error perekaman |
AoqWCAudioDeviceSpeakerEnumerateError | 124 | Error enumerasi speaker |
AoqWCAudioDeviceSpeakerStartTimeout | 125 | Timeout saat memulai speaker |
AoqWCAudioDevicePlayoutError | 126 | Error pemutaran |
AoqWCVideo | 200 | Peringatan umum video |
AoqWCVideoCameraEnumerateError | 201 | Error enumerasi kamera |
AoqWCVideoEncoderSwitched | 202 | Encoder video dialihkan |
AoqWCVideoRenderDowngrade | 203 | Rendering video diturunkan spesifikasinya |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqTrackTypeAudio | 0 | Track audio |
AoqTrackTypeVideo | 1 | Track video |
AoqTrackTypeData | 2 | Data Messaging Track |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqEncoderTypeUnknown | 0 | Format tidak diketahui |
AoqEncoderTypeAudioPCM | 1 | Audio PCM |
AoqEncoderTypeAudioOpus | 2 | Audio Opus |
AoqEncoderTypeVideoH264 | 3 | Video H.264 |
AoqEncoderTypeVideoJpeg | 4 | Video JPEG |
AoqEncoderTypeDataText | 5 | Data teks |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqConnectionStatusDisconnected | 0 | Terputus |
AoqConnectionStatusConnecting | 1 | Menghubungkan |
AoqConnectionStatusConnected | 2 | Tersambung |
AoqConnectionStatusFailed | 3 | Koneksi gagal |
Tipe audio
AoqAudioCaptureConfig
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
isExternal | boolean | false | Apakah menggunakan mode capture eksternal |
isVoipMode | boolean | false | Apakah mengaktifkan mode VoIP (mempengaruhi routing perangkat, misalnya earpiece) |
channel | int | 1 | Jumlah channel (bawaan: mono) |
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
isVoipMode | boolean | false | Apakah mengaktifkan mode VoIP (AEC perangkat keras); berlaku untuk perangkat mobile |
isDefaultSpeaker | boolean | true | Apakah bawaan ke speaker; berlaku untuk perangkat mobile |
isExternal | boolean | false | Apakah menggunakan mode pemutaran eksternal |
channel | int | 1 | Jumlah channel (bawaan: mono) |
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | Audio | Jenis track |
codecType | AoqEncoderType | AudioPCM | Format codec |
sampleRate | int | 48000 | Laju sampel (Hz) |
channel | int | 1 | Jumlah channel |
bitrate | int | 32000 | Bitrate (bps) |
Tipe video
AoqVideoCaptureConfig
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
width | int | 1280 | Lebar capture (piksel); diabaikan saat |
height | int | 720 | Tinggi capture (piksel); diabaikan saat |
fps | int | 15 | Laju frame capture; diabaikan saat |
isExternal | boolean | false | Mode capture eksternal; jika true, kamera tidak dibuka |
cameraDirection | AoqCameraDirection | Front | Arah kamera; diabaikan saat |
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | Video | Jenis track |
codecType | AoqEncoderType | VideoH264 | Format codec |
width | int | 720 | Lebar encoding (piksel) |
height | int | 1280 | Tinggi encoding (piksel) |
fps | int | 5 | Laju frame encoding |
bitrate | int | 500000 | Bitrate target (bps) |
minBitrate | int | 128000 | Bitrate minimum (bps) |
keyframeInterval | int | 2 | Interval keyframe (detik) |
mirrorMode | AoqMirrorMode | Disabled | Mode cermin |
orientationMode | AoqOrientationMode | Auto | Mode orientasi video |
isExternal | boolean | false | Jika true, SDK melewati re-encoding; gunakan |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqVideoPixelFormatUnknown | 0 | Format tidak diketahui |
AoqVideoPixelFormatI420 | 1 | I420 (YUV planar) |
AoqVideoPixelFormatNV12 | 2 | NV12 (YUV semi-planar) |
AoqVideoPixelFormatNV21 | 3 | NV21 (YUV semi-planar) |
AoqVideoPixelFormatBGRA | 4 | BGRA 32-bit |
AoqVideoPixelFormatRGBA | 5 | RGBA 32-bit |
AoqVideoPixelFormatTextureOES | 7 | Texture OES eksternal |
AoqVideoPixelFormatTexture2D | 8 | Texture 2D standar |
Tipe aliran audio eksternal
AoqAudioExternalStreamConfig
Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | Audio | Jenis track audio |
codecType | AoqEncoderType | AudioPCM | Format aliran audio |
channels | int | 1 | Jumlah channel |
sampleRate | int | 48000 | Laju sampel (Hz) |
playoutVolume | int | 100 | Volume pemutaran [0–100] |
publishVolume | int | 100 | Volume publikasi [0–100] |
maxBufferDuration | int | 1000 | Durasi buffer maksimum (milidetik) |
enable3A | boolean | false | Apakah menerapkan pemrosesan 3A pada input PCM |
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqAudioStreamPublish | 0 | Aliran publikasi (kirim) |
AoqAudioStreamPlayout | 1 | Aliran pemutaran (terima) |
Tipe pesan data
AoqDataMsg
Field | Type | Bawaan | Deskripsi |
|---|---|---|---|
data | byte[] | new byte[0] | Data pesan (array byte) |