1 page.title=Android 5.0 API 2 excludeFromSuggestions=true 3 sdk.platform.version=5.0 4 sdk.platform.apiLevel=21 5 @jd:body 6 7 8 <div id="qv-wrapper"> 9 <div id="qv"> 10 11 <h2> <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle"> <span class="more"></span><span class="less" style="display:none"></span></a></h2> 12 13 <ol id="toc44" class="hide-nested"> 14 <li><a href="#ApiLevel"> API </a></li> 15 <li><a href="#Behaviors"></a> 16 <ol> 17 <li><a href="#ART"> Android (ART) </a></li> 18 <li><a href="#BehaviorNotifications"></a></li> 19 <li><a href="#BehaviorMediaControl"> RemoteControlClient</a></li> 20 <li><a href="#BehaviorGetRecentTasks"> getRecentTasks()</a></li> 21 <li><a href="#64BitSupport"> Android (NDK)</a></li> 22 <li><a href="#BindService"></a></li> 23 <li><a href="#BehaviorWebView"> WebView</a></li> 24 </ol> 25 </li> 26 <li><a href="#UI"></a> 27 <ol> 28 <li><a href="#MaterialDesign">Material Design </a></li> 29 <li><a href="#Recents"></a></li> 30 <li><a href="#WebView">WebView </a></li> 31 <li><a href="#ScreenCapture"></a></li> 32 </ol> 33 </li> 34 <li><a href="#Notifications"></a> 35 <ol> 36 <li><a href="#LockscreenNotifications"></a></li> 37 <li><a href="#NotificationsMetadata"></a></li> 38 </ol> 39 </li> 40 <li><a href="#Graphics"></a> 41 <ol> 42 <li><a href="#OpenGLES-3-1"> OpenGL ES 3.1</a></li> 43 <li><a href="#AndroidExtensionPack">Android </a></li> 44 </ol> 45 </li> 46 <li><a href="#Media"></a> 47 <ol> 48 <li><a href="#Camera-v2"> API</a></li> 49 <li><a href="#AudioPlayback"></a></li> 50 <li><a href="#MediaPlaybackControl"></a></li> 51 <li><a href="#MediaBrowsing"></a></li> 52 </ol> 53 </li> 54 <li><a href="#Storage"></a> 55 <ol> 56 <li><a href="#DirectorySelection"></a></li> 57 </ol> 58 </li> 59 <li><a href="#Wireless"></a> 60 <ol> 61 <li><a href="#Multinetwork"></a></li> 62 <li><a href="#BluetoothBroadcasting"></a></li> 63 <li><a href="#NFCEnhancements">NFC </a></li> 64 </ol> 65 </li> 66 <li><a href="#Power">Project Volta</a> 67 <ol> 68 <li><a href="#JobScheduler"></a></li> 69 <li><a href="#PowerMeasurementTools"></a> 70 </ol> 71 </li> 72 <li><a href="#Enterprise">Android </a> 73 <ol> 74 <li><a href="#ManagedProvisioning"></a></li> 75 <li><a href="#DeviceOwner"></a></li> 76 <li><a href="#ScreenPinning"></a></li> 77 </ol> 78 </li> 79 <li><a href="#System"></a> 80 <ol> 81 <li><a href="#AppUsageStatistics"></a></li> 82 </ol> 83 </li> 84 <li><a href="#Printing"></a> 85 <ol> 86 <li><a href="#PDFRender"> PDF </a></li> 87 </ol> 88 </li> 89 <li><a href="#TestingA11y"></a> 90 <ol> 91 <li><a href="#TestingA11yImprovements"></a></li> 92 </ol> 93 </li> 94 <li><a href="#IME">IME</a> 95 <ol> 96 <li><a href="#Switching"></a></li> 97 </ol> 98 </li> 99 <li><a href="#Manifest"></a> 100 <ol> 101 <li><a href="#ManifestFeatures"></a></li> 102 <li><a href="#Permissions"></a></li> 103 </ol> 104 </li> 105 </ol> 106 107 <h2>API Differences</h2> 108 <ol> 109 <li><a href="{@docRoot}sdk/api_diff/21/changes.html">API level 20 to 21 »</a> </li> 110 <li><a href="{@docRoot}sdk/api_diff/preview-21/changes.html">L Developer Preview to 21 »</a> </li> 111 </ol> 112 113 <h2>See Also</h2> 114 <ol> 115 <li><a href="{@docRoot}about/versions/android-5.0-changes.html">Android 5.0 Behavior Changes</a> </li> 116 <li><a href="{@docRoot}about/versions/lollipop.html">Android Lollipop Highlights</a> </li> 117 </ol> 118 119 </div> 120 </div> 121 122 <p>API {@sdkPlatformApiLevel}</p> 123 124 <p>Android 5.0 (<a href="{@docRoot}reference/android/os/Build.VERSION_CODES.html#LOLLIPOP">LOLLIPOP</a>) API</p> 125 126 <p> <a href="{@docRoot}about/versions/lollipop.html">Android Lollipop </a></p> 127 128 129 <h3 id="Start"></h3> 130 131 <p> Android 5.0 <a href="{@docRoot}sdk/index.html"> Android SDK</a> <a href="{@docRoot}tools/help/sdk-manager.html">SDK </a> Android 5.0 SDK </p> 132 133 134 135 <h3 id="ApiLevel"> API </h3> 136 137 <p> Android {@sdkPlatformVersion} <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> <code>"{@sdkPlatformApiLevel}"</code> Android {@sdkPlatformVersion} </p> 138 139 <p> {@sdkPlatformVersion} API API <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> API<a href="{@docRoot}training/basics/supporting-devices/platforms.html"></a></p> 140 141 <p> API <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels"> API </a></p> 142 143 <h2 id="Behaviors"></h2> 144 145 <p> Android Android 5.0 </p> 146 147 <h3 id="ART"> Android (ART) </h3> 148 149 <p> 4.4 Android (ART) 4.4 ART Dalvik Android 5.0 ART</p> 150 151 <p> ART <a href="https://source.android.com/devices/tech/dalvik/art.html">ART </a></p> 152 153 <ul> 154 <li> (AOT) </li> 155 <li> (GC)</li> 156 <li></li> 157 </ul> 158 159 <p> Android ART Dalvik ART <a href="{@docRoot}guide/practices/verifying-apps-art.html"> Android (ART) </a></p> 160 161 <ul> 162 <li> Java (JNI) C/C++ </li> 163 <li></li> 164 <li> ART Android </li> 165 </ul> 166 167 <h3 id="BehaviorNotifications"></h3> 168 169 <p> Android 5.0 Android 5.0 <a href="{@docRoot}design/patterns/notifications.html"></a> 170 </p> 171 172 <h4 id="NotificationsMaterialDesignStyle">Material Design </h4> 173 <p> Material Design </p> 174 175 <ul> 176 <li> {@link android.app.Notification.Builder#setColor(int) setColor()} </li> 177 <li> Alpha Alpha </li> 178 </ul> 179 180 <h4 id="NotificationsSoundVibration"></h4> 181 <p> {@link android.media.Ringtone}{@link android.media.MediaPlayer} {@link android.os.Vibrator} <em></em> {@link android.app.Notification.Builder} </p> 182 183 <p> {@link android.media.AudioManager#RINGER_MODE_SILENT RINGER_MODE_SILENT} {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_NORMAL} {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_VIBRATE}</p> 184 185 <p>Android {@link android.media.AudioManager#STREAM_MUSIC STREAM_MUSIC} Android 5.0 {@link android.media.AudioManager#STREAM_RING STREAM_RING} {@link android.media.AudioManager#STREAM_NOTIFICATION STREAM_NOTIFICATION} </p> 186 187 <h4 id="NotificationsLockscreenVisibility"></h4> 188 <p> Android 5.0 {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}</p> 189 <p> {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} 190 </p> 191 192 <h4 id="NotificationsMediaPlayback"></h4> 193 <p> {@link android.app.Notification.MediaStyle} {@link android.widget.RemoteViews.RemoteView} {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} Android 5.0 {@link android.media.RemoteControlClient} <a href="#BehaviorMediaControl"> RemoteControlClient</a></p> 194 195 <h4 id="NotificationsHeadsup"></h4> 196 <p></p> 197 198 <p></p> 199 200 <ul> 201 <li> {@link android.app.Notification#fullScreenIntent}</li> 202 <li></li> 203 </ul> 204 205 <p></p> 206 207 <h3 id="BehaviorMediaControl"> RemoteControlClient</h3> 208 <p>{@link android.media.RemoteControlClient} {@link android.media.session.MediaSession} API</p> 209 210 <p> {@link android.media.session.MediaSession} {@link android.media.RemoteControlClient}Android 5.0 </p> 211 212 <p>Android 5.0 {@link android.app.Notification.MediaStyle} {@link android.app.Notification.MediaStyle} {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent) Notification.Builder.addAction()} {@link android.app.Notification.MediaStyle#setMediaSession(android.media.session.MediaSession.Token) setSession()} </p> 213 214 <p> {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}<a href="#LockscreenNotifications"></a></p> 215 216 <p> Android <a href="{@docRoot}tv/index.html">TV</a> <a href="{@docRoot}wear/index.html">Wear</a> {@link android.media.session.MediaSession} Android {@link android.media.session.MediaSession}</p> 217 218 <h3 id="BehaviorGetRecentTasks"> getRecentTasks()</h3> 219 220 <p><em></em> Android 5.0 <a href="#Recents"></a>{@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} {@link android.app.ActivityManager#getAppTasks() getAppTasks()} </p> 221 222 <h3 id="64BitSupport"> Android (NDK)</h3> 223 224 <p>Android 5.0 64 64 32 64 OpenSSL NDK API OpenGL ES (GLES) 3.1 </p> 225 226 <p> Android 5.0 64 <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK </a> NDK 10c NDK 10c <a href="{@docRoot}tools/sdk/ndk/index.html#Revisions"></a></p> 227 228 <h3 id="BindService"></h3> 229 230 <p>{@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} {@link android.content.Intent} intent {@link android.app.Service} intent intent </p> 231 232 <h3 id="BehaviorWebView"> WebView</h3> 233 234 <p>Android 5.0 </p> 235 <ul> 236 <li><strong> API 21</strong> 237 <ul> 238 <li><a href="https://developer.mozilla.org/en-US/docs/Security/MixedContent" class="external-link"></a> Cookie Cookie {@link android.webkit.WebSettings#setMixedContentMode(int) setMixedContentMode()} {@link android.webkit.CookieManager#setAcceptThirdPartyCookies(android.webkit.WebView, boolean) setAcceptThirdPartyCookies()} </li> 239 <li> HTML {@link android.webkit.WebView#enableSlowWholeDocumentDraw()} </li> 240 </ul> 241 </li> 242 <li><strong> API 21</strong> Cookie</li> 243 </ul> 244 245 <h2 id="UI"></h2> 246 247 <h3 id="MaterialDesign">Material Design </h3> 248 249 <p><em></em> Android Material Design Material Design </p> 250 251 <ul> 252 253 <li></li> 254 <li></li> 255 <li>{@link android.support.v7.widget.RecyclerView} </li> 256 <li></li> 257 <li>Material Design </li> 258 <li></li> 259 <li></li> 260 <li> XML </li> 261 </ul> 262 263 <p> Material Design <a href="{@docRoot}training/material/index.html">Material Design </a></p> 264 265 <h3 id="Recents"></h3> 266 267 <p><a href="{@docRoot}guide/components/recents.html"></a> {@link android.app.ActivityManager.AppTask} </p> 268 269 <p> {@link android.app.Activity#startActivity(android.content.Intent) startActivity()} {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a> {@code documentLaunchMode} {@code "intoExisting"} {@code "always"}</p> 270 271 <p> <a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a> {@link android.R.attr#maxRecents android:maxRecents} 50 RAM 25 </a></p> 272 273 <p> <a href="{@docRoot}reference/android/R.attr.html#persistableMode">android:persistableMode</a> {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()} </p> 274 275 <h3 id="WebView">WebView </h3> 276 <p>Android 5.0 {@link android.webkit.WebView} Chromium M37Android 5.0 {@link android.webkit.WebView} 37.0.0.0 </p> 277 278 <p> {@link android.webkit.PermissionRequest} <a href="https://developer.mozilla.org/en-US/docs/NavigatorUserMedia.getUserMedia" class="external-link">getUserMedia()</a> Web API {@link android.webkit.WebView} Android {@link android.webkit.WebView} </p> 279 280 <p> <code><a href="{@docRoot}reference/android/webkit/WebChromeClient.html#onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams)">onShowFileChooser()</a></code> {@link android.webkit.WebView} Android </p> 281 282 <p> <a href="http://webaudio.github.io/web-audio-api/" class="external-link">WebAudio</a><a href="https://www.khronos.org/webgl/" class="external-link">WebGL</a> <a href="http://www.webrtc.org/" class="external-link">WebRTC</a> <a href="https://developer.chrome.com/multidevice/webview/overview" class="external-link">Android WebView</a></p> 283 284 <h3 id="ScreenCapture"></h3> 285 <p> Android 5.0 {@link android.media.projection} API </p> 286 287 <p> {@link android.media.projection.MediaProjection#createVirtualDisplay(java.lang.String, int, int, int, int, android.view.Surface, android.hardware.display.VirtualDisplay.Callback, android.os.Handler) createVirtualDisplay()} {@link android.view.Surface} API {@link android.media.projection.MediaProjectionManager#createScreenCaptureIntent()} {@link android.content.Intent} </p> 288 289 <p> API {@code MediaProjectionDemo} </p> 290 291 <h2 id="Notifications"></h2> 292 293 <h3 id="LockscreenNotifications"></h3> 294 <p>Android 5.0 <em></em></p> 295 296 <p> {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} </p> 297 298 <ul> 299 <li>{@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE}</li> 300 <li>{@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}</li> 301 <li>{@link android.app.Notification#VISIBILITY_SECRET VISIBILITY_SECRET}</li> 302 </ul> 303 304 <p> {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE} 3 {@link android.app.Notification.Builder} {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} </p> 305 306 <h3 id="NotificationsMetadata"></h3> 307 <p>Android 5.0 {@link android.app.Notification.Builder} </p> 308 309 <ul> 310 <li>{@link android.app.Notification.Builder#setCategory(java.lang.String) setCategory()}<em></em> 311 <li>{@link android.app.Notification.Builder#setPriority(int) setPriority()} {@link android.app.Notification#PRIORITY_MAX PRIORITY_MAX} {@link android.app.Notification#PRIORITY_HIGH PRIORITY_HIGH} </li> 312 <li>{@link android.app.Notification.Builder#addPerson(java.lang.String) addPerson()}</li> 313 </ul> 314 315 <h2 id="Graphics"></h2> 316 317 <h3 id="OpenGLES-3-1"> OpenGL ES 3.1</h3> 318 <p>Android 5.0 OpenGL ES 3.1 Java OpenGL ES 3.1 </p> 319 320 <ul> 321 <li> 322 <li> 323 <li> 324 <li> 325 <li> 326 <li> 327 <li> OpenGL ES 2.0 3.0 328 </ul> 329 330 <p>Android OpenGL ES 3.1 Java {@link android.opengl.GLES31} OpenGL ES 3.1 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a> {@code android:glEsVersion} </p> 331 332 <pre> 333 <manifest> 334 <uses-feature android:glEsVersion="0x00030001" /> 335 ... 336 </manifest> 337 </pre> 338 339 <p> OpenGL ES OpenGL ES <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API </a></p> 340 341 <h3 id="AndroidExtensionPack">Android </h3> 342 343 <p> OpenGL ES 3.1 Java Android {@code ANDROID_extension_pack_es31a} {@code #extension} </p> 344 345 <p></p> 346 347 <ul> 348 <li> OpenGL ES 3.1 </li> 349 <li></li> 350 <li>ASTC (LDR) </li> 351 <li></li> 352 <li></li> 353 </ul> 354 355 <p> Java {@link android.opengl.GLES31Ext} </p> 356 357 <pre> 358 <manifest> 359 <uses-feature android:name=android.hardware.opengles.aep 360 android:required="true" /> 361 ... 362 </manifest> 363 </pre> 364 365 <h2 id="Media"></h2> 366 367 <h3 id="Camera-v2"> API</h3> 368 369 <p>Android 5.0 <a href="{@docRoot}reference/android/hardware/camera2/package-summary.html">android.hardware.camera2</a> API {@link android.hardware.camera2.CameraManager#getCameraIdList() getCameraIdList()} {@link android.hardware.camera2.CameraManager#openCamera(java.lang.String, android.hardware.camera2.CameraDevice.StateCallback, android.os.Handler) openCamera()} {@link android.hardware.camera2.CameraCaptureSession} {@link android.view.Surface} {@link android.hardware.camera2.CameraCaptureSession} </p> 370 371 <p> {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback#onCaptureCompleted(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.TotalCaptureResult) onCaptureCompleted()} {@link android.hardware.camera2.CaptureResult} </p> 372 373 <p>{@link android.hardware.camera2.CameraCharacteristics} {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} </p> 374 375 <ul> 376 <li> {@link android.hardware.camera2.CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY} {@link android.hardware.Camera} API </li> 377 <li> {@link android.hardware.camera2.CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL INFO_SUPPORTED_HARDWARE_LEVEL_FULL} </li> 378 </ul> 379 380 <p><a href="{@docRoot}reference/android/hardware/camera2/package-summary.html"></a> API {@code Camera2Basic} {@code Camera2Video} </p> 381 382 <h3 id="AudioPlayback"></h3> 383 <p> {@link android.media.AudioTrack} </p> 384 <ul> 385 <li> ({@link android.media.AudioFormat#ENCODING_PCM_FLOAT ENCODING_PCM_FLOAT}) Android 5.0 386 <li> {@link java.nio.ByteBuffer} {@link android.media.MediaCodec} 387 <li>{@link android.media.AudioTrack#WRITE_NON_BLOCKING WRITE_NON_BLOCKING} 388 </ul> 389 390 <h3 id="MediaPlaybackControl"></h3> 391 <p> API {@link android.media.session.MediaSession} {@link android.media.session.MediaController} </p> 392 393 <p> {@link android.media.session.MediaSession} {@link android.media.RemoteControlClient} Android <a href="{@docRoot}tv/index.html">TV</a> <a href="{@docRoot}wear/index.html">Wear</a> {@link android.media.session.MediaSession} </p> 394 395 <p> {@link android.media.session.MediaController} {@link android.media.session.MediaSession.Token} {@link android.media.session.MediaSession} {@link android.media.session.MediaController.TransportControls} {@link android.media.session.MediaController.TransportControls#play() play()}{@link android.media.session.MediaController.TransportControls#stop() stop()}{@link android.media.session.MediaController.TransportControls#skipToNext() skipToNext()} {@link android.media.session.MediaController.TransportControls#setRating(android.media.Rating) setRating()} {@link android.media.session.MediaController.Callback} </p> 396 397 <p> {@link android.app.Notification.MediaStyle} </p> 398 399 <h3 id="MediaBrowsing"></h3> 400 <p>Android 5.0 <a href="{@docRoot}reference/android/media/browse/package-summary.html">android.media.browse</a> API {@link android.service.media.MediaBrowserService} {@link android.service.media.MediaBrowserService} {@link android.media.session.MediaSession.Token} </p> 401 <p> {@link android.media.browse.MediaBrowser} {@link android.media.browse.MediaBrowser} {@link android.media.session.MediaSession} {@link android.media.session.MediaSession.Token} </p> 402 403 <h2 id="Storage"></h2> 404 405 <h3 id="DirectorySelection"></h3> 406 407 <p>Android 5.0 <a href="{@docRoot}guide/topics/providers/document-provider.html"></a>/</p> 408 409 <p> {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE} intent {@link android.provider.DocumentsProvider} URI {@link android.provider.DocumentsContract#buildChildDocumentsUriUsingTree(android.net.Uri, java.lang.String) buildChildDocumentsUriUsingTree()} {@link android.provider.DocumentsContract#buildDocumentUriUsingTree(android.net.Uri, java.lang.String) buildDocumentUriUsingTree()} {@link android.content.ContentResolver#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) query()} </p> 410 411 <p> {@link android.provider.DocumentsContract#createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String) createDocument()} {@link android.provider.DocumentsContract#renameDocument(android.content.ContentResolver, android.net.Uri, java.lang.String) renameDocument()} {@link android.provider.DocumentsProvider#deleteDocument(java.lang.String) deleteDocument()} {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} </p> 412 413 <p> {@link android.provider.DocumentsProvider} {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()} {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS} {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD}</p> 414 415 <p>Android 5.0 {@link android.provider.MediaStore} {@link android.content.Context#getExternalMediaDirs()} {@link android.content.Context#getExternalFilesDir(java.lang.String) getExternalFilesDir()} {@link android.media.MediaScannerConnection} </p> 416 417 <h2 id="Wireless"></h2> 418 419 <h3 id="Multinetwork"></h3> 420 <p>Android 5.0 API SUPLMMS </p> 421 422 <p></p> 423 424 <ol> 425 <li> {@link android.net.ConnectivityManager}</li> 426 <li> {@link android.net.NetworkRequest.Builder} {@link android.net.NetworkRequest} </li> 427 <li> {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()} {@link android.net.NetworkRequest} {@link android.net.ConnectivityManager.NetworkCallback} {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()} </li> 428 </ol> 429 430 <p> {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} {@link android.net.Network} </p> 431 432 <h3 id="BluetoothBroadcasting"></h3> 433 <p>Android 4.3 <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html"></a><em></em> Android 5.0 Android <em></em></p> 434 <p> {@link android.bluetooth.le} API {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} Play </p> 435 436 <p> {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} {@link android.bluetooth.le.AdvertiseCallback} </p> 437 438 <p> Android 5.0 {@link android.bluetooth.le.ScanFilter} {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} {@link android.bluetooth.le.ScanCallback} </p> 439 440 <h3 id="NFCEnhancements">NFC </h3> 441 <p>Android 5.0 NFC </p> 442 443 <ul> 444 <li><em></em> Android Beam</li> 445 <li> {@link android.nfc.NfcAdapter#invokeBeam(android.app.Activity) invokeBeam()} Android Beam NFC </li> 446 <li> {@link android.nfc.NdefRecord#createTextRecord(java.lang.String, java.lang.String) createTextRecord()} UTF-8 NDEF </li> 447 <li> <code><a href="{@docRoot}reference/android/nfc/cardemulation/CardEmulation.html#registerAidsForService(android.content.ComponentName, java.lang.String, java.util.List<java.lang.String>)">registerAidsForService()</a></code> NFC ID (AID) {@link android.nfc.cardemulation.CardEmulation#setPreferredService(android.app.Activity, android.content.ComponentName) setPreferredService()} </li> 448 </ul> 449 450 <h2 id="Power">Project Volta</h2> 451 452 <p>Android 5.0 API </p> 453 454 <h3 id="JobScheduler"></h3> 455 <p>Android 5.0 {@link android.app.job.JobScheduler} API</p> 456 <ul> 457 <li></li> 458 <li></li> 459 <li> Wi-Fi </li> 460 <li></li> 461 462 </ul> 463 464 <p> {@link android.app.job.JobInfo} </p> 465 466 <p> {@link android.app.job.JobInfo.Builder} </p> 467 468 <ul> 469 <li></li> 470 <li></li> 471 <li></li> 472 <li></li> 473 </ul> 474 475 <p></p> 476 477 <pre> 478 JobInfo uploadTask = new JobInfo.Builder(mJobId, 479 mServiceComponent /* JobService component */) 480 .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED) 481 .build(); 482 JobScheduler jobScheduler = 483 (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); 484 jobScheduler.schedule(uploadTask); 485 </pre> 486 487 <p> 2 <a href="{@docRoot}reference/android/content/Intent.html#ACTION_BATTERY_OKAY"></a></p> 488 489 <p> {@link android.app.job.JobScheduler} API {@code JobSchedulerSample} </p> 490 491 <h3 id="PowerMeasurementTools"></h3> 492 493 <p> {@code dumpsys batterystats} ID (UID) </p> 494 495 <ul> 496 <li> 497 <li> 498 <li> UID 499 <li> 500 <li> UID 501 <li> UID 502 </ul> 503 504 <p> {@code --help} 505 <pre> 506 $ adb shell dumpsys batterystats --charged <package-name> 507 </pre> 508 509 <p> {@code dumpsys} <a href="https://github.com/google/battery-historian" class="external-link">Battery Historian</a> HTML </p> 510 511 <h2 id="Enterprise"> Android</h2> 512 <h3 id="ManagedProvisioning"></h3> 513 514 <p>Android 5.0 <a href="{@docRoot}guide/topics/admin/device-admin.html"></a><em></em></p> 515 516 <p> {@link android.content.Intent} {@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE ACTION_PROVISION_MANAGED_PROFILE} {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete(android.content.Context, android.content.Intent) onProfileProvisioningComplete()} {@link android.app.admin.DevicePolicyManager#setProfileEnabled(android.content.ComponentName) setProfileEnabled()} </p> 517 518 <p> {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()} </p> 519 520 <p> {@link android.content.pm.LauncherApps} {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}</p> 521 522 <p> {@code BasicManagedProfile} </p> 523 524 <h3 id="DeviceOwner"></h3> 525 <p>Android 5.0 <em></em><a href="{@docRoot}guide/topics/admin/device-admin.html"></a> {@link android.app.admin.DevicePolicyManager} </p> 526 527 <p> NFC <a href="#ManagedProvisioning"></a> intent </p> 528 529 <h3 id="ScreenPinning"></h3> 530 531 <p>Android 5.0 API Android </p> 532 533 <p></p> 534 535 <ul> 536 <li><strong></strong>>><em></em></li> <li><strong></strong> {@link android.app.Activity#startLockTask() startLockTask()} {@link android.app.admin.DevicePolicyManager#setLockTaskPackages(android.content.ComponentName, java.lang.String[]) setLockTaskPackages()} </li> 537 </ul> 538 539 <p></p> 540 541 <ul> 542 <li></li> 543 <li></li> 544 <li></li> 545 <li></li> 546 <li> {@link android.app.Activity#stopLockTask() stopLockTask()}</li> 547 <li></li> 548 549 </ul> 550 551 <h2 id="Printing"></h2> 552 553 <h3 id="PDFRender"> PDF </h3> 554 <p> {@link android.graphics.pdf.PdfRenderer} PDF {@link android.os.ParcelFileDescriptor} {@link android.graphics.pdf.PdfRenderer#openPage(int) openPage()} {@link android.graphics.pdf.PdfRenderer.Page#render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, int) render()} {@link android.graphics.pdf.PdfRenderer.Page} <a href="http://en.wikipedia.org/wiki/Tiled_rendering" class="external-link"></a></p> 555 556 <p> API {@code PdfRendererBasic} </p> 557 558 <h2 id="System"></h2> 559 <h3 id="AppUsageStatistics"></h3> 560 <p> {@link android.app.usage} API Android API {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()} API {@code "android.permission.PACKAGE_USAGE_STATS"} >><em></em></p> 561 562 <p></p> 563 564 <ul> 565 <li>7 </li> 566 <li>4 </li> 567 <li>6 </li> 568 <li>2 </li> 569 </ul> 570 571 <p></p> 572 <ul> 573 <li></li> 574 <li></li> 575 <li></li> 576 <li></li> 577 </ul> 578 579 <h2 id="TestingA11y"> </h2> 580 581 <h3 id="TestingA11yImprovements"></h3> 582 <p>Android 5.0 </p> 583 584 <ul> 585 <li> {@link android.app.UiAutomation#getWindowAnimationFrameStats() getWindowAnimationFrameStats()} {@link android.app.UiAutomation#getWindowContentFrameStats(int) getWindowContentFrameStats()} </li> 586 587 <li> {@link android.app.UiAutomation#executeShellCommand(java.lang.String) executeShellCommand()} shell {@code adb shell} shell {@code dumpsys}{@code am} {@code content} {@code pm}</li> 588 589 <li> API <a href="{@docRoot}tools/help/uiautomator/index.html">{@code UiAutomator}</a> {@link android.view.accessibility.AccessibilityWindowInfo} {@link android.accessibilityservice.AccessibilityService#getWindows() getWindows()} </li> 590 591 <li> {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction} {@link android.view.accessibility.AccessibilityNodeInfo} {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction} {@link android.view.accessibility.AccessibilityNodeInfo} API</li> 592 593 <li>Android 5.0 {@link android.speech.tts.Voice} </li> 594 </ul> 595 596 <h2 id="IME">IME</h2> 597 598 <h3 id="Switching"></h3> 599 600 <p> Android 5.0 <a href="{@docRoot}guide/topics/text/creating-input-method.html"> (IME)</a> IME {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()} </p> 601 602 <p> IME IME IME IME IME {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()} 603 604 <p> IME API IME <a href="{@docRoot}guide/topics/text/creating-input-method.html"></a> 605 </p> 606 607 <h2 id="Manifest"></h2> 608 609 <h3 id="ManifestFeatures"></h3> 610 <p><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a> </p> 611 612 <ul> 613 <li>{@link android.content.pm.PackageManager#FEATURE_AUDIO_OUTPUT}</li> 614 <li>{@link android.content.pm.PackageManager#FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING}</li> 615 <li>{@link android.content.pm.PackageManager#FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR}</li> 616 <li>{@link android.content.pm.PackageManager#FEATURE_CAMERA_CAPABILITY_RAW}</li> 617 <li>{@link android.content.pm.PackageManager#FEATURE_CAMERA_LEVEL_FULL}</li> 618 <li>{@link android.content.pm.PackageManager#FEATURE_GAMEPAD}</li> 619 <li>{@link android.content.pm.PackageManager#FEATURE_LIVE_TV}</li> 620 <li>{@link android.content.pm.PackageManager#FEATURE_MANAGED_USERS}</li> 621 <li>{@link android.content.pm.PackageManager#FEATURE_LEANBACK}</li> 622 <li>{@link android.content.pm.PackageManager#FEATURE_OPENGLES_EXTENSION_PACK}</li> 623 <li>{@link android.content.pm.PackageManager#FEATURE_SECURELY_REMOVES_USERS}</li> 624 <li>{@link android.content.pm.PackageManager#FEATURE_SENSOR_AMBIENT_TEMPERATURE}</li> 625 <li>{@link android.content.pm.PackageManager#FEATURE_SENSOR_HEART_RATE_ECG}</li> 626 <li>{@link android.content.pm.PackageManager#FEATURE_SENSOR_RELATIVE_HUMIDITY}</li> 627 <li>{@link android.content.pm.PackageManager#FEATURE_VERIFIED_BOOT}</li> 628 <li>{@link android.content.pm.PackageManager#FEATURE_WEBVIEW}</li> 629 </ul> 630 631 <h3 id="Permissions"></h3> 632 633 <p><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">{@code <uses-permission>}</a> API </p> 634 635 <ul> 636 <li>{@link android.Manifest.permission#BIND_DREAM_SERVICE} API 21 <a href="{@docRoot}about/versions/android-4.2.html#Daydream">Daydream</a> </li> 637 </ul> 638