Skip to main content
Build a fully customized control panel for your call interface by hiding the default controls and implementing your own UI with call actions. This guide walks you through creating a custom control panel with essential call controls.

Overview

Custom control panels allow you to:
  • Match your app’s branding and design language
  • Simplify the interface by showing only relevant controls
  • Add custom functionality and workflows
  • Create unique user experiences
This guide demonstrates building a basic custom control panel with:
  • Mute/Unmute audio button
  • Pause/Resume video button
  • Switch camera button
  • End call button

Prerequisites


Step 1: Hide Default Controls

Configure your session settings to hide the default control panel:
You can also hide individual buttons while keeping the control panel visible. See SessionSettingsBuilder for all options.

Step 2: Create Custom Layout

Create an XML layout for your custom controls:
control_button_background.xml:
end_call_button_background.xml:

Step 3: Implement Control Actions

Set up button click listeners and call the appropriate actions:

Step 4: Handle State Updates

Use MediaEventsListener to keep your UI synchronized with the actual call state. The listener is lifecycle-aware and automatically removed when the Activity is destroyed.
Use SessionStatusListener to handle session end events:

Complete Example

Here’s the full implementation combining all steps: