A new version of the Duo video chat app is rolling out to (Nexus, Pixel, and Android One) users with the next step toward full integration with Google's Phone, Contacts, and Android Messages apps. While it's getting more convenient to make video calls with friends and family, a teardown of the latest updates points to a new screen sharing feature that may allow you to also help them when they have problems with their phones.
Unofficial Changelog: (the stuff we found)
- Deeper integration with Google Phone, Contacts, and Android Messages
Most of the key details were already discussed in our earlier post, so I won't go over them in detail here. But for now, there are three places you're probably going to actually care to use the new features: the screens for the call log, contact search, and contact details.
Left: w/ v19. Center & Left: w/ v20.
The Google Phone app (shown above) now has video cameras in place of the phone icons in the call log, and they can be tapped to immediately launch into Duo (or presumably ViLTE if it's supported by the carrier). If you tap on an entry made with a regular call, there's an option to call back using a video call. Alternatively, the video call entries have an option to initiate an audio call.
Below are the other two major integration points. The first is a contact page, accessible from within the Contacts app or any other apps that link to individual pages (hooray for Android intents). You may remember the v2.2 update to the Contacts app that added a new quick access bar–it included a disabled button to make video calls. That button is now working, and there are some new camera icons next to phone numbers that can be called with Duo. Finally, the search screen in the Contacts and Phone app now have video icons that can be tapped to launch directly into Duo.
The features discussed below are probably not live yet, or may only be live for a small percentage of users. Unless stated otherwise, don't expect to see these features if you install the apk.
Screen sharing (which may or may not be Casting?)
We'll start off with a new line that promises to toggle screen sharing.
Since there are a lot of people asking for Duo to support screen sharing, which I assume to mean they are planning to act as tech support for their non-so-technical friends and family, it's hard not to jump to that conclusion. However, there are clues that suggest this may actually be used to launch a Google Cast session so you could send the video conversation to a nearby TV. Let's be honest, they're both actually very cool and useful features for a video chat app. (This isn't the only twist, so bear with me.)
Note: If you don't care about the boring nitty-gritty details, go ahead and skip to the end for the spoiler.
The clue comes from the layout where the string above is referenced. It's part of the video chat controls, which includes the buttons to enable bluetooth, speakerphone, muting the mic, or switching the camera. The button referencing the new line is named button_call_cast, which certainly sounds like something that starts a Google Cast session. On top of that, two newly added icons include white and black versions of the Cast logo.
<LinearLayout android:id="@id/call_buttons_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:animateLayoutChanges="true"
<ImageButton android:id="@id/button_call_cast" android:visibility="gone" android:layout_width="64.0dip" android:layout_height="64.0dip" android:scaleType="centerInside" android:contentDescription="@string/toggle_screensharing" style="@style/TachyonWhiteCircleButton" />
<ImageButton android:id="@id/button_call_bluetooth" android:layout_width="64.0dip" android:layout_height="64.0dip" android:src="@drawable/quantum_ic_bluetooth_white_36" android:scaleType="centerInside" android:contentDescription="@string/enable_bluetooth" style="@style/TachyonWhiteCircleButton" />
<include layout="@layout/camera_button" />
<ImageButton android:id="@id/button_call_mic" android:layout_width="64.0dip" android:layout_height="64.0dip" android:src="@drawable/quantum_ic_mic_off_white_36" android:scaleType="centerInside" android:contentDescription="@string/mute_mic_button" style="@style/TachyonWhiteCircleButton" />
<ImageButton android:id="@id/button_call_speakerphone" android:visibility="gone" android:layout_width="0.0px" android:layout_height="0.0px" />
Things take another interesting turn with a look into the code that's responsible for switching between black and white icons. (Forgive me, the following part reads like spaghetti.) As it turns out, that section of code calls a newly added activity named ScreenCapturerHelper, and makes further calls to the ScreenCapturerAndroid and VideoCapturer libraries, which belong to WebRTC.
Sorry, there's too much source code to paste it all in here...
If those names don't mean much to you, that's okay, because the most important part is that the code also calls into the MediaProjectionManager, an API that is used to do screen and video captures on Android – or more generally said, this is what all of those screen recorder apps use. (Interested developers can find a pretty simple walkthrough with implementation by Matt Snider.)
We have a button name and icons suggesting this is for Casting, and the code and name of the feature that points to screen sharing. But there's one final pointer that tells me it's probably not Cast support: None of the code references com.google.android.gms.cast, the standard library for launching a Cast session.
As for the Cast icon, my hunch is that the developers needed an icon and chose to use that one as a placeholder during development until something more suitable could be produced. That makes more sense given that none of the other Cast-related icons are included (e.g. the animation that shows a Cast session is connecting).
In closing: Nothing is certain until it's launched, but for now the clues point to a screen sharing feature akin to what Google's support staff can use to help customers. That means you're probably not going to have any excuses left when your parents ask how to remove apps from the home screen every couple of weeks. On the plus side, it'll be so much easier to help them once you can see what they're talking about.
There is plenty of code and no specific reason to think this couldn't be functional now, but the lack of strings to further explain the feature, and the fact that it still has Google Cast icons, suggest that it's probably still in development.
The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.