Tech —

Android M Teardown—tap-to-wake support, Play Services data backup, and more

We dig through the code to discover the secrets of Android M.

The Android M developer preview was posted during I/O, and now that I've actually gotten home and had a full night of sleep, I'm cognizant enough to seriously dig into the system images. Back when I worked at Android Police, I would do "APK Teardowns"—basically decompile the APKs that Google puts out, compare the new version against the old version, and see what new things stick out. Often Google would leave work-in-progress features in the code, I'd find them and write them up. Eventually Google caught on and started leaving Easter Eggs for us to find, and I've been told Google now audits code for unreleased features.

While gleaning information from app-to-app updates isn't as fruitful as it used to be, Google did just release an entire OS, so there's got to be something in here, right? Before we dive in, a word of warning: these are hints of work-in-progress features at Google, but that doesn't guarantee they'll ever see the light of day—anything could be cancelled or reworked at any time.

Native Tap-to-wake support!

One of our favorite features of HTC and LG devices is the tap-to-wake functionality. Rather than hunt for the power button to wake the device, you can just double tap on the screen and start using it. In Android M's settings provider there is a new Boolean value called "double_tap_to_wake," which suggests Google is working on getting this OEM feature built into the OS.

This requires work on the software and hardware side of things, so it won't magically come to every phone with Android. The option will be there for Nexus devices, though, and this will probably offer a standard way for OEMs to implement the feature. Like "OK Google" hotword support, after this there will be no excuse for OEMs to not include the feature.

M's new backup service is headed to Google Play Services

Several times we've heard the promise of "app backup" from Android, but there has never been a full solution that just works—reflashing a phone or transitioning to a new one is still a painful, tedious process. Android M is taking yet another swing at the idea, but apps have to be built on the M SDK. The good news this time around is that Google will be able to update the app backup system without having to update Android. The Backup Transport Service has moved to Google Play Services.

This again came from the settings provider, which previously declared the backup service as "com.google.android.backup/.BackupTransportService" in Lollipop but in Android M it's "com.google.android.gms/.backup.BackupTransportService." "com.google.android.gms" is the package name of the Google Play Services APK (GMS stands for Google Mobile Services, the old name of Play Services, which is still used internally).

Saying the backup system has moved is maybe getting a little ahead of ourselves; it's more accurate to say that it can move. It looks like it's been unbundled from the operating system, and a new version can be packaged with Play Services, but there isn't currently backup code in Play Services. The unbundling means Google can replace the system version with a Play Services version any time it wants.

With yet another component moving from the system to Google Play Services, it's time for a new version of our "what goes where" Android chart:

Our current understanding of "what goes where" in Android, as of the first Android M Developer Preview.
Enlarge / Our current understanding of "what goes where" in Android, as of the first Android M Developer Preview.
Ron Amadeo

The Calculator is probably headed to the Play Store

Like it says in the chart, the calculator is part of AOSP, but in Android M, the calculator's internal name changed from "Calculator" to "CalculatorGoogle." There are also now some hooks for Google Play Services. Usually all this means an app is headed to the Play Store as a proprietary, standalone app. We've seen it a million times before.

The question is, why? Usually the "Google" apps rely on a Google cloud service somehow, so what would the calculator plug into?

The calculator also has a few new features in the code that don't seem to work yet. There's cut, copy, and paste, support, and options to "Answer with leading digits" or "Answer as fraction." One hidden feature that exists, but is pretty tough to find, is below. Really big calculations will timeout the calculator, but you get the option to extend them.

Google should probably work on the text wrap here.
Enlarge / Google should probably work on the text wrap here.

Google changed the icon, too.

Better fingerprint sensor

When we spotted the fingerprint API in the Lollipop AOSP code last year, it was aimed at terrible laptop-style fingerprint readers that require you to swipe your finger across a sensor. There were messages for swiping too quickly or too slowly, and that was it.

This new (final) implementation doesn't have any of those swipe messages anymore. It's all geared toward the great "one touch"-style sensors in devices like the iPhone and the Galaxy S6. There are messages like "Put the same finger on the fingerprint sensor and lift after you feel a vibration" and that's it. It sounds like OEMs need to get the good kind of fingerprint sensors or they can get out.

A stock "dismiss all" button in overview?

The system UI has a string for a "dismiss all apps" button in the overview (formerly called "recent apps"), something that OEMs often add to Android as a "task killer." It's not really needed since the overview is a history of past apps, not necessarily a list of running apps, but some users like to keep the list clear for whatever reason. Since the text is new, there's a chance Google could add the button in the final version of M.

The text is next to strings for the experimental multi-window mode in M, suggesting the two are related. The Overview screen would need to be overhauled for multi-window anyway, so we'll have to see if this new "dismiss all" button makes the cut.

Night Mode

Buried in the developer settings is a "Theme" option based on the theme engine Sony submitted to AOSP a while back. Right now it only changes the settings screen from light to dark.

What's interesting is that the mode is called "Night mode" internally, and along with the time-based "automatic" setting that's available, really makes it sound like Google wants to roll this out to the whole OS. In the hunt for more "night mode" things, I found that several apps have unused "values-night" folders with custom color values for the UI. The color values all seem to exchange the light backgrounds of the interface for dark ones.

Maps has this folder and currently uses it for the night mode there while navigating, but I was surprised to find unused "values-night" folders for the framework and Google Search. The framework affects most of the other apps, and between the two of them, this would cover a good chunk of the interface.

Update: The theme engine works and is in Android M, but it isn't actually used in the "Theme" option in the settings. Night mode just changing the color values, which you can do whenever you want without the need for a whole theme engine. The theme system is for replacing icons and other art assets, and mainly meant for OEMs. There's also a new "Theme.Material.DayNight" API that any app can take advantage of, documents for it are only available in the downloadable (not online) Android M documents. (Thanks to Android Framework Engineers Ian Lake and Alan Viverette for clearing this up.)

Google regrets its Easter Egg

Open the Android M logo (mash on the Android version in the settings), then tap the logo a few times and a shruggie emoticon ( ¯\_(ツ)_/¯ ) will pop up. In Lollipop you got an entire Android version of Flappy Bird, so as Easter Eggs go this is pretty lame. Google knows it though, so the string for the shrug ASCII is titled "regrettable_lack_of_easter_egg." We're guessing something better will be in the final version.

Listing image by Andrew Cunningham

Channel Ars Technica