The Android 7.1 update introduces a variety of new features and capabilities for users and developers. This document highlights what's new for developers.

## App Shortcuts

You can use the new*shortcuts*feature to bring users from the launcher directly to key actions within your app. Users simply long-press your app's launcher icon to reveal the app's shortcuts, then tap on a shortcut to jump to the associated action. These shortcuts are a great way to engage users, and they let you surface the functionality of your app even before users launch your app.

Each shortcut references an[intent](https://developer.android.com/guide/components/intents-filters), each of which launches a specific action or task, and you can create a shortcut for any action that you can express as an intent. For example, you can create intents for sending a new text message, making a reservation, playing a video, continuing a game, loading a map location, and much more.

You can create shortcuts for your app statically by adding them to a resource file in the APK, or you can add them dynamically at runtime. Static shortcuts are ideal for common actions, and dynamic shortcuts let you highlight actions based on users' preferences, behavior, location, and so on. You can offer up to five shortcuts in each of your apps. Note, however, that some launcher apps don't show every shortcut you've registered for your app.

After your app adds shortcuts, they're available on any launcher that supports them, such as the Pixel launcher (the default launcher on Pixel devices), the Now launcher (the default launcher on Nexus devices), and other launchers that provide support.

Any app can create shortcuts, and any launcher app can add support for shortcuts. Android 7.1 provides an API for apps to register shortcuts and launchers to read the registered shortcuts. For details, see the[App Shortcuts developer documentation](https://developer.android.com/guide/topics/ui/shortcuts).  
![Image keyboard support on Nexus 6P](https://developer.android.com/static/images/guide/topics/text/image-keyboard-sample.png)

*Image keyboard support:*Lets users input images and other content directly from a keyboard.  
![App shortcuts on Nexus 6P](https://developer.android.com/static/images/guide/topics/ui/shortcuts.png)

*App shortcuts:*Surface key actions and take users deep into your app instantly.

## Image Keyboard Support

Users often want to communicate with emojis, stickers, and other kinds of rich content. In previous versions of Android, soft keyboards (also known as[input method editors](https://developer.android.com/guide/topics/text/creating-input-method)or IMEs) could send only unicode emojis to apps. For rich content, apps had to either build app-specific emojis that couldn't be used in other apps, or use workarounds like sending images through an[Easy Share Action](https://developer.android.com/training/sharing/shareaction)or the clipboard.

Now in Android 7.1, the Android SDK includes the Commit Content API, which provides a universal way for IMEs to send images and other rich content directly to a text editor in an app. The API is also available in v13 Support Library as of revision 25.0.0.

With this API, you can build messaging apps that accept rich content from any keyboard, as well as, keyboards that can send rich content to any app. For details, see the[Image Keyboard Support developer documentation](https://developer.android.com/guide/topics/text/image-keyboard).

## New Professional Emoji

With Android 7.1, we're adding new emoji that represent a wider range of professions for women as well as men. The new emoji bring parity between our existing male emoji and female emoji and are available in a variety of skin tones.

If you're a keyboard or messaging app developer, you should start incorporating these emoji into your apps. You can dynamically check for the new emoji characters by calling[Paint.hasGlyph()](https://developer.android.com/reference/android/graphics/Paint#hasGlyph(java.lang.String)).
![Collection of new professional female emoji in a variety of skin tones](https://developer.android.com/static/images/about/versions/nougat/new-emoji-7.1.png)

## Enhanced Live Wallpaper Metadata

You can now provide metadata about your live wallpapers to any component that's displaying a preview of the wallpaper, such as a wallpaper picker app. You can show existing metadata attributes such as label, description, and author, as well as new attributes for a context URL and title to link users to more information about the wallpaper.

For more information, see the[Android Developers blog](https://android-developers.blogspot.com/2016/10/android-71-developer-preview.html).

## Round Icon Resources

![Screen displaying the Image Asset tool](https://developer.android.com/static/images/about/versions/nougat/round-icon.png)

You can use the Image Asset tool to quickly create circular icon assets.

Apps can now define circular launcher icons, which are used on devices that support them. When a launcher requests an app icon, the framework returns either`android:icon`or`android:roundIcon`, depending on the device build configuration. Because of this, apps should make sure to define both`android:icon`and`android:roundIcon`resources when responding to launcher intents. You can use[Image Asset Studio](https://developer.android.com/studio/write/image-asset-studio#access)to design round icons.

You should make sure to test your app on devices that support the new circular icons, to see how your circular app icons look and how they are displayed. One way to test your resources is to run the[Android emulator](https://developer.android.com/studio/run/emulator)and use a Google APIs Emulator System targeting API level 25. You can also test your icons by installing your app on a Google Pixel device.

For more information about designing app launcher icons, see the[Material Design guidelines](https://material.google.com/style/icons.html#icons-product-icons).

## Storage Manager Intent

Apps can now fire an`ACTION_MANAGE_STORAGE`intent, taking the user to the system's**Free up space**screen. For example, if an app requires more space than is currently available, it can use this intent to let the user delete unneeded apps and content to free up sufficient space.

## Improved VR Thread Scheduling

Android 7.1 provides new features to improve VR thread scheduling. This is useful since virtual reality apps are very latency sensitive.

Apps can now designate one thread as a VR thread. While the app is in[VR mode](https://developer.android.com/about/versions/nougat/android-7.0#vr), the system will schedule that thread more aggressively to minimize latency. A process may only have one VR thread at a time, and the system may subject that thread to restrictions on the amount of time it can run. The setting has no effect when the app is not in VR mode.

To designate a thread as a VR thread, call the new`ActivityManager.setVrThread()`method.

## Demo User Hint

Apps can now check to see if the device is running as the demo user.

Apps can call the new`UserManager.isDemoUser()`method to see if the app is running in a demo user sandbox. This allows apps to customize the starting experience to a potential customer. For example, when running as a demo user, an app might provide more assistance to the user, or explain its features in more detail.

## APIs for Carriers and Calling Apps

The system now provides new telephony features for carriers and telephone apps, including:

- Multi-endpoint calling
- CDMA voice privacy property
- Source type support for Visual Voicemail
- Carrier configuration options for managing video telephony

## New Screen Densities for Wear Devices

Android now supports several new screen densities for Wear devices, which more closely match some devices' physical specifications. This lets you fine-tune the graphics in your Wear apps to the screens they'll be displayed on, if necessary.

The new device densities are:

- `DENSITY_260`
- `DENSITY_300`
- `DENSITY_340`