News

Android 16 Beta 2 forces apps to go edge-to-edge and enhances Ultra HDR

Here's everything new in Android 16 Beta 2, according to Google.

7 min read
Android 16 Beta 2 forces apps to go edge-to-edge and enhances Ultra HDR

Google has just announced Android 16 Beta 2, the second of four planned betas for this year's Android release. While the second beta of a major Android release typically showcases many key changes, that's not the case this time. Due to Android's faster release schedule, this year's second beta arrives much earlier than usual. Previously, these betas typically launched during or shortly after Google I/O, the developer conference where Google shares updates on Android and other products. There's still quite a lot that's new in Android 16 Beta 2, so let's dive right in.

Media and camera updates

Android 16 Beta 2 introduces new features for pro camera users, including:

Hybrid auto-exposure

New hybrid auto-exposure modes have been added to the Camera2 API that allow users to manually control specific aspects of exposure while letting the auto-exposure algorithm handle the rest. Google says that you can control ISO + AE and exposure time + AE, which is more flexible than the current approach where you either have full manual control or only auto-exposure.

Precise color temperature and tint adjustments

The Camera2 API in Android 16 Beta 2 also adds support for fine color temperature and tint adjustments to better support pro video recording apps. Currently, white balance settings are controlled through CONTROL_AWB_MODE, which contains a preset list of options like Incandescent, Cloudy, and Twilight. In contrast, COLOR_CORRECTION_MODE_CCT enables the use of COLOR_CORRECTION_COLOR_TEMPERATURE and COLOR_CORRECTION_COLOR_TINT for precise adjustments of white balance based on the correlated color temperature.

Adjusting the color temperature and tint of photos using new APIs in Android 16.
Adjusting the color temperature and tint of photos using new APIs in Android 16.

Motion photo capture intent actions

Android 16 adds standard Intent actions (ACTION_MOTION_PHOTO_CAPTURE and ACTION_MOTION_PHOTO_CAPTURE_SECURE) that apps can send to request the default camera app to capture and return a motion photo. Apps must either pass an extra EXTRA_OUTPUT to control where the image will be written or a Uri through Intent.setClipData(ClipData). If a ClipData isn't set, it will be copied there for you when calling Context.startActivity(Intent).

0:00
/0:05

A motion photo captured from an Android phone.

Ultra HDR image enhancements

Android 16 adds support for Ultra HDR images stored in the HEIC file format.

Ultra HDR is an image format that Google introduced in Android 14. Ultra HDR images are comprised of a base image that's SDR and gainmap metadata that, when applied on top of the base SDR image, creates an HDR image.

Previously, Ultra HDR images were stored in the JPEG file format to make them universally compatible. HEIC is a more robust image format than JPEG as it's generally higher quality, compresses more efficiently, supports storing multiple photos in one file, supports transparency, and handles editing information.

These new Ultra HDR HEIC images will get ImageFormat type HEIC_ULTRAHDR and will contain an embedded gainmap similar to the existing Ultra HDR JPEG format.

Android 16 also implements additional parameters in Ultra HDR from the ISO 21496-1 standard, such as the ability to get and set the colorspace that gainmap math should be applied in as well as support for HDR encoded base images with SDR gainmaps. Finally, Google says it is working to add AVIF support for Ultra HDR as well.

Custom graphical effects with AGSL

Android 16 adds RuntimeColorFilter and RuntimeXfermode that let developers author "complex effects like Threshold, Sepia, and Hue Saturation and apply them to draw calls." Since Android 13, developers could "use AGSL to create custom RuntimeShaders that extend Shaders." The new API mirrors this by "adding an AGSL-powered RuntimeColorFilter that extends ColorFilters" as well as an "Xfermode effect that allows you to implement AGSL-based custom compositing and blending between source and destination pixels."

Behavior changes

Android 16 Beta 2 also changes how the platform expects apps to behave:

Edge-to-edge opt out is going away

Android 15 enforced edge-to-edge mode for apps that target SDK version 35, but the OS provided an opt out mechanism. Starting in Android 16, though, the R.attr#windowOptOutEdgeToEdgeEnforcement attribute is deprecated and disabled for apps that target SDK version 36. This means that Android 16 won't let apps opt out of edge-to-edge mode once they update to target Android 16 or higher.

Granular body sensor permissions

Apps that target Android 16 or higher are required to transition to one of several granular health and fitness permissions instead of the BODY_SENSORS and BODY_SENSORS_BACKGROUND permissions if they want to continue using APIs that previously relied on these permissions. These granular permissions are under the android.permissions.health namespace also used by the Health Connect SDK.

The following data types, APIs, and foreground service types are affected:

Apps using the following APIs should request the respective granular permissions:

  • For while-in-use monitoring of Heart Rate, SpO2, or Skin Temperature, the granular permissions under android.permissions.health like READ_HEART_RATE should be used instead of BODY_SENSORS.
  • For background sensor access, the READ_HEALTH_DATA_IN_BACKGROUND permission should be requested instead of BODY_SENSORS_BACKGROUND.

16KB page size compatibilty mode

To ease the transition to a 16KB memory page size, Android 16 adds a compatibility mode that allows some apps built for 4K memory pages to run on a device configured for 16KB memory pages. If Android detects an app has 4KB aligned memory pages, it will automatically enable this compatibility mode and display a message to the user. Developers can prevent the display of this message by setting the android:pageSizeCompat property in their app's manifest to enable the backwards compatibility mode, though Google recommends developers update their apps to be 16KB aligned to prepare for future devices.

Measurement system customization

In addition to first day of week and temperature settings, Android 16 now lets you specify what measurement system apps should use. This is part of Android's regional preferences within Settings and is something that apps have to be updated to respect. The user's preference is included as part of the locale code, so apps can register a BroadcastReceiver on ACTION_LOCALE_CHANGED to handle locale configuration changes when regional preferences change. Developers are encouraged to use formatters to help match the local experience.

Miscellaneous

  • Abandoned empty jobs stop reason: Apps in Android 16 that "rely on JobScheduler without maintaining a strong reference to the JobParameters object will now be granted the new job stop reason STOP_REASON_TIMEOUT_ABANDONED on timeout, instead of STOP_REASON_TIMEOUT." Developers should use this new stop reason to detect and reduce abandoned jobs, which occurs when the JobParameters object associated with the job has been garbage collected but jobFinished has not been called to signal job completion.
  • Intent redirect changes: Android 16 includes protections against Intent redirection attacks that apply regardless of an app's target SDK version. Developers can opt out of these protections by calling the removeLaunchSecurityProtection() API, though this should be done with caution.
  • Elegant font APIs deprecated and disabled: Android 16 deprecates the elegantTextHeight attribute, and the attribute will be ignored for apps that target Android 16. This means the "UI fonts" controlled by these APIs are being discontinued so "developers should adapt any layouts to ensure consistent and future proof text rendering in Arabic, Lao, Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu or Thai."
default elegantTextHeight behavior for apps targeting Android 14 (API level 34) and lower
default elegantTextHeight behavior for apps targeting Android 15 (API level 35) and higher
  • Content handling for live wallpapers: The live wallpaper framework is getting a new content API to address the challenges of dynamic, user-driving wallpapers. Android 16 introduces WallpaperDescription and WallpaperInstance. These APIs allow the wallpaper picker and WallpaperManager to better present live wallpapers to users in cases where a wallpaper has unique content on the home screen versus the lock screen.
  • Headroom APIs in ADPF: Android 16 introduces the getCpuHeadroom and getGpuHeadroom APIs in SystemHealthManager to provide games and resource-intensive apps with estimates of available CPU and GPU resources. Developers can customize the time window used to compute the headroom and select between average or minimum resource availability.
  • Key sharing API: New APIs in Android 16 let apps share access to Android Keystore keys with other apps. The new KeyStoreManager class lets apps grant and revoke access to keys by app uid, and it also has an API for apps to access shared keys.
  • Standardized picture and audio quality frameworks for TVs: The new MediaQuality package in Android 16 exposes "a set of standardized APIs for access to audio and picture profiles and hardware-related settings." This lets streaming apps query profiles and apply them to media dynamically. For example, movies mastered with a wider dynamic range require higher color accuracy, so a profile that prefers color accuracy over brightness may be appropriate.

As I mentioned at the beginning, there are two more betas left in the Android 16 beta program. The next beta, Android 16 Beta 3, will mark the Platform Stability milestone for Android 16, which is when the SDK APIs, NDK APIs, and app-facing system behaviors will be finalized. The stable Android 16 release is dropping sometime in Q2 of 2025, which is only a few months away.

If you want to install Android 16 Beta 2, you can do so by enrolling your Pixel device (Pixel 6 or later) in the Android beta program.

Share This Post

Check out these related posts

Qi2 (Not) Ready - Android Faithful Episode #82

Google extends Family Link School-Time Controls to Android Phones, Tablets

Innovative Product Lunch - Android Faithful Episode #81