amazon-chime-sdk / com.amazonaws.services.chime.sdk.meetings.audiovideo / DefaultAudioVideoFacade

# DefaultAudioVideoFacade

`class DefaultAudioVideoFacade : AudioVideoFacade`

### Constructors

#### <init> | `DefaultAudioVideoFacade(context: Context, audioVideoController: AudioVideoControllerFacade, realtimeController: RealtimeControllerFacade, deviceController: DeviceController, videoTileController: VideoTileController, activeSpeakerDetector: ActiveSpeakerDetectorFacade, contentShareController: ContentShareController, eventAnalyticsController: EventAnalyticsController)`

### Functions

#### addActiveSpeakerObserver | Adds an active speaker observer along with a policy to calculate active speaker scores `fun addActiveSpeakerObserver(policy: ActiveSpeakerPolicy, observer: ActiveSpeakerObserver): Unit`
#### addAudioVideoObserver | Subscribe to audio, video, and connection events with an AudioVideoObserver. `fun addAudioVideoObserver(observer: AudioVideoObserver): Unit`
#### addContentShareObserver | Subscribe the given observer to content share events (sharing started and stopped). `fun addContentShareObserver(observer: ContentShareObserver): Unit`
#### addDeviceChangeObserver | Adds an observer to receive callbacks about device changes. `fun addDeviceChangeObserver(observer: DeviceChangeObserver): Unit`
#### addEventAnalyticsObserver | Subscribe to meeting event related data with an observer. `fun addEventAnalyticsObserver(observer: EventAnalyticsObserver): Unit`
#### addMetricsObserver | Subscribe to metrics events with an MetricsObserver. `fun addMetricsObserver(observer: MetricsObserver): Unit`
#### addRealtimeDataMessageObserver | Subscribes to receive message on a topic, there could be multiple observers per topic `fun addRealtimeDataMessageObserver(topic: String, observer: DataMessageObserver): Unit`
#### addRealtimeObserver | Subscribes to real time events with an observer `fun addRealtimeObserver(observer: RealtimeObserver): Unit`
#### addRealtimeTranscriptEventObserver | Subscribes to transcript event with an observer `fun addRealtimeTranscriptEventObserver(observer: TranscriptEventObserver): Unit`
#### addVideoTileObserver | Subscribe to Video Tile events with an VideoTileObserver. `fun addVideoTileObserver(observer: VideoTileObserver): Unit`
#### bindVideoView | Binds the video rendering view to Video Tile. The view will start displaying the video frame after the completion of this API. `fun bindVideoView(videoView: VideoRenderView, tileId: Int): Unit`
#### chooseAudioDevice | Selects an audio device to use. `fun chooseAudioDevice(mediaDevice: MediaDevice): Unit`
#### demoteFromPrimaryMeeting | Remove the promoted attendee from the Primary meeting. This client will stop sharing audio, video, and data messages. This will revert the end-user to precisely the state they were before a call to promoteToPrimaryMeeting `fun demoteFromPrimaryMeeting(): Unit`
#### getActiveAudioDevice | Get the active input/output audio device in the meeting, return null if there isn't any. `fun getActiveAudioDevice(): MediaDevice?`
#### getActiveCamera | Get the currently active camera, if any. This will return null if using a custom source, e.g. one passed in via AudioVideoControllerFacade.startLocalVideo `fun getActiveCamera(): MediaDevice?`
#### getCommonEventAttributes | Retrieve common attributes, including deviceName, osName, and more. `fun getCommonEventAttributes(): EventAttributes`
#### getMeetingHistory | Retrieve meeting history. `fun getMeetingHistory(): List<MeetingHistoryEvent>`
#### listAudioDevices | Lists currently available audio devices. `fun listAudioDevices(): List<MediaDevice>`
#### pauseRemoteVideoTile | Pauses the specified remote video tile. Ignores the tileId if it belongs to the local video tile. `fun pauseRemoteVideoTile(tileId: Int): Unit`
#### promoteToPrimaryMeeting | Allows an attendee in a Replica meeting to immediately transition to a Primary meeting attendee without need for reconnection. `fun promoteToPrimaryMeeting(credentials: MeetingSessionCredentials, observer: PrimaryMeetingPromotionObserver): Unit`
#### realtimeIsVoiceFocusEnabled | Checks if Amazon Voice Focus is enabled. `fun realtimeIsVoiceFocusEnabled(): Boolean`
#### realtimeLocalMute | Mute the audio input. `fun realtimeLocalMute(): Boolean`
#### realtimeLocalUnmute | Unmutes the audio input. `fun realtimeLocalUnmute(): Boolean`
#### realtimeSendDataMessage | Send message via data channel. Messages are only expected to be sent after audio video has started, otherwise will be ignored. Even though one can send data messages to any valid topic, in order to receive the messages from the given topic, one need to subscribed to the topic by calling addRealtimeDataMessageObserver. LifetimeMs specifies milliseconds for the given message can be stored in server side. Up to 1024 messages may be stored for a maximum of 5 minutes. `fun realtimeSendDataMessage(topic: String, data: Any, lifetimeMs: Int): Unit`
#### realtimeSetVoiceFocusEnabled | Enable or disable Amazon Voice Focus (ML-based noise suppression) on the audio input. `fun realtimeSetVoiceFocusEnabled(enabled: Boolean): Boolean`
#### removeActiveSpeakerObserver | Removes an active speaker observer. `fun removeActiveSpeakerObserver(observer: ActiveSpeakerObserver): Unit`
#### removeAudioVideoObserver | Unsubscribes from audio, video, and connection events by removing specified AudioVideoObserver. `fun removeAudioVideoObserver(observer: AudioVideoObserver): Unit`
#### removeContentShareObserver | Unsubscribe the given observer from content share events. `fun removeContentShareObserver(observer: ContentShareObserver): Unit`
#### removeDeviceChangeObserver | Removes an observer to stop receiving callbacks about device changes. `fun removeDeviceChangeObserver(observer: DeviceChangeObserver): Unit`
#### removeEventAnalyticsObserver | Unsubscribe from meeting event by removing the specified observer. `fun removeEventAnalyticsObserver(observer: EventAnalyticsObserver): Unit`
#### removeMetricsObserver | Unsubscribes from metrics by removing specified MetricsObserver. `fun removeMetricsObserver(observer: MetricsObserver): Unit`
#### removeRealtimeDataMessageObserverFromTopic | Unsubscribes from a message topic `fun removeRealtimeDataMessageObserverFromTopic(topic: String): Unit`
#### removeRealtimeObserver | Unsubscribes from real time events by removing the specified observer `fun removeRealtimeObserver(observer: RealtimeObserver): Unit`
#### removeRealtimeTranscriptEventObserver | Unsubscribes from transcript event by removing the specified observer `fun removeRealtimeTranscriptEventObserver(observer: TranscriptEventObserver): Unit`
#### removeVideoTileObserver | Unsubscribes from Video Tile events by removing specified VideoTileObserver. `fun removeVideoTileObserver(observer: VideoTileObserver): Unit`
#### resumeRemoteVideoTile | Resumes the specified remote video tile. Ignores the tileId if it belongs to the local video tile. `fun resumeRemoteVideoTile(tileId: Int): Unit`
#### start | Starts audio and video. `fun start(): Unit` Starts audio and video with the given configuration. `fun start(audioVideoConfiguration: AudioVideoConfiguration): Unit`
#### startContentShare | Start sharing the content of a given ContentShareSource. `fun startContentShare(source: ContentShareSource): Unit` Start sharing the content of a given ContentShareSource with configuration. `fun startContentShare(source: ContentShareSource, config: LocalVideoConfiguration): Unit`
#### startLocalVideo | Start local video and begin transmitting frames from an internally held DefaultCameraCaptureSource. stopLocalVideo will stop the internal capture source if being used. `fun startLocalVideo(): Unit` Start local video with configuration and begin transmitting frames from an internally held DefaultCameraCaptureSource. stopLocalVideo will stop the internal capture source if being used. `fun startLocalVideo(config: LocalVideoConfiguration): Unit` Start local video with a provided custom VideoSource which can be used to provide custom VideoFrame objects to be transmitted to remote clients `fun startLocalVideo(source: VideoSource): Unit` Start local video with with configuration and a provided custom VideoSource which can be used to provide custom VideoFrame objects to be transmitted to remote clients `fun startLocalVideo(source: VideoSource, config: LocalVideoConfiguration): Unit`
#### startRemoteVideo | Start remote video. `fun startRemoteVideo(): Unit`
#### stop | Stops audio and video. It's important to call this when your meeting connection is no longer needed in order to clean up and explicitly release resources. `fun stop(): Unit`
#### stopContentShare | Stop sharing the content of a ContentShareSource that previously started. `fun stopContentShare(): Unit`
#### stopLocalVideo | Stops sending video for local attendee. This will additionally stop the internal capture source if being used. If using a custom video source, this will call VideoSource.removeVideoSink on the previously provided source. `fun stopLocalVideo(): Unit`
#### stopRemoteVideo | Stop remote video. `fun stopRemoteVideo(): Unit`
#### switchCamera | Switches the currently active camera. This will no-op if using a custom source, e.g. one passed in via AudioVideoControllerFacade.startLocalVideo `fun switchCamera(): Unit`
#### unbindVideoView | Unbinds the video rendering view from Video Tile. The view will stop displaying the video frame after the completion of this API. `fun unbindVideoView(tileId: Int): Unit`
#### updateVideoSourceSubscriptions | Add, update, or remove subscriptions to remote video sources provided via `remoteVideoSourcesDidBecomeAvailable`. `fun updateVideoSourceSubscriptions(addedOrUpdated: Map<RemoteVideoSource, VideoSubscriptionConfiguration>, removed: Array<RemoteVideoSource>): Unit`