PurpleCallio

PurpleCallio documentation

PurpleCallio Android SDK Preview

The Android library contains a Kotlin call engine using PurpleCallio REST, Socket.IO, and WebRTC, plus a MediaProjection screen-share path. It is not released for production: builds, consumer installation, instrumentation, and physical-device validation remain outstanding.

Release status

The Android library, JVM test sources, Gradle publication configuration, and sample app are present. This environment has no usable Java runtime and Gradle could not initialize its native services, so no successful build or test result is claimed.

Add the library

No Maven artifact has been published. Use the local mobile/android/purplecallio project dependency while developing from this repository. The declared 0.1.0 coordinate is not yet a downloadable release.

Use participant tokens

Create calls from your trusted backend using the project API key, then give the app its participant-specific token. PurpleCallioClient.joinMeeting(token) authenticates the participant; never put API keys or server secrets in BuildConfig, resources, or app code.

Permissions and media

Request RECORD_AUDIO and CAMERA at runtime before joining or accepting. The SDK implements native WebRTC audio/video, camera controls and switching, participant state, reconnect, cleanup, audio focus, and SurfaceViewRenderer video output.

Android screen sharing

Screen capture uses MediaProjection. Start a fresh createScreenCaptureIntent consent flow and pass its result to startScreenShare(resultCode, data). The SDK starts its declared non-exported mediaProjection foreground service and restores the camera on stop.

Validation required before release

Run the Gradle JVM suite, instrumentation tests, build/install the sample from a clean consumer project, then test real camera, microphone, remote video, audio routing, permissions, lifecycle, reconnection, MediaProjection start/stop, and repeated join/leave on physical Android devices.

Kotlin token-only call example

CallViewModel.kt
val client = PurpleCallioClient(applicationContext)
val participantToken = myBackend.fetchParticipantToken()
val meeting = client.joinMeeting(token = participantToken)

meeting.toggleMicrophone()
meeting.toggleCamera()
meeting.switchCamera()
meeting.leave()
client.dispose()

Still having trouble?

If you're having an issue with this integration, our support team can help.

Contact Support

Related documentation

Build with PurpleCallio

Explore the documentation to choose hosted UI, React components, or the headless SDK for your integration.