ICE Restart and Call Diagnostics Now Available in the Telnyx WebRTC Android SDK

3, Nov 2026

Telnyx WebRTC Android SDK 3.8.0 is now available. Calls recover from network hiccups on their own, and when one does fail, the report tells you exactly why.

What's new

  • Calls that survive weak networks: Transient signaling and connection failures now recover automatically, with no app-side logic needed. Android now behaves like the JS and iOS SDKs.
  • Faster call setup with one setting: Turn on Trickle ICE once at login and every call in the session connects sooner. Switch it on or off at runtime, no reconnect required.
  • Know why a call dropped: Every call report now includes a full ICE diagnostics section: what the network did, when each state changed, and which path the call finally used. Works for every call, no debug flag required.
  • Cleaner troubleshooting: Live logcat logging (adb logcat -s ICE_DIAG:*) streams the same diagnostics in real time, and outbound messages now identify the SDK version that made the call.
  • Fewer failures in production builds: A newer bundled WebRTC engine plus built-in proguard rules mean R8-minified release builds no longer break call setup.
  • One migration needed: The per-call useTrickleIce option moved to the login config or the session-wide setter. It's a one-line change, shown below.

Why it matters

Mobile calls fail in exactly the spots you cannot reproduce: a tower handoff, a NAT timeout, a socket reset. Recovery logic used to live in your app, and diagnosing a drop usually meant borrowing the user's device. The Android SDK now handles recovery and observability at parity with the JS and iOS SDKs, so the same resilience ships on every platform. When a call does drop, the report shows which hop failed and when.

Example use cases

  • Support engineers diagnose a dropped call from the ICE state transitions in the call report, with no debug build.
  • Field service apps ride out weak coverage areas by leaning on automatic ICE restart.

Getting started

  1. Upgrade to 3.8.0 via JitPack.
  2. Replace per-call useTrickleIce parameters with the session-wide login config option or TelnyxClient.setUseTrickleIce().
val credentialConfig = CredentialConfig(
    sipUser = sipUser,
    sipPassword = sipPassword,
    sipCallerIDName = callerIdName,
    sipCallerIDNumber = callerIdNumber,
    fcmToken = fcmToken,
    ringtone = null,
    ringBackTone = null,
    useTrickleIce = true, // applies to every call in the session
    logLevel = LogLevel.ALL
)

// Toggle at runtime, no reconnect required
telnyxClient.setUseTrickleIce(false)

Learn more in the 3.8.0 release notes or on JitPack.