Show navigation Hide navigation

What's New

The following code samples were recently published. You can download them in the Android SDK Manager under the SDK Samples component for API 21.

Note: The downloadable projects are designed for use with Gradle and Android Studio.

Media Browser Service

This sample is a simple audio media app that exposes its media library and provides metadata and playback controls through the new MediaBrowserService and MediaSession APIs from API 21. The sample is compatible with Android Auto and also provides a basic UI when not connected to a car.

Note: This sample is compatible with Android Auto.

Messaging Service

This sample shows a simple service that sends notifications using NotificationCompat. In addition to sending a notification, it also extends the notification with a CarExtender to make it compatible with Android Auto. Each unread conversation from a user is sent as a distinct notification.

Note: This sample is compatible with Android Auto.

Speed Tracker (Wear)

This sample uses the FusedLocation APIs of Google Play Services on Android Wear devices that have a hardware GPS built in. In those cases, this sample provides a simple screen that shows the current speed of the wearable device. User can set a speed limit and if the speed approaches that limit, it changes the color to yellow and if it exceeds the limit, it turns red. User can also enable recording of coordinates and when it pairs back with the phone, this data is synced with the phone component of the app and user can see a track made of those coordinates on a map on the phone.


This sample shows how to use app restrictions. This application has one boolean restriction with a key "can_say_hello" that defines whether the only feature of this app (press the button to show "Hello" message) is enabled or disabled. Use AppRestrictionEnforcer sample to toggle the restriction.


This sample demonstrates how to set restrictions to other apps as a profile owner. Use AppRestrictionSchema sample as a app with available restrictions.


This sample shows how to relinquish identity to activities above it in the task stack.


This sample shows the basic usage of the new "Document Centric Apps" API. It let's you create new documents in the system overview menu and persists its state through reboots. If "Task per document" is checked a new task will be created for every new document in the overview menu.


This demo implements a real-time high-dynamic-range camera viewfinder, by alternating the sensor's exposure time between two exposure values on even and odd frames, and then compositing together the latest two frames whenever a new frame is captured.


This sample demonstrates the use of animation interpolators and path animations for Material Design. It shows how an ObjectAnimator is used to animate two properties of a view (scale X and Y) along a path.


Sample that shows applying tinting and color filters to Drawables both programmatically and as Drawable resources in XML.

Tinting is set on a nine-patch drawable through the "tint" and "tintMode" parameters. A color state list is referenced as the tint color, which defines colors for different states of a View (for example disabled/enabled, focused, pressed or selected).

Programmatically, tinting is applied to a Drawable through its "setColorFilter" method, with a reference to a color and a PorterDuff blend mode. The color and blend mode can be changed from the UI to see the effect of different options.


This sample demonstrates how new features for notifications introduced in Android 5.0 are used such as Heads-Up notifications, visibility, people, category and priority metadata.


This sample demonstrates how to use the CardView UI widget introduced in Android 5.0, using the support library for backward compatibility.


Demonstration of using RecyclerView with a LayoutManager to create a vertical ListView.


A sample demonstrating how to perform a reveal effect for UI elements within the Material Design framework.


This sample shows the two sizes of Floating Action Buttons and how to interact with them.


This sample app allows the user to schedule jobs through the UI, and shows visual cues when the jobs are executed.


This sample demonstrates use of the Android TV Leanback Support Library.


This sample displays events received from a game controller shown on the screen.


This sample implements a multi-player game, demonstrating game controller input handling.


This sample demonstrates clipping on a View.

Figure 1. The JobSchedulerSample sample app.


This sample demonstrates a drag and drop action on different shapes. Elevation and z-translation are used to render the shadows. The views are clipped using different outlines.


This sample demonstrates two alternative ways to move a view in the z-axis:

  • With a fixed elevation, using XML.
  • Raising the elevation when the user taps on it, using setTranslationZ().


Figure 2. The ActivitySceneTransitionBasic sample app.

This sample demonstrates how to the use Activity scene transitions when transitioning from one activity to another. Uses a combination of moveImage and changeBounds to nicely transition from a grid of images to an activity with a large image and detail text.


This sample demonstrates how to record video using the Camera2 API.


This sample demonstrates the basic use of the Camera2 API. The sample code demonstrates how you can display camera preview and take pictures.


Figure 3. The BasicManagedProfile sample app.

This sample demonstrates how to create a managed profile. You can also:

  • Enable or disable other apps, and set restrictions on them.
  • Configure intents to be forwarded between the primary account and the managed profile.
  • Wipe all the data associated with the managed profile.

Note: There can be only one managed profile on a device at a time.