I recently bought a pair of Sony WH-1000XM4 wireless headphones (ad: available on Amazon). Many of the headphone’s capabilities are unlocked using the Sony Headphones Connect (SHC) companion app. Unfortunately, the SHC app slashes hours off my phone’s battery life. Here’s what the app did wrong and how to rein in its energy consumption.
The noise-canceling and ambient-awareness modes are key selling points of Sony’s headphones and earbuds range. The companion app can switch between and adjust the modes based on your activity (sitting, walking, etc.) and location (home, work, etc.). You can manage this feature using the Adaptive Sound Control (ASC) option screen in the SHC app.
This capability was a key factor in why I decided to buy these headphones. (Hearing cars and not being run over by them is quite a useful feature.) I also liked the idea of the ambient noise canceling levels automatically adjusting based on my location.
Unfortunately, the SHC app consumes roughly 20–30 % of my phone’s battery after a two-hour walk with ASC enabled. The SHC app and Google Play Services (GoPS) consume the power. GoPS provides geolocation services to the operating system and apps. The battery drain is slightly lower when sitting still, but not by much. To be clear, the auto-switching ASC causes the battery drain, not noise-canceling or ambient-aware modes.
I initially believed the SHC app was updating my location way too often. Constant location updates keep the phone’s antennas on and prevent it from entering low-energy modes. However, I don’t believe that this is the only cause. I use other apps with similar usage profiles, which don’t drain the battery to the same degree.
Android usually restricts how often a background app can check your location. However, it makes exceptions for services belonging to “companion apps,” such as Sony’s headphone app.
I use an app called WiGLE that collects Wi-Fi and Bluetooth triangulation data. It triggers Wi-Fi scanning and records information broadcast by nearby access points every second. This app consumes 5–6 % of my battery over a two-hour walk. The WiGLE app was not running and didn’t interfere with my testing of the Sony Headphones app.
The WiGLE app can be considered a battery life worst-case for collecting location data. The SHC app doesn’t need to do the same scanning that the WiGLE app does. I would not expect the SHC app to consume 4–6 times more energy than the WiGLE app. I would estimate an app like this to only use 1–2 %.
GoPLS provides a geofencing system for Android that notifies interested apps when you enter and leave a predefined geographic area. This system is significantly more energy-efficient and doesn’t require apps to pull location information in the background constantly. You can set up geofence areas in the SHC app, but the app must have badly misimplemented the feature.
I also use both the Samsung Health and Google Fit apps. Both apps rely on the same activity detection system provided by GoPS. The two apps combined use less than 1 % of my battery over a typical day.
Sony’s app should manage to respond to activity detection and geofence events with minimal impact on battery life. I would expect the battery drain to be no more than 1 %.
The app uses location services from GoPLS globally but will switch to Baidu Location Services if you set its region to China. I can only speculate that Sony must have made some battery life compromises to accommodate the two different location services. For example, Sony might have picked a sub-optimal implementation that can accommodate differences between the two service providers.
I feel uncomfortable just knowing Sony has included the unnecessary Baidu component inside an app installed on my phone. However, that’s a whole other bag of cats that we’ll not delve into now.
The SHC app is optional, assuming you never want to change the headphone’s advanced options. Alternatively, you can keep the app and disable ASC to rein in its energy consumption.
You can cut the battery drain in half by leaving activity detection enabled and disabling all location-based ASC switching. If you completely disable ASC, the battery drain drops to about 1 % after 24 hours of use.
ASC is a neat safety feature, and you can tweak it to make yourself situationally more aware of your surroundings. However, it’s not worth cutting my phone’s battery life by hours. I guess I should just get used to either leaving ambient mode on all the time or turning it on when I’m on and about.
The automatic ASC switching can also be annoying. It sometimes unexpectedly switches between complete noise canceling and ambient mode while I’m sitting still in the same location. The unexpected automatic changes can bring background noises in and out of focus. I find this more distracting than a constant background noise.
You shouldn’t revoke the app’s location access controls, however. The app still needs it to pair with the headphones over Bluetooth. Apps can use Bluetooth device scanning to triangulate your location. So, Android doesn’t differentiate this permission from the more generic geolocation permission.
Note that the SHC app will periodically prompt you to re-enable ASC. The dialogs are deceptively designed, and it’s easy to accidentally enable the feature while you’re trying to dismiss the prompts.