Skip to content

Android VoIP Call Screen #239

Description

@mashrurbd

Plugin Request

Name: Android VoIP Call Screen
Package: @capacitor-community/android-voip-call-screen


Platform(s)

  • Android 10+
  • Optional future support for iOS (CallKit integration)

Existing Solutions

Existing related plugins:

  • @capacitor-community/callkit – iOS CallKit integration only
  • cordova-plugin-callkit – iOS focused
  • cordova-plugin-android-voip – Limited maintenance
  • Native Android Telecom API – Requires manual native implementation

Limitations of current solutions:

  • No modern maintained plugin dedicated to Android native VoIP call UI
  • No unified API to trigger system-level incoming call screen
  • Hard to integrate with Firebase/Socket-based VoIP apps
  • Lack of background service + foreground call notification abstraction

Description

This plugin provides a native Android system-level VoIP call screen integration for Capacitor apps.

It allows web-based VoIP apps to:

  • Trigger native Android incoming call UI
  • Show full-screen call interface
  • Display caller name, avatar, and call type
  • Accept / Reject / End call actions from native UI
  • Run as a foreground service during active calls
  • Keep audio active in background
  • Integrate with WebRTC / Socket.IO / SIP-based calling
  • Maintain call state between app background and foreground

Core Features

  • 🔔 Show native incoming call screen
  • 📱 Full-screen overlay during call
  • 🎧 Foreground service for active calls
  • 🔄 Handle Accept / Reject / End callbacks
  • 🔒 Works when app is locked or minimized
  • 📲 Supports multiple incoming calls queue
  • 🔕 Auto-dismiss when call ends from backend
  • 🧩 Event listeners for call actions
  • ⚡ Lightweight API for JS control

Example API (Proposed)

VoipCallScreen.showIncomingCall({
  callerName: "John Doe",
  callerAvatar: "https://example.com/avatar.jpg",
  callId: "12345"
});

VoipCallScreen.endCall({ callId: "12345" });

VoipCallScreen.onCallAccepted((data) => {
  console.log("Call accepted", data);
});

VoipCallScreen.onCallRejected((data) => {
  console.log("Call rejected", data);
});

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions