Android Calling UI SDK

The Android Calling UI SDK minimises your coding effort for delivering a native telecom calling interface in your Android app. Built on top of the platform's notification and calling APIs, it presents incoming and outgoing call screens that feel native to the device — no custom UI code required. Combined with the Android UI Kit, you can enable full app-to-app audio/video calling in under five minutes.

Android Calling UI SDK v1.0  ·  Released June 15, 2022

Download the SDK ZIP and add the AAR to your project via Gradle flatDir. See Prerequisites below before integrating.

⬇  Download Android Calling UI SDK
How It Works

The SDK wraps the incoming-call notification flow into a single class — EnxCallKitView. When your app receives a VoIP push notification, you instantiate this class and hand it the caller details. The SDK takes over from there: it renders the native-style calling UI on screen and fires callback methods back to your activity when the user answers, rejects, or lets the call time out.

Your responsibility is to wire up the three callbacks to your application logic — start the video session on answer, clean up on reject or timeout.

Prerequisites

Before integrating the Calling UI SDK, ensure the following are in place:

The Calling UI SDK renders the calling screen only after your notification service has woken the app. Set up FCM (or another push provider) first — the SDK cannot work without an incoming notification trigger.
Integration

Integration requires implementing the EnxCallKitStateObserver observer interface in your activity, then creating an instance of EnxCallKitView when a call arrives.

Class and Observer

Creating an EnxCallKitView Instance

ParameterTypeDescription
contextActivityReference to the current activity (this@YourActivity)
nameStringDisplay name of the incoming caller
iconIntResource reference for the caller avatar icon
observerEnxCallKitStateObserverReference to the observer implementation (this)
// Create an instance when an incoming call notification arrives
val callKitView = EnxCallKitView.getInstance(
    this@ConferenceActivity,          // Activity context
    "Alice",                          // Caller display name
    com.enxcallkit.R.mipmap.ic_launcher_round,  // Caller icon resource
    this                              // EnxCallKitStateObserver
)

Callbacks

Implement the three callback methods in your activity. The SDK calls these based on what the user does on the calling screen:

CallbackWhen it firesWhat to do
callAnswer() User taps Accept Connect to the EnableX video room and start the session
callReject() User taps Decline Notify the caller, release resources
callTimeOut() No response within 45 seconds Dismiss the UI, notify the caller of missed call
override fun callAnswer() {
    // User accepted the call — connect to the EnableX room
    startVideoSession(roomId, token)
}

override fun callReject() {
    // User declined — clean up and notify the remote caller
    notifyCallerOfRejection()
}

override fun callTimeOut() {
    // No response in 45 seconds — the calling UI auto-dismisses
    notifyCallerOfMissedCall()
}

Full Integration Example

class ConferenceActivity : AppCompatActivity(), EnxCallKitStateObserver {

    private lateinit var callKitView: EnxCallKitView

    override fun onIncomingCallReceived(callerName: String) {
        // Called from your FCM / push notification handler
        callKitView = EnxCallKitView.getInstance(
            this@ConferenceActivity,
            callerName,
            com.enxcallkit.R.mipmap.ic_launcher_round,
            this
        )
    }

    override fun callAnswer() {
        // Start EnableX video session
    }

    override fun callReject() {
        // Handle rejection
    }

    override fun callTimeOut() {
        // Handle 45-second timeout
    }
}
Also See