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
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 SupportRelated documentation
Build with PurpleCallio
Explore the documentation to choose hosted UI, React components, or the headless SDK for your integration.