Blue background with tech images like wifi symbols, chat bubbles, etc. Orange cell phone in the middle has the Android logo and title “Now in Andorid”
Illustration by Virginia Poltrack

Now in Android #48

Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development.

Now in Android videos provided as a courtesy for those who prefer watching to reading

Android Dev Summit returns on October 27–28, 2021! 📆

Join us October 27–28 for Android Dev Summit 2021! The show kicks off at 10 AM PST on October 27 with The Android Show: a technical keynote where you’ll hear all the latest developer news and updates. From there, we have over 30 sessions on a range of technical Android development topics, and we’ll be answering your #AskAndroid questions live.

Android 12 is live in AOSP! 🤖

We released Android 12 and pushed it to the Android Open Source Project (AOSP). It will be coming to devices later on this year. Thank you for your feedback during the beta.

Android 12 introduces a new design language called Material You along with redesigned widgets, notification UI updates, stretch overscroll, and app launch splash screens. We reduced the CPU time used by core system services, added performance class device capabilities, made ML accelerator drivers updatable outside of platform releases, and prevented apps from launching foreground services from the background and using notification trampolines to improve performance. The new Privacy Dashboard, approximate location, microphone and camera indicators/toggles, and nearby device permissions give users more insight into and control over privacy. We improved the user experience with a unified API for rich content insertion, compatible media transcoding, easier blurs and effects, AVIF image support, enhanced haptics, new camera effects/capabilities, improved native crash debugging, support for rounded screen corners, Play as you download, and Game Mode APIs.

Unit 6 of Android Basics in Kotlin is live!🎉

The final unit planned for Android Basics in Kotlin that covers using Android Jetpack’s WorkManager API is now live. Android Basics in Kotlin guides students through learning to program in Kotlin while learning to build Android apps, ultimately developing a collection of apps to start Android developer journeys.

You can see the full course here.

Enhanced user management on Google Play Console 🧑‍💼

The user and permission tools in Play Console have a new, decluttered interface and new team management features, making it easier to make sure every team member has the right set of permissions to fulfill their responsibilities without overexposing unrelated business data.

We’ve rewritten permission names and descriptions, clarified differentiation between account and app-level permissions, added new search, filtering, and batch-editing capabilities, and added the ability to export this information to a CSV file. In addition, Play Console users can request access to actions with a justification, and we’ve introduced permission groups to make it easier to assign multiple permissions at once to users that share the same or similar roles.

Making Permissions auto-reset available to billions more devices 🔐

Android 11 introduced permission auto-reset, automatically resetting an app’s runtime permissions when it isn’t used for a few months. In December 2021, we are starting to roll this feature out to devices with Google Play services running Android 6.0 (API level 23) or higher for apps targeting Android 11 (API level 30) or higher. Users can manually enable permission auto-reset for apps targeting API levels 23 to 29.

Some apps and permissions are automatically exempted from revocation, like active Device Administrator apps used by enterprises, and permissions fixed by enterprise policy. If your app is expected to work primarily in the background without user interaction, you can ask the user to prevent the system from resetting your app’s permissions.

Wear OS Jetpack libraries now in stable⌚

The five core Android Jetpack Wear OS libraries are now stable, helping you to follow best practices, reduce boilerplate, and create performant, glanceable experiences for your users. The Android Jetpack Wear OS libraries contain all the familiar functionality you’ve grown used to in the old Wearable Support library with better support for Wear OS 3.0.

We strongly recommend you migrate the libraries within your Wear OS apps from the Wearable Support library to their AndroidX equivalents as we make them available in stable.

MAD Skills: Hilt and Paging 💡

The MAD Skills series continues to roll on, with technical content about modern Android development.

Hilt 🗡️

The MAD Skills series on Hilt, Android Jetpack’s recommended solution for Dependency Injection, finished with a live Q&A. Watch the recording here.

MAD Skills: HIlt — Live Q&A (Recorded)

Paging 📄

The Android Jetpack paging library is now at version 3. Paging is designed to help you handle large datasets that come from local storage or over the network within your app, allowing your app to use network bandwidth and system resources more efficiently. TJ has launched a new MAD Skills series to cover it, beginning with this introduction.

MAD Skills: Paging — Series Introduction

The first episode covers how to begin to incorporate paging in your app with content coming from a network data source. It covers how to implement a PagingSource, create a Pager, and expose a stream of PagingData from the Pager.

MAD Skills: Paging — Introduction to Paging

Future episodes will cover how to consume paging data in the UI, and how to work with paging data from two different sources — network and a database cache.

For ongoing content, be sure to check the MAD Skills playlist on YouTube, the articles on Medium, or this handy landing page that points to all of it.

Accessibility series 🌐

The accessibility series continues on with more information on how to follow basic accessibility principles to make sure that your app can be used by as many users as possible.

Color contrast can not only help users with visual impairments use your app, it can help everyone use your app outdoors in the sun. Smaller text needs larger contrast ratios than large text, and the video covers best practices and how to test your app to make sure it’s legible to the largest number of users.

Android Accessibility: Color Contrast

EditText views need to have context for users of TalkBack to avoid them being announced as EditBox. The video covers two different ways to avoid this problem: Adding an android:hint attribute to stand-alone EditText views, and adding an android:labelFor attribute to each TextView that serves as a label. Both help TalkBack give appropriate context for a vastly-improved user experience.

Android Accessibility: EditTexts

Also, we’ve added a new codelab that covers accessibility best practices within Jetpack Compose, such as touch target sizes, content descriptions, click labels, and more.

Want even more accessibility? You are in luck, check out this entire new learning pathway aimed at teaching you how to make your app more accessible.

Articles 📚

Manuel talks about Headspace’s journey to app excellence; they spent eight months refactoring to a Model-View-ViewModel architecture, rewriting in Kotlin and improving their test coverage from 15 to 80%. The improved app experience increased monthly active users by 15% and increased review scores from 3.5 to 4.7 between Q2 and Q4 of 2020.

Maru continued our app excellence series, covering the dimensions of performance excellence:

  • Stability
  • Fast load times
  • Smooth rendering
  • Battery economy
  • Up-to-date SDKs (for both security and performance!)

Starting in Android 12, foreground service launch restrictions were introduced. These restrictions can leave your app in a state where calling setForeground may cause an exception.

Caren covers how WorkManager 2.7 introduced expedited jobs to allow apps to execute short and high-priority tasks while giving the system better control over access to resources.

Wayne answers some top game development questions we’ve gotten since launching the Android Game Development Kit (AGDK) in July, ranging from AGDK libraries and tools, optimizing memory in Android, the upcoming Game Mode API, and using graphics APIs to target the GPU.

AndroidX Releases 📚

There’s not a huge amount of notable changes in AndroidX libraries this week; we’ve got some small fixes and updates to support Kotlin 1.5.30. CameraX 1.1.0-alpha 09 dramatically improved the efficiency of our RGBA output, and we’ve also updated the associated CameraX analysis documentation and the CameraX TFLite sample.

Documentation Updates 🏫

Speaking of documentation updates, we’ve consolidated privacy and security resources in Design for Safety. The page includes best practices and resources to help you design and implement safe, secure, and private apps.

ADB Podcast Episodes🎙

There has been one episode of Android Developers Backstage posted since the last Now in Android. Check it out at the link below, or in your favorite podcast client:

Episode 176: Android 12 — S stands for System UI

In this episode, Chet, Romain, and Tor have a chat with Selim, Vadim and Lucas from the Android system UI team, discussing many of the new features in Android 12’s user interface.

Now then…

That’s it for this time, with Android Dev Summit 2021, Android 12, the Hilt and Paging MAD skills series, Android Basics in Kotlin, Play Console User Management updates, Permissions auto-reset to older devices, WearOS Jetpack libraries, more of our accessibility series, app excellence, Android 12 WorkManager and System UI, CameraX analysis updates, and a new Design for Safety section on developer.android.com. Come back here soon for the next update from the Android developer universe.

Android Developers

The official Android Developers publication on Medium