Skip to content

4.5.0 — two phone accounts: voice on the OS call UI, video on SDK call screens

Latest

Choose a tag to compare

@murugancmi murugancmi released this 29 Aug 05:49

One Android app now holds two Telecom phone accounts, chosen per call by hasVideo:

  • Voice / PSTN calls → the system-managed account: native OS call UI for ring and in-call. This account is never cycled (cycling destroys its user enablement — the 4.4.0 incident stays fixed).
  • Video / team calls → a new self-managed <appName>_team account: the SDK's custom call screens, including over the lock screen. Only this account is cycled for zombie-call sweeps.

This replaces 4.4.3's systemManagedPinned compromise (which forced video calls onto the OS UI whenever a voice SDK was present).

Cold-start / answer fixes (production-validated in the Connle app):

  • setActive() inside the native answer — Telecom's audio route activates without waiting for JS (killed-state answers had connected silently)
  • The React host is resumed before the answer broadcast, so a foreground-paused host runs the JS answer immediately instead of parking it
  • Already answered/active uuids are never re-rung; every disconnect path force-closes the call screen and cancels the notification
  • Ring activity: onNewIntent re-entry, re-front while answering, hardware back blocked during a live call, keyguard flags re-asserted on window attach
  • Lock-screen ring: screen wake + direct activity launch only when actually locked; DND bypass; MAX priority
  • In-call React surface: host claimed only when not already RESUMED (no more 800 ms heuristic) and the claim is released on detach

New JS API: showInCallScreen(uuid, name) (now also with the app foregrounded), closeInCallScreen(), setActivityShowWhenLocked(show).

Consumers: @telecmi/piopiy-native ≥ 0.26.4 and @telecmi/connle-video-native ≥ 1.2.0 pin ^4.5.0. Apps install nothing and change nothing.