in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/presentation/CallCompositeActivity.kt [95:180]
override fun onCreate(savedInstanceState: Bundle?) {
// Before super, we'll set up the DI injector and check the PiP state
try {
diContainerHolder.instanceId = instanceId
diContainerHolder.container.callCompositeActivityWeakReference = WeakReference(this)
} catch (invalidIDException: CallCompositeException) {
super.onCreate(savedInstanceState)
finish() // Container has vanished (probably due to process death); we cannot continue
return
}
store.dispatch(DeviceConfigurationAction.ToggleTabletMode(isTablet(this)))
store.dispatch(
DeviceConfigurationAction.TogglePortraitMode(
resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
)
)
val listeningPair = Pair(lifecycleScope, store)
visibilityStatusFlow = MutableStateFlow(store.getCurrentState().visibilityState.status)
super.onCreate(savedInstanceState)
syncPipMode()
// Inflate everything else
volumeControlStream = AudioManager.STREAM_VOICE_CALL
window.addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
)
configureLocalization()
setStatusBarColor()
setNavigationBarColor()
configuration.themeConfig?.let {
theme.applyStyle(it, true)
}
updatableOptionsManager.start()
setContentView(R.layout.azure_communication_ui_calling_activity_call_composite)
permissionManager.start(
this,
getAudioPermissionLauncher(),
getCameraPermissionLauncher(),
lifecycleScope
)
audioSessionManager.onCreate(savedInstanceState)
lifecycleScope.launchWhenStarted {
navigationRouter.getNavigationStateFlow().collect { onNavigationStateChange(it) }
}
lifecycleScope.launchAll(
navigationRouter::start,
audioFocusManager::start,
audioModeManager::start,
errorHandler::start,
remoteParticipantJoinedHandler::start,
{ container.accessibilityManager.start(this) },
{
supportView.start(supportViewModel, this@CallCompositeActivity)
},
{
visibilityStatusFlow.collect {
if (it == VisibilityStatus.HIDE_REQUESTED) {
hide()
store.dispatch(PipAction.HideEntered())
}
}
}
)
// Probably can follow the above pattern now with function declarations
multitaskingManager.start(lifecycleScope)
notificationService.start(lifecycleScope, instanceId)
callHistoryService.start(lifecycleScope)
callStateHandler.start(lifecycleScope)
captionsDataManager.start(lifecycleScope)
listeningPair.collect {
supportViewModel.update(it.navigationState)
visibilityStatusFlow.value = it.visibilityState.status
}
}