in app/src/main/java/com/amazonaws/services/chime/sdkdemo/fragment/MeetingFragment.kt [261:340]
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view: View = inflater.inflate(R.layout.fragment_meeting, container, false)
val activity = activity as Context
credentials = (activity as MeetingActivity).getMeetingSessionCredentials()
primaryExternalMeetingId = activity.getPrimaryExternalMeetingId()
audioVideo = activity.getAudioVideo()
eglCoreFactory = activity.getEglCoreFactory()
cameraCaptureSource = activity.getCameraCaptureSource()
gpuVideoProcessor = activity.getGpuVideoProcessor()
cpuVideoProcessor = activity.getCpuVideoProcessor()
backgroundBlurVideoFrameProcessor = activity.getBackgroundBlurVideoFrameProcessor()
backgroundReplacementVideoFrameProcessor =
activity.getBackgroundReplacementVideoFrameProcessor()
screenShareManager = activity.getScreenShareManager()
audioDeviceManager = AudioDeviceManager(audioVideo)
val meetingEndpointUrl = arguments?.getString(HomeActivity.MEETING_ENDPOINT_KEY) as String
postLogger = PostLogger(
appName,
activity.getMeetingSessionConfiguration(),
"${meetingEndpointUrl}log_meeting_event",
LogLevel.INFO
)
mediaProjectionManager =
activity.getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
powerManager = activity.getSystemService(Context.POWER_SERVICE) as PowerManager
view.findViewById<TextView>(R.id.textViewMeetingId)?.text = arguments?.getString(
HomeActivity.MEETING_ID_KEY
) as String
setupButtonsBar(view)
setupSubViews(view)
setupTab(view)
setupAudioDeviceSelectionDialog()
setupAdditionalOptionsDialog()
if (inReplicaMeeting()) {
updateUiForPromotionStatus(false)
}
noVideoOrScreenShareAvailable = view.findViewById(R.id.noVideoOrScreenShareAvailable)
refreshNoVideosOrScreenShareAvailableText()
selectTab(meetingModel.tabIndex)
setupAudioVideoFacadeObservers()
val audioMode = arguments?.getInt(HomeActivity.AUDIO_MODE_KEY)?.let { intValue ->
AudioMode.from(intValue, defaultAudioMode = AudioMode.Stereo48K)
} ?: AudioMode.Stereo48K
val audioDeviceCapabilities = arguments?.get(HomeActivity.AUDIO_DEVICE_CAPABILITIES_KEY) as? AudioDeviceCapabilities ?: AudioDeviceCapabilities.InputAndOutput
val enableAudioRedundancy = arguments?.getBoolean(HomeActivity.ENABLE_AUDIO_REDUNDANCY_KEY) as Boolean
val reconnectTimeoutMs = arguments?.getInt(HomeActivity.RECONNECT_TIMEOUT_MS) as Int
val audioVideoConfig = AudioVideoConfiguration(audioMode = audioMode, audioDeviceCapabilities = audioDeviceCapabilities, enableAudioRedundancy = enableAudioRedundancy, reconnectTimeoutMs = reconnectTimeoutMs)
// Start Audio Video
audioVideo.start(audioVideoConfig)
audioVideo.startRemoteVideo()
// Start microphone service starting Android 14 and when require microphone
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE &&
audioVideoConfig.audioDeviceCapabilities == AudioDeviceCapabilities.InputAndOutput) {
requireContext().startForegroundService(
Intent(
requireContext(),
MicrophoneService::class.java
).also { intent ->
requireContext().bindService(
intent,
meetingModel.microphoneServiceConnection,
Context.BIND_AUTO_CREATE
)
}
)
}
return view
}