Skip to main content
Ikhtisar SDK AOQ

Referensi API AOQ Client SDK Android

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.
@NonNull
public static AoqClientEngine createEngine(
    @NonNull Context context,
    @NonNull AoqCreateConfig config,
    @NonNull AoqClientListener listener)

Parameter

Type

Deskripsi

context

Context

Konteks aplikasi Android

config

AoqCreateConfig

Konfigurasi pembuatan engine

listener

AoqClientListener

Listener callback event engine

Mengembalikan: Instans AoqClientEngine; tidak pernah null. destroy Menghapus instans engine dan melepas semua sumber daya.
public static int destroy()
Mengembalikan: 0 jika berhasil; nilai bukan nol jika gagal. getVersion
@NonNull
public static String getVersion()
Mengembalikan: String versi, contohnya "1.0.0". connect Menyambungkan ke server Relay. Parameter koneksi dialokasikan oleh server aplikasi melalui /api/v1/allocate dan dikirimkan ke klien.
public abstract int connect(@NonNull AoqConnectConfig config)
Mengembalikan: 0 jika panggilan telah diproses (asinkron); nilai bukan nol jika validasi parameter gagal. disconnect
public abstract int disconnect()
Mengembalikan: 0 jika panggilan telah diproses (asinkron); nilai bukan nol jika gagal.

Manajemen perangkat audio

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: durasi fade-out/fade-in dalam milidetik; 0 berarti langsung.

Konfigurasi codec audio

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

Manajemen perangkat video

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)
Gunakan AoqTrackTypeVideo sebagai parameter trackType untuk setLocalView dan setRemoteView.

Pengkodean video dan input eksternal

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 hanya mengonsumsi frame setelah startVideoCapture(isExternal=true) dipanggil. Jika buffer internal penuh, metode ini mengembalikan AoqErrorCodeVideoExternalBufferFull (210).

Kontrol aliran media

public abstract int enableSendMediaStream(@NonNull AoqTrackType trackType, boolean enable)
Pola yang direkomendasikan: panggil enableSendMediaStream(false) setelah inisialisasi, lalu aktifkan setelah onConnectionStatusChange melaporkan Connected.

Pemutaran file audio

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)

Aliran audio eksternal

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)
Saat pushAudioExternalStreamData mengembalikan AoqErrorCodeAudioExternalBufferFull (110), buffer internal penuh. Tunggu 30 ms lalu coba lagi.

Messaging real-time

public abstract int sendDataMsg(@NonNull AoqDataMsg msg)

Callback frame audio

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

Callback frame video

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

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.
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)
Transisi status koneksi: 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; }
}
Kembalikan 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

AoqConnectConfig

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

AoqWarningCode

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

AoqTrackType

Nilai enum

Nilai

Deskripsi

AoqTrackTypeAudio

0

Track audio

AoqTrackTypeVideo

1

Track video

AoqTrackTypeData

2

Data Messaging Track

AoqEncoderType

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

AoqConnectionStatus

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)

AoqAudioPlaybackConfig

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)

AoqAudioCodecConfig

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 isExternal=true

height

int

720

Tinggi capture (piksel); diabaikan saat isExternal=true

fps

int

15

Laju frame capture; diabaikan saat isExternal=true

isExternal

boolean

false

Mode capture eksternal; jika true, kamera tidak dibuka

cameraDirection

AoqCameraDirection

Front

Arah kamera; diabaikan saat isExternal=true

AoqVideoCodecConfig

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 pushExternalVideoEncodedFrame untuk mengirimkan data yang telah dikodekan sebelumnya

AoqVideoPixelFormat

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

AoqAudioStreamDirection

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)

Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production