There's a new version of Duo rolling out today, but it doesn't bring any huge changes for users. However, a teardown shows that the developers are still plenty active as they work on some tools to experiment with camera effects, including new controls for adjusting brightness, contrast, and saturation. Also in this update are new details for a voicemail-like feature for sending voice and video messages outside of a call.

What's New

While the meat of this post is in the teardown, one visual change in this update also stands out. Missed calls have been redrawn to place the icon below a contact's name, and if the call was made in the last day, it will list the time instead of a nonspecific "today" label.


Disclaimer: Teardowns are based on evidence found inside of apks (Android's application package) and are necessarily speculative and usually based on incomplete information. It's possible that the guesses made here are totally and completely wrong. Even when predictions are correct, there is always a chance that plans could change or may be canceled entirely. Much like rumors, nothing is certain until it's officially announced and released.

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.

More camera adjustments

Back in Duo v17, new settings were added that allowed testers to make adjustments to some camera settings, including: Color Effects, Exposure Compensation, and White Balance. None of these were accessible to regular users, and it's not really clear that they're intended to ever reach a general audience, but it shows that the Duo team is at least experimenting with adjusting the image out of the camera. Perhaps this will be for improved video quality, special effects, or maybe even just for optimizations.

With the update to v21, the list of hidden settings is getting a bit bigger. In addition to the previous batch, the Duo team has also added: Brightness, Contrast, and Saturation. There is also one other setting titled "enable video processing," which appears to enable or disable all of these effects at once.

Enable video processing

<string name="pref_enable_video_processing_title">Enable video processing</string>
<string name="pref_enable_video_processing_default">false</string>
<string name="pref_enable_video_processing_key">pref_enable_video_processing</string>

<SwitchPreference android:layout="@layout/settings_preference" android:title="@string/pref_enable_video_processing_title" android:key="@string/pref_enable_video_processing_key" android:defaultValue="@string/pref_enable_video_processing_default" />

Camera brightness is currently configured to accept values between -1 and 1, defaulting to a neutral 0.

Camera brightness

<string name="pref_camerabrightness_title">Camera brightness</string>
<string name="pref_camerabrightness_dlg">Enter camera brightness ([-1.0, 1.0]) after enabling video processing</string>
<string name="pref_camerabrightness_default">0.0</string>
<string name="pref_camerabrightness_key">camera_brightness_preference</string>

<EditTextPreference android:layout="@layout/settings_preference" android:title="@string/pref_camerabrightness_title" android:key="@string/pref_camerabrightness_key" android:defaultValue="@string/pref_camerabrightness_default" android:dialogTitle="@string/pref_camerabrightness_dlg" android:inputType="textCapCharacters|textCapWords|number|numberSigned|numberDecimal|numberPassword|phone" />

Contrast can be set to as little as 0 or turned up to basically any number. The default value is set to 1, which basically means it's unmodified.

Camera contrast

<string name="pref_cameracontrast_title">Camera contrast</string>
<string name="pref_cameracontrast_dlg">Enter camera contrast (&gt;=0.0) after enabling video processing</string>
<string name="pref_cameracontrast_default">1.0</string>
<string name="pref_cameracontrast_key">camera_contrast_preference</string>

<EditTextPreference android:layout="@layout/settings_preference" android:title="@string/pref_cameracontrast_title" android:key="@string/pref_cameracontrast_key" android:defaultValue="@string/pref_cameracontrast_default" android:dialogTitle="@string/pref_cameracontrast_dlg" android:inputType="textCapWords|number|numberSigned|numberDecimal|numberPassword|phone" />

And finally there's camera saturation. Like contrast, the range goes from 0 to a very large number, and the starting value is 1.

Camera saturation

<string name="pref_camerasaturation_title">Camera saturation</string>
<string name="pref_camerasaturation_dlg">Enter camera saturation (&gt;=0.0) after enabling video processing</string>
<string name="pref_camerasaturation_default">1.0</string>
<string name="pref_camerasaturation_key">camera_saturation_preference</string>

<EditTextPreference android:layout="@layout/settings_preference" android:title="@string/pref_camerasaturation_title" android:key="@string/pref_camerasaturation_key" android:defaultValue="@string/pref_camerasaturation_default" android:dialogTitle="@string/pref_camerasaturation_dlg" android:inputType="textCapWords|number|numberSigned|numberDecimal|numberPassword|phone" />

Again, these settings are almost certainly not meant for regular users, but the fact that they are there is a good reason to assume some kind of video effects or camera improvements are in the works. Hopefully the Duo team shares some details at some point to let us know a little more about how these controls are being put to use.

Voicemail / Videomail

Over the last few versions, little bits and pieces were added that hinted of a new voicemail-like feature coming to Duo. Basically, instead of calling somebody and hoping that they pick up, you would be able to record a voice or video message and send it to them instead. Recipients could then listen to messages when it's convenient. In other words, this is what Duo does best, but without the real-time element.

The latest update brings a bit more to the scene, including some hints about what to expect. The experience appears to be about as straightforward as the rest of Duo's interface, so it should be pretty intuitive. Users can record a message in either audio-only format or with full video, then send it to a contact of their choice. The recipient will get a notification that includes a button to immediately listen (or watch) the message.

One important detail is that messages will also have an expiration date, so you won't be able to keep them around forever. There are also two lines that show if a video was successfully saved or not, but it's unclear if this is shown when a message is first recorded. It's possible these lines are meant for somebody trying to save a message they've received, though I doubt it.


<string name="notification_title_audio_message">New voice message</string>
<string name="notification_cta_audio_message">LISTEN</string>

<string name="notification_title_video_message">New video message</string>
<string name="notification_cta_video_message">WATCH</string>

<string name="can_send_clip">Send to %s</string>
<string name="is_recording_clip">Recording...</string>
<string name="notification_body_for_message">From %s</string>

<string name="save_video_fail_message">Failed to save the video</string>
<string name="save_video_success_message">Successfully saved the video</string>

<string name="video_clip_count_text">+ %s</string>
<string name="video_clip_expire_alert_message">Expires in %s</string>

New layouts:


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.

Version: 21.0.172684013.DR21_RC05