As previously rumored, Google officially announced the Android Q beta. The beta 1 is available for download now at google.com/android/beta. Android Q is now available for Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3 and Pixel 3 XL devices on the Android developer website here manually or you can enroll here to get the OTA update to your device.
The new beta has a lot going on in terms of functionality and the latest features. Here are the first Android Q beta highlights: additional privacy and security features, enhancements for foldable, new connectivity APIs, new media codecs and camera capabilities, NNAPI extensions, Vulkan 1.1 support, and faster app startup.
Here is a more comprehensive list of features introduced in the new build.
Beta 1 features
- Device location: Giving users more control over when apps can get location, including when the app is not in use (in the background). Users will be able to give apps permission to see their location never, only when the app is in use (running), or all the time (when in the background).
- Scoped storage: Giving more control over access to shared files. Users will be able to control apps’ access to Photos, Videos, and Audio collections via new runtime permissions. For Downloads, apps must use the system file picker, which allows the user to decide which Download files the app can access. Developers will also have to change how apps use shared areas on external storage.
- Background activity starts: Reduce interruptions like apps unexpectedly jumping into the foreground and taking over focus. Apps will be prevented from launching an Activity while in the background. Developers will still be able to get the user’s attention quickly — such as for incoming calls or alarms — with a high-priority notification or a full-screen intent.
- User data IDs: Limiting access to non-resettable device identifiers, including device IMEI, serial number, and similar identifiers. Android Q will also randomize the device’s MAC address when connected to different Wi-Fi networks by default (optional in Android 9 Pie).
- Foldables and innovative new screens: Apps will be able to take better advantage of these and other large-screen devices. Changes to onResume and onPause support multi-resume and notify your app when it has focus. The resizeableActivity manifest attribute now helps manage how your app is displayed on foldable and large screens.
- Sharing shortcuts: Faster sharing to other apps. Sharing Shortcuts, which let users jump directly into another app to share content, are getting faster. Developers can publish share targets that launch a specific activity in their apps with content attached, shown to users in the share UI instantly because they are published in advanced. Because Sharing Shortcuts is similar to how App Shortcuts works, the ShortcutInfo API now integrates both and is supported in the new ShareTarget AndroidX library (early sample app source code).
- Settings Panel: Show key system settings directly in the context of an app. The new Settings Panel API uses the Slices feature introduced in Android 9 Pie to give users a floating UI with relevant system settings (such as Wi-Fi, airplane mode, mobile data, NFC, and audio volume). There’s no need to leave the app.
- Connectivity permissions, privacy, and security: For Bluetooth, cellular, and Wi-Fi, the FINE location permission will be required. Wi-Fi standard support, WP3, and OWE, will also be included to improve security for home and work networks as well as open/public networks.
- Improved peer-to-peer and internet connectivity: The Wi-Fi stack has been refactored to improve privacy, performance, and common use-cases like managing IoT devices and suggesting internet connections. The network connection APIs will help apps initiate connection requests indirectly by specifying preferred SSIDs & BSSIDs as WiFiNetworkSpecifiers. The network suggestion APIs will let apps initiate connections indirectly by providing a ranked list of networks and credentials as WifiNetworkSuggestions. Android Q will handle the Wi-Fi scanning itself, display matching networks in a Wi-Fi Picker, and connect based on past performance when in range of those networks.
- Wi-Fi performance mode: High performance and low latency modes will let developers request adaptive Wi-Fi by calling WifiManager.WifiLock.createWifiLock() with WIFI_MODE_FULL_LOW_LATENCY or WIFI_MODE_FULL_HIGH_PERF. Google expects these to be useful for real-time gaming, active voice calls, and similar use-cases.
- Dynamic depth format for photos: Apps can request a Dynamic Depth image which consists of a JPEG, XMP metadata related to depth related elements, and a depth and confidence map embedded in the same file. Requesting a JPEG + Dynamic Depth image makes it possible for developers to offer specialized blurs, bokeh options, or use the data to create 3D images and support AR photography use-cases. Dynamic Depth will be an open format for the Android ecosystem.
- New audio and video codecs: Support for the open source video codec AV1, audio encoding using Opus, and HDR10+ for high dynamic range video. The MediaCodecInfo API will help determine the video rendering capabilities of an Android device (use VideoCodecCapabilities.getSupportedPerformancePoints() to get a list of supported sizes and frame rates).
- Native MIDI API: This API lets apps that perform their audio processing in C++ communicate with MIDI devices through the NDK. It allows MIDI data to be retrieved inside an audio callback using a non-blocking read, enabling low latency processing of MIDI messages (sample app source code).
- ANGLE on Vulkan: Experimental support for ANGLE, a graphics abstraction layer designed for high-performance OpenGL compatibility, on top of Vulkan. Apps and games that use OpenGL ES will be able to take advantage of the performance and stability of Vulkan and benefit from a consistent, vendor-independent implementation of ES. Android Q will support OpenGL ES 2.0 — ES 3.0 will come next.
- Vulkan everywhere: Google is working with device manufacturer partners to make Vulkan 1.1 a requirement on all 64-bit devices running Android Q and higher, and a recommendation for all 32-bit devices. Vulkan will thus become a uniform high-performance graphics API for apps and games to use.
- Neural Networks API 1.2: 60 new ops including ARGMAX, ARGMIN, quantized LSTM, alongside a range of performance optimizations. This will accelerate a much greater range of models — such as those for object detection and image segmentation. Google is working with hardware vendors and popular machine learning frameworks such as TensorFlow to optimize and roll out support for NNAPI 1.2.
- ART performance: Improvements to the ART runtime that help apps start faster and consume less memory. Garbage collection overall has been made more efficient in terms of time and CPU, reducing jank and helping apps run better on lower-end devices.
- BiometricPrompt has been extended to passive authentication methods such as the face, plus implicit and explicit authentication flows. Google has also improved the fallback for device credentials when needed.
- TLS 1.3 support has been added and enabled by default for all TLS connections. Google says its benchmarks indicate that secure connections can be established as much as 40 percent faster with TLS 1.3 compared to TLS 1.2.
- Compatibility through public APIs: Google is restricting access to more non-SDK interfaces and asking developers to use the public equivalents instead. The restrictions are only for apps targeting Android Q, so make sure to test accordingly. Use the StrictMode method detectNonSdkApiUsage() to warn when your app accesses non-SDK APIs via reflection or JNI.
- Modern Android: Google Play will require targetSdkVersion set to 28 (Android 9 Pie) in new apps and updates later this year. Android Q will warn users with a dialog when they first run an app that targets a platform earlier than API level 23 (Android Marshmallow). Also later this year, Google Play will require 64-bit support in all apps (developer guide).
Google has also put out a timeline outlining the Android Q beta rollout for early adopters and testers before more information is put out during the I/O 2019.
Here’s the preview schedule:
- March: Beta 1 (initial release, beta)
- April: Beta 2 (incremental update, beta)
- May: Beta 3 (incremental update, beta)
- June: Beta 4 (final APIs and official SDK, Play publishing, beta)
- Beta 5 (release candidate for testing)
- Beta 6 (release candidate for final testing)
- Q3: Final release to AOSP and ecosystem