in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/internal/audio/DefaultAudioClientController.kt [115:196]
override fun start(
audioFallbackUrl: String,
audioHostUrl: String,
meetingId: String,
attendeeId: String,
joinToken: String,
audioMode: AudioMode
) {
// Validate audio client state
if (audioClientState != AudioClientState.INITIALIZED &&
audioClientState != AudioClientState.STOPPED
) {
logger.warn(
TAG,
"Current audio client state $audioClientState is invalid to start audio, ignoring"
)
return
}
val audioUrlParts: List<String> =
audioHostUrl.split(":".toRegex()).dropLastWhile { it.isEmpty() }
val (host: String, portStr: String) = if (audioUrlParts.size == 2) audioUrlParts else listOf(
audioUrlParts[0],
"$AUDIO_PORT_OFFSET"
)
// We subtract 200 here since audio client will add an offset of 200 for the DTLS port
val port = try {
Integer.parseInt(portStr) - AUDIO_PORT_OFFSET
} catch (exception: Exception) {
logger.warn(
TAG,
"Error parsing int. Using default value. Exception: ${exception.message}"
)
DEFAULT_PORT
}
setUpAudioConfiguration(audioMode)
eventAnalyticsController.publishEvent(EventName.meetingStartRequested)
audioClientObserver.notifyAudioClientObserver { observer ->
observer.onAudioSessionStartedConnecting(
false
)
}
audioManager.mode = AudioManager.MODE_IN_COMMUNICATION
val appInfo = AppInfoUtil.initializeAudioClientAppInfo(context)
uiScope.launch {
val audioModeInternal = when (audioMode) {
AudioMode.Mono16K -> AudioModeInternal.MONO_16K
AudioMode.Mono48K -> AudioModeInternal.MONO_48K
AudioMode.Stereo48K -> AudioModeInternal.STEREO_48K
}
val res = audioClient.startSessionV2(
AudioClient.XTL_DEFAULT_TRANSPORT,
host,
port,
joinToken,
meetingId,
attendeeId,
muteMicAndSpeaker,
muteMicAndSpeaker,
DEFAULT_PRESENTER,
audioFallbackUrl,
null,
appInfo,
audioModeInternal
)
if (res != AUDIO_CLIENT_RESULT_SUCCESS) {
logger.error(TAG, "Failed to start audio session. Response code: $res")
eventAnalyticsController.publishEvent(
EventName.meetingStartFailed
)
} else {
logger.info(TAG, "Started audio session.")
audioClientState = AudioClientState.STARTED
}
}
}