DAN GALPIN: We've now reached the second release of the Android Q beta program. Q has enhancements to privacy and security, and, of course, there's a lot of great stuff for developers. Let's start with how Q builds on top of Android's strong privacy protections. Android Q enhances runtime permission requests to give users more control over when apps can get location. When Android Q prompts users to give the app the location permission, it now enables users to allow the permission only while the app is in use in the foreground, allow the permission always, or to deny the permission. Check out the developer guide for details on how to adapt your app for this new permission model. Android Q continues the work in previous releases to limit access to non-resettable device identifiers including device IMEI and serial number. The Mac address to the device is now randomized by default when connected to different Wi-Fi networks. Most of our APIs for scanning networks already require the course location permission, but in Android Q for Bluetooth, cellular, and Wi-Fi, we're increasing the protection around those APIs by requiring the fine location permission instead. Finally, Android Q continues the process of limiting access to non-SDK internal interfaces. You can turn on and off this for testing purposes and tell Android to enable access but print log messages.
Android Q adds new support for foldable devices, allowing multiple apps to be in this resumed state at the same time. Most apps won't have to address this change, but we've added a top resumed activity callback that should be used to open and close exclusive devices such as the camera. We've also changed how the re-sizable activity manifest attribute works. In Q, if an app sets re-sizable activity equals false along with a fixed orientation or aspect ratio, display changes will cause the app to be letterboxed and resized to maintain the aspect ratio. You can use the canary release of Android Studio 3.5 to create a foldable virtual device with a beta 2 image. The emulator gives you onscreen controls to trigger fold, unfold, change orientation, and quick actions. Also an Android Q, apps can request a dynamic in depth image. Supported device cells will return a JPEG with embedded XMP metadata related to depth-related elements and a depth in competence map. The existing direct share feature gives users the power to share content to a specific contact with another app, but the implementation adds latency when displaying the share UI. In Android Q, developers can publish share targets in advance, allowing the share UI to load much more quickly. These works similarly to app shortcuts, so we've expanded their shortcut info API to make integrating both features easier and added the share target AndroidX library to allow apps to leverage the new functionality while still supporting pre-Q devices using direct share. Android Q ads platform support for notification bubbles, circular icons that represent app content. Various apps have used system alert windows to build similar interactions, and we're excited to standardize on a straightforward implementation for developers that provides consistent interactions for users. Bubbles are built on top of Android's notification system to provide a familiar and easy to use APIs for developers with a bubble being a type of notification. To bubble a notification, you need to make sure the notification channel allows bubble notifications and then call set bubble metadata to add bubble metadata. Within the metadata, you provide the bubble icon along with the activity to display as bubble content.
In Q, you can use the settings panel API to show key system settings as a floating panel in the context of your app. A browser could use this API to display connectivity settings such as airplane mode, Wi-Fi, and mobile data. Users can then manage these settings without leaving the app. We've done a bunch in Android Q to allow for higher performance apps. For example, apps can create a Wi-Fi lock to ask the platform to optimize Wi-Fi around low latency. Android Q also adds support for the high performance Vulkan 1.1 graphics API and makes 1.1 a requirement for all 64-bit devices running Q and higher.
Android Q contains a preview of a standard updatable OpenGL driver for all devices built on Vulkan called Angle. You can enable Angle for all apps or for individual apps in developer options. The neural networks API has been updated to version 1.2, adding 60 new opps including arg max, arg min, quantized LSTM, laying the foundation for accelerating a wider range of models such as those for object detection and image segmentation. Android Q now allows apps to pull the current thermal status of the device and register for a callback when the thermal status changes. This can help real-time applications such as games, reduce their workload in response to an overheating device. We've also added a native MIDI API in the NDK. This API allows MIDI data to be retrieved inside an audio callback using a non-blocking thread, enabling low latency processing of MIDI messages. Google Play is now delivering cloud-based profiles along with APKs.
These are anonymized aggregate art profiles that let art pre-compile parts of your app even before it's run, giving a significant jumpstart to the overall optimization process. Cloud-based profiles benefit all apps, and they're already available to devices running Android P and higher. And there's so much more like support for the AV1 video codec, improvements for managing IoT devices over Wi-Fi, passive support for biometric prompt, and TLS 1.3. For information on how to install the Android Q beta, check out the links in the description.
Enjoy Android Q. Learn about the new features and APIs you can using your apps. Please leave us feedback on the beta. On the Android Q beta developer site, you'll find release notes and support resources for reporting issues. .