Over the past few weeks, contributions led by Jorge Ruesga (jruesga) and aided by Danny Baumann (maniac103) have added some much needed, and loved, features to CyanogenMod 12.1 nightlies.
Imap push enhancements
One of the most requested features requested from Google since the ICS days was the implementation of the IMAP IDLE protocol to the stock Email app. The IMAP IDLE protocol (RFC 2177) is an extension to the IMAPv4 specification that allows for receiving email changes (new emails or modification/deletions of the current existing ones) as soon as they happen or are detected by the email server. This is accomplished by maintaining an active connection that allows the server to push notifications about these changes to email clients. Maintaining an idle connection to the server will reduce the overhead of polling the server every ‘n’ minutes, which leads to a better overall battery and networking usage performance.
In recent CM12.1 nightlies the stock Email app received some major enhancements, among which is our implementation of the IMAP IDLE protocol. To access this new feature just access your IMAP account settings, or configure a new one, and set the synchronization interval of the account to ‘Auto’.
Some other new features brought to the Email app are per-folder notifications and synchronization days (only available for IMAP and Exchange accounts). This will allow you to configure different sets of notifications for different folders, and configure which folders will be synchronized in the periodic or idled synchronizations. Access the account settings, go to the notification and/or interval settings and navigate through the mail folders to access its settings.
CMSDK & Dynamic Tiles
The CMSDK project is still (technically) in its infancy, led by Adnan Begovic (Decad3nce), however we are already starting to see the fruits of that labor.
The first exemplification of the Quick Settings tiles API within the OS was merged into nightlies: a concept that may be familiar to CM11 users as “Dynamic Tiles”, a way to spawn new tiles when certain events are fired by the OS.
While the old implementation resided inside of the SystemUI, which listened for the defined events to show the Dynamic tiles, in CM 12.1 using the new CMSDK, the creation of custom tiles can be easy triggered from the origin of the event source instead of the observer of the event. This means that more information about the fired event can be accessed, that isn’t accessible from outside the source of the event. For example, for Lollipop, we moved all the logic for root access management into Android’s implementation of AppOps, so when you’re in a root session, a ‘#’ symbol appears in your status bar. The new Dynamic Tiles take this a bit further and allows you to view which applications currently have active root access on the system.
For further information about the Quick Settings Tile API and the overall architecture for the CM SDK, see https://github.com/CyanogenMod/cm_platform_sdk/wiki. We’re very excited about this project and what this will enable for our first party and third party developers as CMSDK continues to expand.
Many users have personal routers (or even at the office) that are dual band and multi-SSID. This is great for coverage, but a pain when your device fails to automatically connect to the broadcast that you’d prefer, instead opting to try and determine which signal you should connect to based on other factors.
In prior versions of Android, you weren’t able to configure the preferred network connection list to your liking. Starting from CM 11.0, we introduce the ability to to move your home and work preferred networks to the top of the list, while demoting public hotspots and the like to the bottom. In L, the Wi-Fi system received a new feature that performs an autoconfiguration of the preferred Wi-FI connection based on the signal quality, range and other differences of the Wi-Fi’s scanned (for example the Wi-Fi subsystem will select a 5Ghz vs a 2.4Ghz in case both networks are present). While this is a great feature for normal users, some users could still want to choose their preferred Wi-Fi network, so we re-introduced this functionality into CM 12.1, and now is available to you via Settings > WiFi > Menu > Saved Networks. In the overflow, you can disable L’s attempt to auto-manage this list, or notify the system that you are going to take the decision, by drag and drop the networks to reorder on your own (drag handle is on left of each network).