in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/presentation/manager/AudioSessionManager.kt [90:114]
fun onStart(activity: Activity) {
if (activity !is LifecycleOwner) {
throw CallCompositeException("Activity must be a LifecycleOwner", IllegalArgumentException())
}
(activity as LifecycleOwner).lifecycle.coroutineScope.launch {
// On first launch we need to init the redux-state, check Bluetooth and Headset status
store.getStateFlow().collect {
if (previousAudioDeviceSelectionStatus == null ||
previousAudioDeviceSelectionStatus != it.localParticipantState.audioState.device
) {
onAudioDeviceStateChange(it.localParticipantState.audioState.device)
}
// After permission is granted, double check bluetooth status
if (it.permissionState.audioPermissionState == PermissionStatus.GRANTED &&
previousPermissionState != PermissionStatus.GRANTED
) {
updateBluetoothStatus()
}
previousAudioDeviceSelectionStatus = it.localParticipantState.audioState.device
previousPermissionState = it.permissionState.audioPermissionState
}
}
}