Scooping Out Vanilla Ice Cream

A Guide to Android 15 Features, now that the second developer preview has landed

Vrajendra Bhavsar
Mindful Engineering
17 min readMar 28, 2024

--

Since its inception, Android has been synonymous with innovation and evolution. With each new iteration, Google has strived to push the boundaries of what’s possible in mobile technology. Now, as we look ahead to the release of Android 15, we can’t help but reflect on how it has shaped mobile app development and how it will change dynamics in the future.

Google’s recent release of the Developer Preview provides a sneak peek into the upcoming capabilities and enhancements designed to elevate the Android experience to new heights.

Sweet Secrets: Google’s Android Naming Saga

Google’s tradition of naming Android versions after sweet treats continues internally, with Android 15 being referred to as “Vanilla Ice Cream” for the letter V, following previous versions like “Upside Down Cake” for Android 14. While Google has ceased using these sweet-themed code names externally, they still employ them within the company’s internal communications and development processes.

Despite the internal code name of “Vanilla Ice Cream”, the official Android 15 logo diverges from sweet treat imagery. Instead, it features a green triangular design with the Android mascot wearing a “15” on its back, gazing towards what appears to be a gate or the end of a starry bridge.

Vanilla timeline and device support

Along with launching the first Android 15 developer preview, Google also revealed the official timeline for Android 15, Like in the past.

Android 15 development includes two developer previews in February and March. Four betas are scheduled from April through July. The stable release of Android 15 is planned for sometime after July.

Previous Android versions, such as 12 and 13, were released in August, while Android 14 was launched in October. It’s anticipated that Android 15 will follow a similar release window, likely between August and October.

Flash-to-OTA updates for Google Pixel

Top smartphones from 2023 and 2024 are expected to eventually get Android 15. However, during the initial stages, access to the Android 15 developer preview will be limited to Pixel devices.

  • Pixel 8 and 8 Pro
  • Pixel 7a
  • Pixel 7 and 7 Pro
  • Pixel 6a
  • Pixel 6 and 6 Pro
  • Pixel Fold
  • Pixel Tablet

Flashing a Developer Preview onto Pixel devices automatically enrolls them for future over-the-air (OTA) updates, including more previews, Beta versions, and the final release. However, devices with Developer Previews won’t get OTA updates through the Beta Program, requiring manual flashing for the initial installation.

Android 15 Dev Preview 1 & 2: What’s Scooping Up?

Android 15 is on its way to hit the market with a bang soon. Android 15 has a plethora of exciting features that are set to change how we use our Mobile gadgets. Let’s take a closer look at each feature to fully understand their significance.

Privacy and security features

1. Privacy Sandbox on Android

Android 15 includes the latest version of Privacy Sandbox on Android. Privacy Sandbox is Google’s initiative for more private advertising solutions. It limits sharing of user data with third parties and operates without cross-app identifiers (3rd party cookies). The goal is to enhance user privacy while maintaining a healthy ecosystem for the Android app development process.

2. File integrity

Android 15 introduces the FileIntegrityManager API, which leverages the “fs-verity” feature in the Linux kernel to protect files with custom cryptographic signatures. This ensures that files remain untampered and uncorrupted, providing additional protection against malware and unauthorized access. With this API, Android app developers for hire can confidently safeguard their app functionality and data.

You might be wondering, what exactly is “fs-verity”

  • fs-verity is a feature in the Linux kernel.
  • It allows files to be attached with cryptographic signatures.
  • Ensures file integrity by preventing unauthorized modifications.
  • Acts as a security mechanism to protect against tampering and corruption.
  • Utilized by Android’s FileIntegrityManager to enhance app and data security.

Performance improvements

1. Improvements to the Android Dynamic Performance Framework

Android 15 enhances the Android Dynamic Performance Framework (ADPF), which consists of APIs that enable direct interaction with the power and thermal systems of Android devices. Games and performance-intensive apps can utilize these APIs for improved system monitoring, optimizing performance to maintain sustainable levels without causing device overheating. This update introduces new ADPF capabilities for managing CPU, GPU, and thermal workloads.

ADPF consists of these main features:

Thermal API:

  • Allows applications to monitor and adjust workloads based on the device’s thermal condition to avoid overheating.

CPU Performance Hint API:

  • Enables applications to suggest performance settings, optimizing for specific tasks or processes.

Game Mode API & Game State API:

  • Facilitate gameplay optimization by balancing between performance and battery life, according to user settings and game configurations.

Fixed Performance Mode:

  • Provides a consistent device performance level for more accurate benchmarking, unaffected by dynamic CPU adjustments.

Power Efficiency Mode:

  • Optimizes thread scheduling to prioritize energy efficiency over maximum performance.
  • Suitable for long-running tasks.

Android 15 introduces new capabilities to ADPF for supported devices:

Work Duration Reporting:

  • Hint sessions can now report CPU and GPU work durations for improved workload management.

Thermal Headroom Thresholds:

  • Introduces thresholds to interpret potential thermal throttling status accurately.
  • The thermal state is basically the state of the device being hot because of intensive work.
  • Thermal throttling is a process of the CPU reducing its performance to cope up with increased temp. Users may face lagging while playing a game or using an App.

New UI changes, features, and UX improvements

1. Notification cooldown

Gradually lower notification volume when you get many messages from the same chat within a short period of time.

It’s designed to prevent users from being overwhelmed by too many notifications.

Cooldown options:

i. All notifications

ii. Conversations

iii. Don’t use notification cooldown

Users can access this feature within the Notifications section of settings. By default, cooldown is applied to all apps, but users can customize it to apply only to conversations or disable it entirely.

2. Universal toggle for keyboard vibration control

Android 15 DP1 introduces a system-wide toggle for keyboard vibration. Users can now globally disable keyboard vibration across all keyboard apps. This feature overrides individual app settings for keyboard vibration. Toggling the setting affects all keyboard apps uniformly. It offers convenience for users employing multiple keyboard apps or switching between them

Android 15 DP1 introduces a system-wide toggle for keyboard vibration, allowing users to globally disable keyboard vibration across all keyboard apps. This feature overrides individual app settings for keyboard vibration, ensuring that toggling the setting affects all keyboard apps uniformly. It offers convenience for users who use multiple keyboard apps or frequently switch between them.

3. Vibration feedback to the brightness slider

Android 15 introduces haptic feedback to the brightness slider in Quick Settings, enabling users to experience subtle vibrations when adjusting display brightness.

The subtle vibration effect showcases the quality of the Pixel’s haptic motors. This feature aims to improve the overall polish of Android, fostering a cohesive experience between hardware and software.

4. Changes for continuity features on foldable

Android 15 introduces a feature for foldable devices to control app behavior on the front display. They have the option to configure whether the front display activates upon folding, specifically for apps such as games and videos, or opt for it to remain inactive permanently.

A new “swipe up to continue” option is being tested, allowing users to continue apps on the cover screen by swiping up on the lock screen after folding the device. This feature, previously seen in Android 14 QPR beta, has now arrived in Android 15 DP1’s system settings app.

Android 15 DP1 introduces the “Continue using apps on fold” feature previously seen in Android 14 QPR preview builds. This feature has now been integrated into the system settings app, allowing users to customize app behavior when folding the Pixel Fold.

5. New in-app camera controls

Low light? No problem! Android 15’s camera gets a boost with brighter previews.

New camera hardware extensions have been introduced, providing developers with greater control over the camera hardware of supported devices. These extensions include low light enhancements to boost camera preview brightness and advanced flash strength adjustments for precise control over flash intensity in photos, ensuring natural-looking results in any situation.

6. Bluetooth popup dialog

Android 15 enhances Bluetooth Quick Settings with a new pop-up menu feature. This menu enables quick connect/disconnect to individual devices directly, mirroring the convenience of the Internet toggle. It supports toggling Bluetooth, managing connections, accessing device settings, and pairing new devices. Initially spotted in development for Android 14 QPR2, it may be released before the Android 15 update. Designed to address the inconvenience of the current Bluetooth toggle, which only offers on/off functionality without a long press.

To get a better idea of the UI/UX dynamics, check out the case study on EnneaApp.

Next in Line: Some confirmed features

1. Native app archiver

In Android 15, an OS-level app archiving feature has been integrated, which reduces package size while preserving app data. Users can archive apps directly from the “App info” page, but archived apps will require additional downloads to be reopened. Presently, the Google Play Store provides automatic archiving for less-used apps, accessible through — Profile > Setting > General > Automatically archive apps (toggle)

Archiving could become available for all apps, including those installed from sources other than the official app store. Android 15 will offer users more manual control over app archiving.

2. Partial screen sharing

Android 15 introduces app-specific screen recording to enhance privacy, allowing users to select a single app for recording while blocking notifications and other apps. This feature was initially enabled in Android 14 QPR2 and includes MediaProjection Callbacks, enabling partial screen recording. Additionally, users have the option to share or record just an app window instead of the entire screen.

3. Health Connect

Functionality introduced in Android 14 has been expanded upon in Android 15, with the integration of more health and fitness datatypes. This update adds new categories in fitness, nutrition, and beyond, aiming to standardize health data storage and sharing across Android apps. It provides a secure and centralized platform for managing and sharing app-collected health and fitness data, enabling users to access essential data from one place.

Stay in control! You can decide which App is allowed to read and/or write various types of data. The Health Connect feature offers an API for data access, requiring read and/or write permissions for the desired data types, which users can revoke as needed. This functionality is available on Android version 9 (API 28) and supports data types such as exercise, distance, heart rate, steps, total calories burned, and more.

4. Virtual MIDI 2.0 Devices

Android 15 extends communication between music apps on phones. It enables virtual MIDI apps to connect and communicate.

MIDI (Musical Instrument Digital Interface) enables communication between electronic musical instruments and devices, such as MIDI keyboards. Previously, MIDI support was restricted to physical USB connections. However, Android 15 introduces virtual MIDI apps, allowing music composition apps to control synthesizer apps on Android without the need for physical cables. This enhancement simplifies music creation processes.

5. Enhanced Battery Health Insights

Android 15 enhances accessibility to battery health details by potentially relocating battery information to the Battery system settings. A new battery health menu could be introduced to display cycle count and battery degradation percentage, allowing users to monitor how much their battery has degraded compared to its original capacity. This feature aims to improve user awareness of battery condition, similar to iPhone battery health reporting.

6. Auracast focus: Audio sharing to nearby Bluetooth LE Audio streams

Android 15 is going to feature Auracast for audio sharing, with plans to incorporate an “audio sharing” section in settings for easier access. Auracast enables broadcasting audio to nearby devices without requiring pairing, utilizing Bluetooth LE Audio for low-energy, high-quality connections. This functionality allows multiple devices to connect to one source, akin to Wi-Fi, with Google developing a native method for managing Auracast sessions.

Auracast opens up various potential use cases, ranging from augmented or assistive listening in theaters or lecture halls to sharing playlists during runs with friends, or even facilitating multi-language support without translation devices by transmitting different language interpretations via different channels. Users can find nearby channels to connect to from the Auracast broadcast, with the experience being similar to searching and connecting to a Wi-Fi network. Joining an Auracast broadcast is effortless through the use of QR codes. Currently, the Galaxy Buds2 Pro is the only Bluetooth headset supporting Auracast.

7. Edge-to-edge apps by default

Android 15 will enforce edge-to-edge display for apps by default, potentially mandating it for apps targeting Android 15. This feature aims to create a more immersive viewing experience by allowing apps to utilize the entire height and width of the display. Despite full gesture navigation introduced with Android 10, which allowed optional edge-to-edge content drawing, many apps still haven’t implemented this feature even after four years. With Android 15, Google could make edge-to-edge drawing the default viewing experience, ensuring that all apps targeting the new version adhere to this standard. However, there’s a chance that Google may give app developers some additional time to adapt their apps to this change before enforcing it.

To see the practical implications of Android’s features, take a look at the case study on the Ab Workout App.

Android communications changes

1. Satellite support

One of the major highlights of Android 15 DP2 is its integration of satellite connectivity at the core OS level. offering expanded support for SMS, MMS, and RCS over satellite networks. The release includes new UI elements like a satellite status bar indicator and system notifications to inform users when they’re connected to a satellite for data or texting. Apps can detect satellite connectivity through ServiceState.isUsingNonTerrestrialNetwork(), allowing them to adapt when full network services are unavailable. This update aims to ensure a consistent user experience across satellite connectivity.

2. Smoother NFC experiences

Android 15 strives to enhance the tap-to-pay experience, ensuring seamless and reliable transactions while supporting Android’s NFC app ecosystem. On compatible devices, apps can request the NfcAdapter to enter observe mode, enabling faster one-tap transactions by checking for NFC readers before the initial handshake. Additionally, the NFC stack is expected to transition to a Project Mainline module for easier updates in Android 15.

3. Cover screen support

Android 15 now supports additional screens on flippable and foldable devices, allowing apps to interact with them using officially approved methods. Apps can now declare a new property to run on the smaller cover screens of flip-style foldables, expanding compatibility without OEM intervention. This update empowers developers to optimize their apps for various form factors, including large screens, flippables, and foldables, enhancing user experience across different device types.

4. Screen record detection

In Android 15, apps gain the ability to detect if they are being recorded. A callback is invoked when transitioning between visibility states during screen recordings, with visibility determined by activities owned by the registering process’s UID. This feature enhances user privacy by allowing apps to notify users of potential recording activities, especially during sensitive operations.

val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// we're being recorded
} else {
// we’re not being recorded
}
}

override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}

override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}

Media refinements

1. HDR Headroom Control

The left image displays SDR content, while the right one demonstrates potential headroom issues with mixed SDR and HDR content. These issues can be mitigated by adjusting the desired HDR headroom setting.

Android 15 adjusts HDR headroom based on device capabilities and panel bit-depth. This ensures optimal brightness for both HDR and SDR content. Users can now control HDR headroom using setDesiredHdrHeadroom to maintain a balance between the two.

2. Loudness control

Android 15 introduces support for the CTA-2075 loudness standard, aiming to eliminate audio loudness inconsistencies across apps. This feature utilizes known characteristics of output devices like headphones and speakers, along with AAC metadata, to adjust audio loudness and dynamic range compression levels intelligently. To enable this feature in your app, ensure loudness metadata is available in your AAC content and instantiate a LoudnessCodecController object with the associated AudioTrack’s audio session ID.

To implement this, developers instantiate a LoudnessCodecController object using its create factory method, passing the audio session ID from the associated AudioTrack. This action automatically initiates the application of audio updates. Additionally, developers can utilize an OnLoudnessCodecUpdateListener to adjust or filter loudness parameters before they are applied to the MediaCodec.

// media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = ...
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// starts applying audio updates for each added MediaCodec

AndroidX media3 ExoPlayer is set to integrate LoudnessCodecController APIs for seamless app integration in the near future.

3. Use Spatializer instead of Virtualizer

In Android 15, the Virtualizer class is deprecated in favor of using AudioAttributes.Builder.setSpatializationBehavior to define sound spatialization preferences. AndroidX media3 ExoPlayer 1.0 now automatically activates spatial audio for multichannel content on compatible devices, providing a seamless experience.

Developer perspective

1. User Experience — DND

The Do Not Disturb mode in Android 15 receives a significant upgrade, offering users more customization options. This includes the ability to prioritize specific rules and trigger actions such as turning the display black and white, activating night mode, and dimming the wallpaper.

Android 15 boosts AutomaticZenRules, allowing apps to tweak Attention Management (Do Not Disturb) settings for better user experiences. This includes:

  • Introducing types to AutomaticZenRule for customized treatments.
  • Adding icons to boost mode visibility.
  • Including trigger descriptions for rule activation clarity.
  • Incorporating ZenDeviceEffects for actions like grayscale display and night mode activation.

2. PDF Improvements

Android 15 Developer Preview 2 enhances PdfRenderer APIs, enabling advanced features like rendering password-protected files, annotations, form editing, searching, and selection with a copy. Linearized PDF optimizations boost local PDF viewing speed and reduce resource use. Additionally, PdfRenderer has been modularized for independent updates via Google Play system updates, with backward compatibility to Android R through PdfRendererPreV.

3. Automatic language switching refinements

Android 15 introduces additional controls for automatic language switching during on-device multi-language audio recognition.

Parameters like EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS limits automatic switching to the start of the audio session, while EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES disables switching after a set number of switches, ensuring accuracy, especially in sessions where a single language is expected.

4. Granular line break controls

Starting in Android 15, TextViews and their line breakers can now preserve specific portions of text on the same line, enhancing readability. This feature can be utilized by using the <nobreak> tag in string resources or createNoBreakSpan to prevent line breaks. Additionally, the <nohyphen> tag or createNoHyphenationSpan can be used to retain words from hyphenation.

Visual Insights: Examples with Screenshots —

<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>

5. Expanded IntentFilter Functionality

Android 15 enhances Intent resolution accuracy with UriRelativeFilterGroup, allowing for precise matching of deep links, including URL query parameters and fragments. This feature, defined in the AndroidManifest with <uri-relative-filter-group>, accommodates dynamic web-hosted deep link demands, offering flexibility through android:allow, android:query, and android:fragment attributes.

A depiction of the AndroidManifest syntax that will be affirmed:

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>

Making Android more efficient

New APIs are being introduced to facilitate insights gathering, optimize background application functionality, and enhance task efficiency within apps.

1. ApplicationStartInfo API

Android 15 introduces the ApplicationStartInfo API, providing insights into app startup processes, including whether the app started from a cold, warm, or hot state, details on launch phases such as process forking, onCreate invocation, and frame drawing, and information on the source of app instantiation, such as from a broadcast, content provider, job, backup, boot complete, alarm, or Activity. This API allows developers to optimize app startup and collect timing data efficiently, including the option to add custom timestamps.

2. Changes to package stopped state

In Android 15, PackageManager’s Stopped State sees enhancements. Apps in this state should only exit through direct user action. PendingIntents are cleared upon entry, with BOOT_COMPLETED broadcast triggered upon exit. Additionally, ApplicationStartInfo now includes ApplicationStartInfo.wasForceStopped() to indicate Stopped State entry.

3. Detailed app size information

Android 15 introduces the StorageStats.getAppBytesByDataType([type]) API, providing detailed insights into app storage usage, including apk file splits, AOT code, dex metadata, libraries, and guided profiles. This enhances understanding beyond the simplistic summary provided by StorageStats.getAppBytes().

4. Changes to foreground services

Starting from Android 14, Foreground Service Types became mandatory. With Android 15, the deprecated dataSync type is replaced by mediaProcessing, designed for time-consuming media operations like format conversion. However, in future Beta releases, it will have a runtime limit of 6 hours.

5. SQLite database

Android 15 introduces new SQLite APIs to address specific performance issues in apps. Developers are advised to follow best practices for SQLite performance, especially with large databases or latency-sensitive queries.

  1. Read-only deferred transactions: Use beginTransactionReadOnly() and beginTransactionWithListenerReadOnly(SQLiteTransactionListener) for read-only DEFERRED transactions, which can run concurrently with other transactions, including IMMEDIATE or EXCLUSIVE transactions in WAL mode.
  2. Row counts and IDs: New APIs retrieve the count of changed rows (getLastChangedRowCount(), getTotalChangedRowCount()) and the last inserted row ID (getLastInsertRowId()) without additional queries.
  3. Raw statements: Issue raw SQLite statements to bypass convenience wrappers and processing overhead.

Behavior changes

Google aims to minimize impactful changes while striving for backward compatibility but acknowledges that some are unavoidable.

1. Elegant fonts everywhere

Starting with Android 15, the elegantTextHeight TextView attribute is true by default, enhancing readability by replacing the compact font with a more readable one for scripts with large vertical metrics. The compact font was introduced to prevent layout breakages, but Android 13 introduced the fallbackLineSpacing attribute to address many of these issues. While the compact font remains in the system, setting elegantTextHeight to false can revert to the previous behavior, but may not be supported in future releases. Developers are encouraged to test their apps, especially those supporting Arabic, Lao, Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu, or Thai scripts, with elegantTextHeight set to true.

The default behavior as of Android 14:

The default behavior for applications targetting Android 15:

Wrap-up

Android 15 is on the horizon, promising a slew of enhancements that will undoubtedly shape the way we interact with our devices. With a focus on customization, visual design, privacy, and smart home connectivity, this update aims to deliver a smoother, smarter, and more personalized experience.

If you enjoyed the read, be sure to 👏 👏👏 it below — as a writer, it means the world!

Need an Android mobile app with clean & maintainable code? Click here to get an estimate Or find us on Facebook and Twitter. See what we’re up to on GitHub.

--

--