Android will soon let apps stream call audio from your phone to your tablet

A new software library enables apps to stream VoIP calls from your phone to your tablet. Here’s how it works.

Google_Meet_Call_Transfer_Hero

Google’s finally back in the tablet discussion with the Pixel Tablet, a home entertainment device that doubles as a smart home hub. In his review of the Pixel Tablet, XDA’s Ben Sin says it provides the “best Android tablet software” he’s ever tested. That’s certainly promising to hear because the software experience will hopefully only improve from here as the tablet receives new features through OS and app updates. One such feature it might receive is the ability to stream or transfer calls from your phone to the tablet.

Imagine you’re at home running around doing chores or lounging on the couch watching TV when you get a call from a loved one on Google Meet. Sure, you can take the call with your phone in your hand, but if you move it to your tablet, you’ll get a much larger display and better speakers. Transferring media can be as simple as hitting the “cast” button in-app and then selecting the tablet (this only works with the Pixel Tablet for now since it’s the only Android tablet that supports acting as a Cast receiver). On Android 13+, you can even transfer media to a cast device outside the app through the OS’s output switcher. Eventually, you may even be able to stream Google Meet calls from your phone to your tablet. And this is all thanks to Google’s new Telecom Jetpack library.

During the “building for the future of Android” session at Google I/O 2023 earlier this year, Google announced it would be releasing a new Jetpack library called “Telecom” that simplifies the API surface for telecom stack integration and also makes new features possible, like seamless audio switching/routing and VoIP call transfer. Specifically, Developer Relations Engineer Dan Galpin said the following:

“In another new example of purpose-built APIs, we’re releasing a new Jetpack library that supports call-related background work, simplifies the telecom stack API service, and brings backwards compatibility for newly-released features. It includes support for seamless audio switching and routing, and call transfer for VoIP apps, leveraging the cross-device SDK.”

The cross-device SDK, for those unaware, provides APIs that simplify nearby device discovery, device wake-up, secure communications, and multi-device sessions over Bluetooth, Wi-Fi, and ultra-wideband. It was announced at last year’s Google I/O and went into preview in August of that same year, but it’ll apparently exit preview status this summer.

In one of the slides about the Telecom Jetpack library, a screenshot is shown of a Google Meet call with Android’s output switcher box on top. The output switcher shows that a Meet call with “Jamie Hall” is ongoing and gives the user the option to continue playing the call audio on “this phone” or stream/transfer the call to the user’s Pixel Tablet.

Android call stream and transfer in a slide about the Telecom Jetpack library

Now, it’s unclear whether this screenshot is just a mockup as Google Meet doesn’t support streaming/transferring calls this way yet. However, the point is that the Telecom Jetpack library makes this possible in the first place, and developers of VoIP apps can already play around with this feature since the initial alpha version of the library has already been released.

Version 1.0.0-alpha01 of the Core Telecom library was released at Google I/O on May 10, 2023, and it “introduces the CallsManager API which VoIP apps can use for integrating with the Telecom framework on a device. Calls notified to the platform benefit from foreground execution priority, visibility on Bluetooth, wearable and automotive devices, and simplified audio routing.” For devices running older versions of Android (all the way back to Android 8.0 Oreo), the CallsManager API “wraps the legacy ConnectionService API.”

Developers of VoIP apps can already play around with this feature since the initial alpha version of the library has already been released.

The source code for the Telecom Jetpack library provides additional details about what it enables. For starters, it reveals that the CallsManager API actually enables VoIP apps to “add their calls to the Android system service Telecom,” which makes other services “aware of [their] VoIP application calls” leading to a “more stable environment.” As an example, if a VoIP call is added to the Telecom system, a wearable device can answer an incoming call. Basically, the wearable will treat the VoIP call as if it’s a regular phone call, meaning that call control functionality will be more consistent across devices. Currently, in order to make VoIP calls even show up on some types of connected wearables, the VoIP call notification has to be forwarded from the phone to the wearable.

Apps that integrate the Telecom Jetpack library register what capabilities they support. CAPABILITY_BASELINE means that the VoIP app only supports having its calls added to the Telecom system; CAPABILITY_SUPPORTS_VIDEO_CALLING indicates that the VoIP app has the ability to make video calls; finally, CAPABILITY_SUPPORTS_CALL_STREAMING indicates the VoIP app supports call streaming.

The difference between streaming a call versus transferring one is that with the former, the call is still being handled by the source device (like the phone), but the media audio and controls are “streamed” to the sink device (like the tablet). In contrast, transferring a call actually involves moving the call entirely from the source device to the sink device.

I don’t know if Google plans to update Android’s telephony stack and/or its first-party dialer app to support streaming regular phone calls, but my guess is that this capability will be limited to VoIP calls for the time being.

What happened to Nearby Calling?

Back in late 2021, I discovered evidence that Google was preparing a nearby calling feature that would let you link your phone to “access calls from [your] phone directly from [your] Nest hub [sic] when you’re nearby.” It’s unclear if this feature was intended for the actual Nest Hub or its close relative the Pixel Tablet, but in any case, I haven’t seen any evidence since then that Google’s moving forward with this feature.

Nearby-calling-Android-12L-featu

Instead, it seems like Google decided to bring this feature to life via new platform APIs and the aforementioned Jetpack library. The company experimented with “cross-device calling” and “external call audio routing” APIs in Android 13 that were reworked into the APIs we have now in Android 14. It’s also added a new system-only role called SYSTEM_CALL_STREAMING that grants its holder the CALL_AUDIO_INTERCEPTION and RECORD_AUDIO permissions, two permissions that respectively allow an app to “access the uplink and downlink audio of an ongoing call” and record audio. It’s worth noting that Google Play Services is defined as the role holder on Pixel phones running Android 14, suggesting that the Play Services app will handle the actual streaming of call audio that the Jetpack Telecom library advertises.

One thing that isn’t clear to me is whether call streaming and call transferring will be on all versions of Android the Jetpack library supports. Hopefully, Google can offer clarity on this soon when it announces the availability of the library.