From the Community to AOSP: Root-Only Features that Made the Cut
Android is by far one of the most widely loved mobile operating systems, owing its disruptive growth not only to the Open Handset Alliance, but also to the host of useful features that the system packs, features that are actually productive rather than just bells and whistles.
However, it was not always so, and in the early days, firmware builds lacked many components of the feature-rich ones we see today. Most of these features were born either in Mountain View itself, or at the heart of the many device OEMs that tweak Android to their own liking… but a few features came from, yes, you guessed it, the Android enthusiast community itself. Often starting off as root apps, some small mods or custom ROM features eventually gained enough traction to earn themselves a spot in the AOSP repository, either as direct imports or nice “ports”. Here are some of the most notable ones:
Back in the beginning of 2014, The Paranoid Android team announced Hover, a notification and multitasking feature that was streets ahead of anything else available at the time. Soon after the announcement, the team launched the first beta of version 4.3 of the firmware, and the resultant user experience was seamless and increased productivity manifold. Hover, an evolution of PA’s Halo system, popped up floating notifications at the top of the screen which allowed users to quickly glance at incoming notifications and swipe them away, or engage with them. This replaced the tiresome ticker notification system built into Android, and soon after, Android Lollipop was announced with floating notifications built-in, albeit without the floating window system that Hover used when engaging with notifications. Interestingly, the code for what came to be known as ‘Heads up notifications’, was discovered lying dormant in the KitKat 4.3 and 4.4 repositories, and the community quickly produced mods to enable them. Little has changed since the integration into Android Lollipop, with the 5.1 update going on to add the previously missing ‘swipe-up to hide’ functionality.
Notification Toggles (Quick Settings)
CyanogenMod has come a long way since its days of being a small, aftermarket firmware option, and has pioneered numerous features as part of the Android system. CyanogenMod 7, the Gingerbread iteration of the firmware and the version that was responsible for putting the CM name on many enthusiasts’ lips, brought a useful and time-saving feature to the notification shade in the form of Quick Toggles, borrowed from Samsung’s similar implementation in TouchWiz. These small buttons rested at the top of the notification panel, and allowed users to quickly toggle important and much-used system features like WiFi, Bluetooth, GPS, etc.
Unlike floating notifications, notification toggles took their time to make it to AOSP, finally going on to make an appearance in Android Jellybean, under the name ‘Quick Settings’ and in the form of a hidden panel within the notification shade, toggled by a button. However, this implementation resulted in a relatively poor user experience given the low discovery rate of the panel, and Android Lollipop moved them to the front and center of the notification shade, resting below the header but above the notifications, with the option to quickly hide them by swiping up on the notifications.
One of the most obvious features of any operating system is the ability to capture the contents of the current screen as an image, aka a screenshot. Unfortunately, Android lacked the ability to do so in its early years, with power users resorting to root solutions such as the then-popular Shoot Me to fulfill their screen capturing needs. The exception was TouchWiz, which could do its volume down + power button screenshot combination before AOSP. That changed in the Android 2.2 Froyo release, when Google began adding code to AOSP to enable screenshots, albeit it wasn’t an official API yet and only a few Samsung Galaxy S users reported the ability to successfully pull it off. Android 2.3 Gingerbread made the API official, with apps being able to take device screenshots sans root access, but it wasn’t until the Android 4.0 Ice Cream Sandwich release that the Power + Volume Down screenshot combo was added to the system and standardized across most devices.
Screen recording is a useful feature for many, whether you want to capture an application’s demonstration, or you’re set on launching your mobile game channel, but up until Android 4.4 Kitkat, the framework had no native API to pull off the recording. Prior to that, pioneering apps such as SCR made use of the FrameBuffer or SurfaceFlinger APIs, but even so, apps that were normally launched weren’t allowed access to them. An adb-launch technique floated around for a bit, but it proved to be repetitive and cumbersome and the go-to solution was root apps that used superuser permissions to tap into those APIs. The arrival of KitKat changed things, with Google finally recognizing the importance of screen recording and adding a publicly accessible API to the framework. From there on out, apps could easily tap into the system and avail high quality recordings, changing the entire landscape of screen recording on Android.
Apps to SD
Storage management on Android used to be a nightmare, and many a user has spent hours with a laptop and Android device connected, partitioning their SD card, writing mount scripts et al, in a heroic attempt to squeeze out every single megabyte made available to the user. Small internal partitions and the system’s inability to store apps on the SD card led to severe moderation of app install rates for end users, and in addition to SD card partitioning, numerous root apps such as Link2SD and Super App2SD came up. Android 2.2 Froyo brought this functionality to the operating system natively, and all of a sudden, users were able to move certain apps partially to the SD card. It was a small but significant improvement, and in the time since then, internal partition sizes have increased tremendously and the feature has decreased in importance, but at the time it turned a score of frowns upside-down.
Disable System Apps
Pre-installed apps, or ‘bloatware’ as many enthusiasts like to call them, are apps preloaded as part of the Android system, either from the OEM or from the carrier. More often than not, these apps take up copious amounts of space, providing unneeded functionality which results in a debilitating user experience. Up until the launch of Honeycomb, the only way to get rid of bloatware was using a root uninstaller. However, the launch of Android 4.0 Ice Cream Sandwich brought a feature to the app settings page that allowed you to disable system apps, and while this was not an exact reproduction of the root enabled feature, it provided a similar yet reversible functionality and worked seamlessly out of the box, with a user-friendly approach.
A few years ago, the infamous Greenify began making the rounds as a performance-boosting and battery saving solution, which effectively put background apps into an enforced sleep state. It quickly scaled up, with power users and enthusiasts everywhere getting their fix of performance and battery improvements, and to this day remains a popular app. Android 6.0 Marshmallow introduced Doze, a feature tangential to the path of Greenify, which brought the latter’s almost-magical battery saving capabilities as a passive always-on service, available to every user by default. Doze makes use of Android’s sensor array to detect when the device is not in motion, and subsequently turns off almost everything on the device, saving state only for calls, SMSes and other high priority notifications. Google also has a smart contingency plan that prevents developers from wrongly interrupting Doze, by mandating routing and subsequent checks through a Google Cloud Messaging server.
Despite the aforementioned features being among the more notable ones that made the jump from community features to the AOSP codebase, numerous other relatively minor ones did so too. Few were implemented in a manner identical to their root counterparts, but most of them underwent changes that Google deemed appropriate. Multiwindow was among the former, with Android Marshmallow featuring a hidden toggle to enable the split-screen productivity enhancement in a manner almost identical to that seen on aftermarket firmware such as OmniROM.
Others that underwent relatively substantial modifications include:
- Privacy controls like XPrivacy, which allowed users to block apps from accessing certain permissions. A version of this first showed up in Android in Android 4.3 under the name ‘App Ops’, but was promptly removed in Android 4.4 KitKat. Users found a workaround to enable the hidden settings, but it wasn’t until Android 6.0 Marshmallow that Permission Settings made a full-blown ingress
- Android has always been a favorite among users for the endless customization options it offers, and theming is one of the most vital underlying components of customization. Full device theming gained popularity through the release of T-Mobile’s theme engine, and for a while it had a monopoly, until a team of developer’s brought RRO Layers to a wide variety of custom ROMs. Originally created at Sony for Xperia theme developers, Layers gained tremendous traction in the community and users recently reported that Layers themes work natively in Android 6.0 Marshmallow as well (with root), leading enthusiasts to believe that full support for them as part of AOSP might be right around the corner.
- The lockscreen on Android has seen a wide variety of changes over the years, going from the simple Froyo slider, to the widget touting Jellybean one, and finally the minimal and elegant Lollipop lockscreen. While apps like WidgetLocker brought lockscreen widget functionality without root, it was up to the modding community to bring features like camera quick launch and music controls to the lockscreen. It wasn’t before the launch of Android Icecream Sandwich that these were merged into AOSP, and they have persisted to date, albeit with minor refinements and polish.
Do you know of any Android feature that used to be a root-exclusive one back in the day? Let us know in the comments section below