Last week, the ITC (International Trade Commission) ruled in favor of Sonos as part of an ongoing patent dispute with Google related to the Google Cast protocol’s multi-speaker control. I’ve researched how Google is modifying behavior in Android to work around this issue, and what it means for developers and users.
For users who have an Android device and two or more smart speakers compatible with the Google Cast protocol, the Google Home app can be used to group those speakers together. Once grouped, users can play music on that speaker group by selecting it from the list of targets shown when tapping the Cast icon in a music streaming app that has implemented the Cast SDK. The Cast SDK is bundled with Google Play Services; hence it is not included in AOSP. However, as with many other Google SDKs, the Cast SDK makes extensive use of Android platform APIs.
Following the release of the fifth Android 12 beta on September 8, 2021, app developers discovered a regression in the behavior of music casting that was caused by an unannounced change to Android’s media session stack. This change prevented physical volume button events from being passed to remote media sessions. This meant that users could no longer easily change the volume of a connected smart speaker from their smartphone after exiting the app that’s casting audio. Disabling a feature that’s used by so many so frequently without notice left observers wondering what precipitated this change. Google typically warns developers before it rolls out changes that affect an existing API, but in this case, developers were the ones to discover the regression. In this post, we’ll analyze the changes that Google made to Android 12 that blocked (and later re-enabled) volume adjustment for remote media sessions.