If you’ve ever built a VoIP or carrier-grade calling app for Android, you’ve likely cursed the black box known as InCallUI . It’s the system-level interface that pops up when you receive or make a phone call—the screen with the accept, decline, speakerphone, and keypad buttons.
But here’s the catch: For a long time, InCallUI was a tightly guarded, OEM-specific application. With the introduction of the Telecom framework and ConnectionService APIs, Google attempted to standardize it. Yet, the reality remains messy. incallui
Now, your Android tablet can show an InCallUI for a call active on your phone. This is implemented via a new InCallService extension that proxies touch events (mute, speaker) back to the phone over Bluetooth LE. If you’ve ever built a VoIP or carrier-grade
The InCallUI activity requires an absurdly fast start-up time. Telecom starts a "warm-up" process pre-emptively. If your InCallActivity takes longer than ~200ms to inflate its layout or bind to InCallService , the system times out. The call connects, but the UI never appears. With the introduction of the Telecom framework and