Program Overview
Welcome to the Android M Developer Preview, a program that gives you everything you need to test and optimize your apps for the next version of Android. It's free, and you can get started right away just by downloading the M Developer Preview tools.
Hardware and emulator system images
Run and test your apps on Nexus 5, 6, 9, and Player (for TV), as well as emulator.
Latest platform code
We’ll provide multiple updates during the Preview, so you’ll be testing against the latest platform changes.
Updates delivered by OTA
You can get updates over-the-air, once you’ve flashed a device to the initial preview.
New behaviors and capabilities
Start work early to support new platform behaviors such as the new runtime permissions model and power-saving features.
Priority window for developer-reported issues
During the first several weeks we’ll give priority to developer-reported issues, so test and give feedback as soon as possible.
Feedback and support
Report issues and give us feedback using our issue tracker. Connect with other developers in the M Developer Community.
Timeline and updates

The M Developer Preview runs from May 28 until the final Android M SDK, which we’ll release shortly before the public release during Q3 2015.
At key development milestones, we’ll deliver updates for your test devices. The tentative milestones are
- Preview 1 (initial Preview release, late May),
- Preview 2 (late June/early July), and
- Preview 3 (near final, late July)
These updates culminate in the final SDK (later in Q3), which delivers the official APIs for the new version of Android, as well as the final system behaviors and features.
As you test and develop on Android M, we strongly recommend keeping your development environment up-to-date as Preview updates are released. To make the process easier, we'll deliver updates over-the-air (OTA) to devices already flashed to a Preview build, as well as providing system images that you can download and flash manually.
Note: The final SDK and system images can not be delivered by OTA, but will instead need to be flashed manually to your test devices.
What’s in the Preview?
The M Developer Preview includes everything you need to test your existing apps on a variety of screen sizes, network technologies, CPU/GPU chipsets, and hardware architectures.
SDK tools
You can download these components through the SDK Manager in Android Studio:
- M Developer Preview SDK tools
- M Developer Preview emulator system image (32-bit & 64-bit)
- M Developer Preview emulator system Image for Android TV (32-bit)
Hardware system images
You can download these hardware system images for Nexus devices from the Downloads page:
- Nexus 5 (GSM/LTE) “hammerhead” device system image
- Nexus 6 “shamu” device system image
- Nexus 9 (Wi-Fi) “volantis” device system image
- Nexus Player (Android TV) “fugu” device system image
Documentation and sample code
These documentation resources help you learn about the Preview:
- Set Up the SDK has step-by-step instructions for getting started.
- Testing Guide and Behavior Changes point you to key areas to test.
- Documentation of new APIs, including an API Overview, downloadable API Reference, and detailed developer guides on key features such as permissions, app backup, and others.
- Sample code that demonstrates how to support permissions and other new features.
- Release notes for the current version of the M Developer Preview, including change notes and diff reports.
Support resources
Use these support resources as you test and develop on the M Developer Preview:
- M Developer Preview Issue Tracker is your primary feedback channel. You can report bugs, performance issues, and general feedback through the issue tracker. You can also check for known issues and find workaround steps.
- The Android M Developer Community is a Google+ community where you can connect with other developersworking with Android M. You can share observations or ideas or find answers to questions about Android M.
Targeting, preview APIs, and publishing
The Android M Developer Preview is a development-only release and does not have a standard API level. If you want to opt out of compatibility behaviors to test your app (which is strongly recommended), you can target the M Developer Preview by setting your app's
targetSdkVersion to “MNC”.
The Android M Developer Preview delivers preview APIs — the APIs will not be official until the final SDK is released, currently planned for the third quarter of 2015. This means that you can expect minor API changesover time, especially during initial weeks of the program. We’ll provide a summary of changes to you with each update of the Android M Developer Preview.
Note that although preview APIs may change, underlying system behaviors such as runtime permissions and power-saving features are stable and ready for testing right away.
In terms of publishing, Google Play prevents publishing of apps targeting the M Developer Preview. When the Android M final SDK is available, you’ll be able to target the official Android M API level and publish your app to Google Play. Meanwhile, if you want to distribute an app targeting Android M to testers, you can do so via email or by direct download from your site.
How to get started
To get started testing your app:
- Review the API Overview and Behavior Changes to get an idea of what's new and how it affects your apps. In particular, learn about the new runtime permissions model, power-saving features, and auto backup.
- Set up your environment by following the instructions for Setting up the Preview SDK and configuring test devices.
- Follow the flashing instructions to flash the latest M developer preview system image for Nexus 5, 6, 9, and Player. Once you've flashed your development device, Preview updates will be delivered through over-the-air (OTA) updates.
- Download the M Preview API Reference and M Preview samples to gain more insight into new API features and how to use them in your app.
- Join the Android M Developer Community to get the latest news and connect with other developers working with the new platform.
Thank you for your participation in the Android M Developer Preview program!
Downloads
The Android M Preview SDK includes development tools, Android system files, and library files to help you test your app and the new APIs coming in the next release of the platform. This document describes how to get the downloadable components of the preview for testing your app.
Preview SDK
The Preview SDK is available for download through the Android SDK Manager. For more information on downloading and configuring the Preview SDK, see Set Up the Preview SDK.
Developer Documentation
The developer documentation download package provides detailed API reference information and an API difference report for the preview.
| Description | Download / Checksums |
|---|---|
| Android M Preview Developer Docs | m-preview-1-developer-docs.zip MD5: b65201b0d35416f5a1b7a071b52854a7 SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec |
Hardware System Images
These system images allow you to install a preview version of the platform on a physical device for testing. By configuring a device with one of these images, you can install and test your app to see how it performs on the next version of the platform. The process of installing a system image on a device removes all data from the device, so you should backup your data before installing a system image.
Warning: The following Android system images are previews and are subject to change. Your use of these system images is governed by the Android SDK Preview License Agreement. The Android preview system images are not stable releases, and may contain errors and defects that can result in damage to your computer systems, devices, and data. The preview Android system images are not subject to the same testing as the factory OS and can cause your phone and installed services and applications to stop working.
| Device | Download / Checksums |
|---|---|
| Nexus 5 (GSM/LTE) "hammerhead" | hammerhead-MPZ44Q-preview-55d76d3a.tgz MD5: 9e2631b06c6525e401ceaae3677ff320 SHA-1: 55d76d3a379b18f3363f28d8a462c236ab96fc36 |
| Nexus 6 "shamu" | shamu-MPZ44Q-preview-c1d6506a.tgz MD5: 307cbf9dab0a38df4ab2639d02be12aa SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8 |
| Nexus 9 "volantis" | volantis-MPZ44Q-preview-d15ad483.tgz MD5: fae40377fd999d2b09128665c915264d SHA-1: 7ab05f96093b2cb370b226f65931202714cbc2ca |
| Nexus Player "fugu" | fugu-MPZ44Q-preview-2406ba05.tgz MD5: 815902141a85cc65e7725f005cad31d5 SHA-1: 2406ba0598dea1e69110497ac0bc8e16789bc8fb |
- Download and uncompress one of the system image packages listed here.
- Backup any data you want to preserve from the device.
- Follow the instructions at developers.google.com/android to flash the image onto your device.
Note: Once you have flashed a development device the preview system image, it is upgraded automatically with the next preview release through over-the-air (OTA) updates.
Revert a Device to Factory Specifications
If you want to uninstall the preview and revert the device to factory specifications, go todevelopers.google.com/android and download the image you want to flash to for your device. Follow the instructions on that page to flash the image to your device.
Set Up the Preview SDK
The M Developer Preview SDK is available from the Android SDK Manager. This document assumes that you are familiar with Android app development, such as using the Android SDK Manager and creating projects. If you are new to Android, see Building Your First App training lesson first.
Get Android Studio 1.3
The Developer Preview is best used with Android Studio 1.3, which is in preview status. It is highly recommended that you install the preview version of Android Studio 1.3 to work with the Preview SDK.
Caution: The canary preview of Android Studio 1.3 is still in active development. If you are using your primary development machine to test the developer preview, you can create a second installation of Android Studio to use for testing.
To install the Android Studio 1.3 preview:
- Download and launch Android Studio.
- Open the Settings window (on Windows, you can do this by choosing File > Settings). Choose theAppearance & Behavior > System Settings > Updates panel.On OSX, you can find the Appearance & Behavior panel in Android Studio's Preferences window.
- On the Updates panel, choose the option Automatically check updates for: Canary Channel.
- On the Updates panel, select Check Now to check for the latest canary build. Download and install the build when you are prompted.
Get the Preview SDK
To add the Preview SDK components to your development environment:
- Launch the Android Studio 1.3 preview.
- Open the Settings window (on Windows, you can do this by choosing File > Settings). Choose theAppearance & Behavior > System Settings > Updates panel.On OSX, you can find the Appearance & Behavior panel in Android Studio's Preferences window.
- On the Updates panel, choose the options Automatically check updates for: Canary Channel andAutomatically check updates for Android SDK: Preview Channel.
- Launch the Android SDK Manager. (With Android Studio 1.3, the SDK Manager is integrated into Android Studio instead of being a standalone application.)
- Under the Platforms section, select Android MNC Preview.
- In the Tools section, select the latest Android SDK Tools, Platform-tools, and Build-tools.
- Click Install packages and accept the licensing agreement for all of the packages.
- Verify that the M Developer Preview is installed by opening the Settings window and choosing theAppearance & Behavior > System Settings > Android SDK panel.
- On the Android SDK panel, choose the SDK Platforms tab. Android MNC Preview should be listed asInstalled. Also, open the SDK Tools tab to verify that the latest tools are installed.
After completing these steps, the preview components are available in your development environment.
Create or Update a Project
In order to use the preview APIs, you must create or update a development project to use the preview components.
Create a new project
We recommend using Android Studio to create a project with the preview. Follow the steps described in Creating a Project until you arrive at the Form Factors screen in the project wizard. Then perform the following steps to create a project configured for the preview.
- Check Phone and Tablet.
- Select MNC: Android M (Preview) in Minimum SDK.
Update an existing project
For existing projects, you must modify the project configuration to enable the preview APIs. In your development environment, open the
build.gradle file for your module and set these values as follows:compileSdkVersionis set to'android-MNC'minSdkVersionis set to'MNC'targetSdkVersionis set to'MNC'
Set Up for Testing
Testing an app with the preview requires that you have a device or virtual device configured with the preview version of the platform. If you have a compatible device, you can install the preview platform for testing. Otherwise, you can configure a virtual device for testing.
Set up a physical device
If you have a Nexus 5, Nexus 6, Nexus 9, or Android TV, you can install a preview system image on these devices for testing your app. You can set up a virtual device with the preview version of the platform from within Android Studio using the Android Virtual Device Manager tool.
Important: Installing a preview image on a device removes all data from it, so you should backup any data before installing a preview image.
Set up a virtual device
You can set up virtual device with the preview version of the platform from within Android Studio using the Android Virtual Device Manager tool.
To create an AVD with the AVD Manager:
- Install the Preview SDK in your development environment, as described in Setting Up the Preview SDK.
- Follow the steps in Managing AVDs with AVD Manager. Use the following settings:
- Device: Nexus 5, Nexus 6, Nexus 9, or Android TV
- Target: Android M (Preview) - API Level M
- ABI: x86
For more information about creating virtual devices for testing, see Managing Virtual Devices.
Samples
The following code samples are provided for the M Developer Preview. To download the samples in Android Studio, select the File > Import Samples menu option.
Note: These downloadable projects are designed for use with Gradle and Android Studio.
Runtime Permissions
Android M changes the way system permissions work. Users are asked to approve permission requests at runtime instead of during installation. This sample shows how to request these permissions.
Confirm Credential
This sample demonstrates how to use device credentials as an authentication method in your app.
Fingerprint Dialog
This sample demonstrates how to recognize registered fingerprints to authenticate the user in your app.
Auto Backup for Apps
Android M introduces automatic backup for app settings. This sample demonstrates how to add filtering rules to an app in order to manage settings backup.
Camera 2 Raw
Demonstrates how to use the
Camera2 API to capture RAW camera buffers and save them as DNG files.Active Notification
This sample demonstrates how the
NotificationManager can tell you how many notifications your app is currently showing.API Overview
The M Developer Preview gives you an advance look at the upcoming release for the Android platform, which offers new features for users and app developers. This document provides an introduction to the most notable APIs.
The M Developer Preview is intended for developer early adoptersand testers. If you are interested in influencing the direction of the Android framework, give the M Developer Preview a try and send us your feedback!
Caution: Do not publish apps that use the M Developer Preview to the Google Play store.
Note: This document often refers to classes and methods that do not yet have reference material available ondeveloper.android.com. These API elements are formatted in
code style in this document (without hyperlinks). For the preliminary API documentation for these elements, download thepreview reference.Important behavior changes
If you have previously published an app for Android, be aware that your app might be affected by changes in the platform.
Please see Behavior Changes for complete information.
App Linking
This preview enhances Android’s intent system by providing more powerful app linking. This feature allows you to associate an app with a web domain you own. Based on this association, the platform can determine the default app to use to handle a particular web link and skip prompting users to select an app. To learn how to implement this feature, see App Linking.
Auto Backup for Apps
The system now performs automatic full data backup and restore for apps. This behavior is enabled by default for apps targeting M Preview; you do not need to add any additional code. If users delete their Google accounts, their backup data is deleted as well. To learn how this feature works and how to configure what to back up on the file system, see Auto Backup for Apps.
Authentication
This preview offers new APIs to let you authenticate users by using their fingerprint scans on supported devices, and check how recently the user was last authenticated using a device unlocking mechanism (such as a lockscreen password). Use these APIs in conjunction with the Android Keystore system.
Fingerprint Authentication
To authenticate users via fingerprint scan, get an instance of the new
android.hardware.fingerprint.FingerprintManager class and call theFingerprintManager.authenticate() method. Your app must be running on a compatible device with a fingerprint sensor. You must implement the user interface for the fingerprint authentication flow on your app, and use the standard Android fingerprint icon in your UI. The Android fingerprint icon (c_fp_40px.png) is included in the sample app. If you are developing multiple apps that use fingerprint authentication, note that each app must authenticate the user’s fingerprint independently.
To use this feature in your app, first add the
USE_FINGERPRINT permission in your manifest.<uses-permission android:name="android.permission.USE_FINGERPRINT" />

To see an app implementation of fingerprint authentication, refer to the Fingerprint Dialog sample.
If you are testing this feature, follow these steps:
- Install Android SDK Tools Revision 24.3, if you have not done so.
- Enroll a new fingerprint in the emulator by going to Settings > Security > Fingerprint, then follow the enrollment instructions.
- Use an emulator to emulate fingerprint touch events with the following command. Use the same command to emulate fingerprint touch events on the lockscreen or in your app.
adb -e emu finger touch <finger_id>
On Windows, you may have to runtelnet 127.0.0.1 <emulator-id>followed byfinger touch <finger_id>.
Confirm Credential
Your app can authenticate users based on how recently they last unlocked their device. This feature frees users from having to remember additional app-specific passwords, and avoids the need for you to implement your own authentication user interface. Your app should use this feature in conjunction with a public or secret key implementation for user authentication.
To set the timeout duration for which the same key can be re-used after a user is successfully authenticated, call the new
android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()method when you set up a KeyGenerator or KeyPairGenerator. This feature currently works for symmetric cryptographic operations.
Avoid showing the re-authentication dialog excessively -- your apps should try using the cryptographic object first and if the the timeout expires, use the
createConfirmDeviceCredentialIntent() method to re-authenticate the user within your app.
To see an app implementation of this feature, refer to the Confirm Credential sample.
Direct Share

This preview provides you with APIs to make sharing intuitive and quick for users. You can now define direct share targets that launch a specific activity in your app. These direct share targets are exposed to users via theShare menu. This feature allows users to share content to targets, such as contacts, within other apps. For example, the direct share target might launch an activity in another social network app, which lets the user share content directly to a specific friend or community in that app.
To enable direct share targets you must define a class that extends the
android.service.chooser.ChooserTargetService class. Declare yourChooserTargetService in the manifest. Within that declaration, specify the BIND_CHOOSER_TARGET_SERVICEpermission and an intent filter with theSERVICE_INTERFACE action.
The following example shows how you might declare the
ChooserTargetService in your manifest.<service android:name=".ChooserTargetService" android:label="@string/service_name" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service>
For each activity that you want to expose to the
ChooserTargetService, add a <meta-data> element with the name "android.service.chooser.chooser_target_service" in your app manifest.<activity android:name=".MyShareActivity” android:label="@string/share_activity_label"> <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ChooserTargetService" /> </activity>
Voice Interactions
This preview provides a new voice interaction API which, together with Voice Actions, allows you to build conversational voice experiences into your apps. Call the
android.app.Activity.isVoiceInteraction()method to determine if your activity was started in response to a voice action. If so, your app can use theandroid.app.VoiceInteractor class to request a voice confirmation from the user, select from a list of options, and more. To learn more about implementing voice actions, see the Voice Actions developer site.Assist API
This preview offers a new way for users to engage with your apps through an assistant. To use this feature, the user must enable the assistant to use the current context. Once enabled, the user can summon the assistant within any app, by long-pressing on the Home button.
Your app can elect to not share the current context with the assistant by setting the
FLAG_SECURE flag. In addition to the standard set of information that the platform passes to the assistant, your app can share additional information by using the new android.app.Activity.AssistContent class.
To provide the assistant with additional context from your app, follow these steps:
- Implement the
Application.OnProvideAssistDataListenerinterface. - Register this listener by using
registerOnProvideAssistDataListener(). - In order to provide activity-specific contextual information, override the
onProvideAssistData()callback and, optionally, the newActivity.onProvideAssistContent()callback.
Notifications
This preview adds the following API changes for notifications:
- New
NotificationListenerService.INTERRUPTION_FILTER_ALARMSfilter level that corresponds to the newAlarms only do not disturb mode. - New
Notification.CATEGORY_REMINDERcategory value that is used to distinguish user-scheduled reminders from other events (CATEGORY_EVENT) and alarms (CATEGORY_ALARM). - New
android.graphics.drawable.Iconclass which can be attached to your notifications via theNotification.Builder.setSmallIcon(Icon)andNotification.Builder.setLargeIcon(Icon)methods. - New
NotificationManager.getActiveNotifications()method that allows your apps to find out which of their notifications are currently alive. To see an app implementation that uses this feature, see the Active Notifications sample.
Bluetooth Stylus Support
This preview provides improved support for user input using a Bluetooth stylus. Users can pair and connect a compatible Bluetooth stylus with their phone or tablet. While connected, position information from the touch screen is fused with pressure and button information from the stylus to provide a greater range of expression than with the touch screen alone. Your app can listen for stylus button presses and perform secondary actions, by registering the new
View.onStylusButtonPressListener andGestureDetector.OnStylusButtonPressListener callbacks in your activity.
Use the
MotionEvent methods and constants to detect stylus button interactions:- If the user touches a stylus with a button on the screen of your app, the
getTooltype()method returnsTOOL_TYPE_STYLUS. - For apps targeting M Preview, the
getButtonState()method returnsMotionEvent.STYLUS_BUTTON_PRIMARYwhen the user presses the primary stylus button. If the stylus has a second button, the same method returnsMotionEvent.STYLUS_BUTTON_SECONDARYwhen the user presses it. If the user presses both buttons simultaneously, the method returns both values OR'ed together (STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY). - For apps targeting a lower platform version, the
getButtonState()method returnsBUTTON_SECONDARY(for primary stylus button press),BUTTON_TERTIARY(for secondary stylus button press), or both.
Improved Bluetooth Low Energy Scanning
If your app performs performs Bluetooth Low Energy scans, you can use the new
android.bluetooth.le.ScanSettings.Builder.setCallbackType() method to specify that you want callbacks to only be notified when an advertisement packet matching the set ScanFilter is first found, and when it is not seen for a period of time. This approach to scanning is more power-efficient than what’s provided in the previous platform version.Hotspot 2.0 Release 1 Support
This preview adds support for the Hotspot 2.0 Release 1 spec on Nexus 6 and Nexus 9 devices. To provision Hotspot 2.0 credentials in your app, use the new methods of the
WifiEnterpriseConfig class, such assetPlmn() and setRealm(). In the WifiConfiguration object, you can set the FQDN and theproviderFriendlyName fields. The new ScanResult.PasspointNetwork property indicates if a detected network represents a Hotspot 2.0 access point.4K Display Mode
The platform now allows apps to request that the display resolution be upgraded to 4K rendering on compatible hardware. To query the current physical resolution, use the new
android.view.Display.Mode APIs. If the UI is drawn at a lower logical resolution and is upscaled to a larger physical resolution, be aware that the physical resolution the Display.Mode.getPhysicalWidth() method returns may differ from the logical resolution reported by getSize().
You can request the system to change the physical resolution in your app as it runs, by setting the
WindowManager.LayoutParams.preferredDisplayModeId property of your app’s window. This feature is useful if you want to switch to 4K display resolution. While in 4K display mode, the UI continues to be rendered at the original resolution (such as 1080p) and is upscaled to 4K, but SurfaceView objects may show content at the native resolution.Themeable ColorStateLists
Theme attributes are now supported in
ColorStateList for devices running the M Preview. ThegetColorStateList() and getColor() methods have been deprecated. If you are calling these APIs, call the new Context.getColorStateList() or Context.getColor() methods instead. These methods are also available in the v4 appcompat library via ContextCompat.Audio Features
This preview adds enhancements to audio processing on Android, including:
- Support for the MIDI protocol, with the new
android.media.midiAPIs. Use these APIs to send and receive MIDI events. - New
android.media.AudioRecord.Builderandandroid.media.AudioTrack.Builderclasses to create digital audio capture and playback objects respectively, and configure audio source and sink properties to override the system defaults. - API hooks for associating audio and input devices. This is particularly useful if your app allows users to start a voice search from a game controller or remote control connected to Android TV. The system invokes the new
android.app.Activity.onSearchRequested()callback when the user starts a search. To determine if the user's input device has a built-in microphone, retrieve theInputDeviceobject from that callback, then call the newInputDevice.hasMic()method. - New
android.media.AudioDevicesManagerclass which lets you retrieve a list of all attached source and sink audio devices. You can also specify anandroid.media.OnAudioDeviceConnectionListenerobject if you want your app to be notified when an audio device is connected or disconnected.
Video Features
This preview adds new capabilities to the video processing APIs, including:
- New
android.media.MediaSyncclass which helps applications to synchronously render audio and video streams. The audio buffers are submitted in non-blocking fashion and are returned via a callback. It also supports dynamic playback rate. - New
MediaDrm.EVENT_SESSION_RECLAIMEDevent, which indicates that a session opened by the app has been reclaimed by the resource manager. If your app uses DRM sessions, you should handle this event and make sure not to use a reclaimed session. - New
MediaCodec.CodecException.ERROR_RECLAIMEDerror code, which indicates that the resource manager reclaimed the media resource used by the codec. With this exception, the codec must be released, as it has moved to terminal state. - New
MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()interface to get a hint for the max number of the supported concurrent codec instances. - New
MediaPlayer.setPlaybackParams()method to set the media playback rate for fast or slow motion playback. It also stretches or speeds up the audio playback automatically in conjunction with the video.
Camera Features
This preview includes the following new APIs for accessing the camera’s flashlight and for camera reprocessing of images:
Flashlight API
If a camera device has a flash unit, you can call the
CameraManager.setTorchMode() method to switch the flash unit’s torch mode on or off without opening the camera device. The app does not have exclusive ownership of the flash unit or the camera device. The torch mode is turned off and becomes unavailable whenever the camera device becomes unavailable, or when other camera resources keeping the torch on become unavailable. Other apps can also call setTorchMode() to turn off the torch mode. When the last app that turned on the torch mode is closed, the torch mode is turned off.
You can register a callback to be notified about torch mode status by calling the
CameraManager.registerTorchCallback() method. The first time the callback is registered, it is immediately called with the torch mode status of all currently known camera devices with a flash unit. If the torch mode is turned on or off successfully, the CameraManager.TorchCallback.onTorchModeChanged() method is invoked.Reprocessing API
The
Camera2 API is extended to support YUV and private opaque format image reprocessing. Your app determine if the reprocessing capabilities are available viaCameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES. If a device supports reprocessing, you can create a reprocessable camera capture session by calling CameraDevice.createReprocessableCaptureSession(), and create requests for input buffer reprocessing.
Use the
ImageWriter class to connect the input buffer flow to the camera reprocessing input. To get an empty buffer, follow this programming model:- Call the
ImageWriter.dequeueInputImage()method. - Fill the data into the input buffer.
- Send the buffer to the camera by calling the
ImageWriter.queueInputImage()method.
If you are using a
ImageWriter object together with an android.graphics.ImageFormat.PRIVATE image, your app cannot access the image data directly. Instead, pass the ImageFormat.PRIVATE image directly to theImageWriter by calling the ImageWriter.queueInputImage() method without any buffer copy.
The
ImageReader class now supports android.graphics.ImageFormat.PRIVATE format image streams. This support allows your app to maintain a circular image queue of ImageReader output images, select one or more images, and send them to the ImageWriter for camera reprocessing.Android for Work Features
This preview includes the following new APIs for Android for Work:
- Enhanced controls for Corporate-Owned, Single-Use devices: The Device Owner can now control the following settings to improve management of Corporate-Owned, Single-Use (COSU) devices:
- Disable or re-enable the keyguard with the
DevicePolicyManager.setKeyguardEnabledState()method. - Disable or re-enable the status bar (including quick settings, notifications, and the navigation swipe-up gesture that launches Google Now) with the
DevicePolicyManager.setStatusBarEnabledState()method. - Disable or re-enable safe boot with the
UserManagerconstantDISALLOW_SAFE_BOOT. - Prevent the screen from turning off while plugged in with the
Settings.GlobalconstantSTAY_ON_WHILE_PLUGGED_IN.
- Disable or re-enable the keyguard with the
- Silent install and uninstall of apps by Device Owner: A Device Owner can now silently install and uninstall applications using the
PackageInstallerAPIs, independent of Google Play for Work. You can now provision devices through a Device Owner that fetches and installs apps without user interaction. This feature is useful for enabling one-touch provisioning of kiosks or other such devices without activating a Google account. - Silent enterprise certificate access: When an app calls
choosePrivateKeyAlias(), prior to the user being prompted to select a certificate, the Profile or Device Owner can now call theDeviceAdminReceiver.onChoosePrivateKeyAlias()method to provide the alias silently to the requesting application. This feature lets you grant managed apps access to certificates without user interaction. - Auto-acceptance of system updates. By setting a system update policy with
DevicePolicyManager.setSystemUpdatePolicy(), a Device Owner can now auto-accept a system update, for instance in the case of a kiosk device, or postpone the update and prevent it being taken by the user for up to 30 days. Furthermore, an administrator can set a daily time window in which an update must be taken, for example during the hours when a kiosk device is not in use. When a system update is available, the system checks if the Work Policy Controller app has set a system update policy, and behaves accordingly. - Delegated certificate installation: A Profile or Device Owner can now grant a third-party app the ability to call these
DevicePolicyManagercertificate management APIs: - Enterprise factory reset protection: When provisioning a Device Owner, you can now configure parameters to unlock Factory Reset Protection (FRP) by setting the
DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERSbundle. An NFC Programmer app can provide these parameters after a device has been reset to unlock FRP and provision the device, without requiring the previously configured Google account. If you don't modify these parameters, FRP remains in-place and prevents the device from being activated without the previously activated Google credentials.Additionally, by setting app restrictions on Google Play services, Device Owners can specify alternative Google accounts for unlocking FRP to replace the ones activated on the device. - Data usage tracking. A Profile or Device Owner can now query for the data usage statistics visible in Settings > Datausage by using the new
android.app.usage.NetworkStatsManagermethods. Profile Owners are automatically granted permission to query data on the profile they manage, while Device Owners get access to usage data of the managed primary user. - Runtime permission management:A Profile or Device Owner can set a permission policy for all runtime requests of all applications using
DevicePolicyManager.setPermissionPolicy(), to either prompt the user to grant the permission as normal or automatically grant or deny the permission silently. If the latter policy is set, the user cannot modify the selection made by the Profile or Device Owner within the app’s permissions screen in Settings. - VPN in Settings: VPN apps are now visible in Settings > More > VPN. Additionally, the notifications that accompany VPN usage are now specific to how that VPN is configured. For Profile Owner, the notifications are specific to whether the VPN is configured for a managed profile, a personal profile, or both. For a Device Owner, the notifications are specific to whether the VPN is configured for the entire device.
- Work status notification: A status bar briefcase icon now appears whenever an app from the managed profile has an activity in the foreground. Furthermore, if the device is unlocked directly to the activity of an app in the managed profile, a toast is displayed notifying the user that they are within the work profile.
For a detailed view of all API changes in the M Developer Preview, see the API Differences Report.
Support
If you've encountered bugs or have feedback about the M Developer Preview, create an issue on our issue tracker.
For more support, join the M Developer Preview Google+ community to discuss your development experiences.
Release Notes
M Developer Preview, Revision 1 (May 2015)
No comments:
Post a Comment