From d28a49fb73d0e6604aee482273c54dc1a54982cc Mon Sep 17 00:00:00 2001 From: David Friedman Date: Wed, 19 Nov 2014 13:03:45 -0800 Subject: Localization of high-level Android 5.0 pages: ja, ko, ru, es-419, pt-br, zh-cn, zh-tw Change-Id: I6555b9894a9ae4dc9365f21b40a75627fb7ed63f --- .../intl/es/about/versions/android-5.0.jd | 635 ++++++++++++++++++++ docs/html-intl/intl/es/about/versions/lollipop.jd | 249 ++++++++ .../intl/ja/about/versions/android-5.0.jd | 635 ++++++++++++++++++++ docs/html-intl/intl/ja/about/versions/lollipop.jd | 256 +++++++++ .../intl/ko/about/versions/android-5.0.jd | 636 +++++++++++++++++++++ docs/html-intl/intl/ko/about/versions/lollipop.jd | 246 ++++++++ .../intl/pt-br/about/versions/android-5.0.jd | 633 ++++++++++++++++++++ .../intl/pt-br/about/versions/lollipop.jd | 256 +++++++++ .../intl/ru/about/versions/android-5.0.jd | 636 +++++++++++++++++++++ docs/html-intl/intl/ru/about/versions/lollipop.jd | 251 ++++++++ .../intl/zh-cn/about/versions/android-5.0.jd | 14 +- .../intl/zh-tw/about/versions/android-5.0.jd | 635 ++++++++++++++++++++ .../intl/zh-tw/about/versions/lollipop.jd | 254 ++++++++ 13 files changed, 5332 insertions(+), 4 deletions(-) create mode 100644 docs/html-intl/intl/es/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/es/about/versions/lollipop.jd create mode 100644 docs/html-intl/intl/ja/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/ja/about/versions/lollipop.jd create mode 100644 docs/html-intl/intl/ko/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/ko/about/versions/lollipop.jd create mode 100644 docs/html-intl/intl/pt-br/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/pt-br/about/versions/lollipop.jd create mode 100644 docs/html-intl/intl/ru/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/ru/about/versions/lollipop.jd create mode 100644 docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd create mode 100644 docs/html-intl/intl/zh-tw/about/versions/lollipop.jd (limited to 'docs/html-intl/intl') diff --git a/docs/html-intl/intl/es/about/versions/android-5.0.jd b/docs/html-intl/intl/es/about/versions/android-5.0.jd new file mode 100644 index 0000000..c94a140 --- /dev/null +++ b/docs/html-intl/intl/es/about/versions/android-5.0.jd @@ -0,0 +1,635 @@ +page.title=API de Android 5.0 +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

En este documento mostrar más

+ +
    +
  1. Actualiza el nivel de la API de destino
  2. +
  3. Cambios importantes de comportamiento +
      +
    1. Si no probaste la aplicación con el nuevo Android Runtime (ART)…
    2. +
    3. Si la aplicación implementa notificaciones…
    4. +
    5. Si la aplicación usa RemoteControlClient…
    6. +
    7. Si la aplicación usa getRecentTasks()…
    8. +
    9. Si usas el kit de desarrollo nativo (NDK) de Android…
    10. +
    11. Si la aplicación se vincula a un servicio…
    12. +
    13. Si la aplicación usa WebView…
    14. +
    +
  4. +
  5. Interfaz de usuario +
      +
    1. Compatibilidad con diseño de materiales
    2. +
    3. Documentos y actividades concurrentes en la pantalla de actividades y tareas recientes
    4. +
    5. Actualizaciones de WebView
    6. +
    7. Captura y uso compartido de pantalla
    8. +
    +
  6. +
  7. Notificaciones +
      +
    1. Notificaciones de pantalla bloqueada
    2. +
    3. Metadatos de notificaciones
    4. +
    +
  8. +
  9. Gráficos +
      +
    1. Compatibilidad con OpenGL ES 3.1
    2. +
    3. Android Extension Pack
    4. +
    +
  10. +
  11. Medios +
      +
    1. API de cámara para capacidades avanzadas de la cámara
    2. +
    3. Reproducción de audio
    4. +
    5. Control de reproducción de medios
    6. +
    7. Exploración de medios
    8. +
    +
  12. +
  13. Almacenamiento +
      +
    1. Selección de directorio
    2. +
    +
  14. +
  15. Redes inalámbricas y conectividad +
      +
    1. Múltiples conexiones de red
    2. +
    3. Emisión de Bluetooth
    4. +
    5. Mejoras de NFC
    6. +
    +
  16. +
  17. Proyecto Volta +
      +
    1. Programación de trabajos
    2. +
    3. Herramientas de programadores para el uso de la batería +
    +
  18. +
  19. Android en el entorno de trabajo y en el entorno educativo +
      +
    1. Aprovisionamiento administrado
    2. +
    3. Propietario de dispositivo
    4. +
    5. Fijación de pantalla
    6. +
    +
  20. +
  21. Sistema +
      +
    1. Estadísticas de uso de aplicaciones
    2. +
    +
  22. +
  23. Marco de impresión +
      +
    1. Representación de PDF como mapa de bits
    2. +
    +
  24. +
  25. Pruebas y accesibilidad +
      +
    1. Mejoras de pruebas y accesibilidad
    2. +
    +
  26. +
  27. IME +
      +
    1. Cambio más sencillo de idiomas de entrada
    2. +
    +
  28. +
  29. Declaraciones de manifiesto +
      +
    1. Características requeridas declarables
    2. +
    3. Permisos de usuario
    4. +
    +
  30. +
+ +

API Differences

+
    +
  1. API level 20 to 21 »
  2. +
  3. L Developer Preview to 21 »
  4. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
  4. +
+ +
+
+ +

Nivel de API: {@sdkPlatformApiLevel}

+ +

Android 5.0 (LOLLIPOP) ofrece nuevas funciones para los usuarios y los programadores de aplicaciones. En este documento, se proporciona una introducción a las API nuevas más destacadas.

+ +

Para conocer con más detalle las nuevas funciones de la plataforma, consulta los Aspectos destacados de Android Lollipop.

+ + +

Empieza a programar

+ +

Si deseas empezar a crear aplicaciones para Android 5.0, primero debes obtener el SDK de Android. Luego, usa el Administrador de SDK para descargar las imágenes del sistema y la plataforma de SDK de Android 5.0.

+ +

Actualiza el nivel de la API de destino

+ +

Si deseas optimizar de una mejor manera la aplicación para dispositivos que tienen Android {@sdkPlatformVersion}, establece {@code targetSdkVersion} en "{@sdkPlatformApiLevel}", instala la aplicación en una imagen del sistema de Android {@sdkPlatformVersion}, pruébala y luego publica la aplicación actualizada con este cambio.

+ +

Puedes usar API de Android {@sdkPlatformVersion}, además de admitir versiones anteriores, agregando condiciones al código que comprueban el nivel de la API del sistema antes de ejecutar API no admitidas por {@code minSdkVersion}. Para obtener más información sobre el mantenimiento de la compatibilidad con versiones anteriores, consulta Compatibilidad con versiones de plataforma diferentes.

+ +

Para obtener más información sobre el funcionamiento de los niveles de API, consulta ¿Qué es un nivel de API?

+ +

Cambios importantes de comportamiento

+ +

Si publicaste previamente una aplicación para Android, ten en cuenta que la aplicación podría verse afectada por los cambios en Android 5.0.

+ +

Si no probaste la aplicación con el nuevo Android Runtime (ART)…

+ +

La versión 4.4 introdujo un nuevo tiempo de ejecución experimental de Android, ART. En la versión 4.4, ART era opcional, y el tiempo de ejecución predeterminado seguía siendo Dalvik. Con Android 5.0, ART ahora es el tiempo de ejecución predeterminado.

+ +

Para obtener una descripción general de las nuevas funciones de ART, consulta Introducción a ART. Algunas de las principales funciones nuevas son las siguientes:

+ + + +

La mayoría de las aplicaciones de Android deberían funcionar sin ningún tipo de cambio en ART. Sin embargo, algunas de las técnicas que funcionan en Dalvik no funcionan en ART. Para obtener información sobre los problemas más significativos, consulta Verificación de comportamiento de aplicaciones en Android Runtime (ART). Presta especial atención en los siguientes casos:

+ + + +

Si la aplicación implementa notificaciones…

+ +

Asegúrate de que las notificaciones tengan en cuenta estos cambios de Android 5.0. Para obtener más información sobre el diseño de las notificaciones para Android 5.0 o versiones posteriores, consulta la guía de diseño de notificaciones. +

+ +

Estilo de diseño de materiales

+

Las notificaciones se crean con texto oscuro sobre fondo blanco (o muy claro) para que coincidan con los nuevos widgets de diseño de materiales. Asegúrate de que todas las notificaciones se vean bien con el nuevo esquema de colores. Si las notificaciones se ven mal, corrígelas:

+ + + +

Sonido y vibración

+

Si actualmente estás agregando sonidos y vibraciones a las notificaciones mediante el uso de las clases {@link android.media.Ringtone}, {@link android.media.MediaPlayer} o {@link android.os.Vibrator}, elimina este código para que el sistema pueda presentar notificaciones de forma correcta en modo de prioridad. En su lugar, usa los métodos {@link android.app.Notification.Builder} para agregar sonidos y vibraciones.

+ +

Configurar el dispositivo en {@link android.media.AudioManager#RINGER_MODE_SILENT RINGER_MODE_SILENT} hace que el dispositivo pase al nuevo modo de prioridad. El dispositivo sale del modo de prioridad si lo estableces en {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_NORMAL} o {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_VIBRATE}.

+ +

Anteriormente, Android usaba {@link android.media.AudioManager#STREAM_MUSIC STREAM_MUSIC} como la secuencia maestra para controlar el volumen de las tablets. En Android 5.0, la secuencia maestra de volumen tanto para teléfonos como para tablets ahora está unificada y controlada por {@link android.media.AudioManager#STREAM_RING STREAM_RING} o {@link android.media.AudioManager#STREAM_NOTIFICATION STREAM_NOTIFICATION}.

+ +

Visibilidad de la pantalla bloqueada

+

De forma predeterminada, las notificaciones ahora aparecen en la pantalla bloqueada del usuario en Android 5.0. Los usuarios pueden elegir proteger la información confidencial de dicha exposición, en cuyo caso el sistema redacta automáticamente el texto que aparece en la notificación. Para personalizar esta notificación redactada, usa {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+

Si la notificación no contiene información personal o si deseas permitir el control de la reproducción de medios en la notificación, llama al método {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} y establece el nivel de visibilidad de la notificación en {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}. +

+ +

Reproducción de los medios

+

Si implementas notificaciones que presentan controles de transporte o estado de reproducción de medios, considera el uso de la nueva plantilla {@link android.app.Notification.MediaStyle}, en lugar de un objeto {@link android.widget.RemoteViews.RemoteView} personalizado. Cualquiera sea el enfoque que elijas, asegúrate de establecer la visibilidad de la notificación en {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} a fin de que los controles estén accesibles desde la pantalla bloqueada. Ten en cuenta que, a partir de Android 5.0, el sistema ya no muestra objetos {@link android.media.RemoteControlClient} en la pantalla bloqueada. Para obtener más información, consulta Si la aplicación usa RemoteControlClient.

+ +

Notificación de aviso

+

Las notificaciones ahora pueden aparecer en una pequeña ventana flotante (también denominada notificación de aviso) cuando el dispositivo está activo (es decir, el dispositivo está desbloqueado y su pantalla está encendida). Estas notificaciones son similares a la forma compacta de tu notificación, salvo que la notificación de aviso también muestra los botones de acción. Los usuarios pueden actuar sobre una notificación de aviso o descartarla sin salir de la aplicación actual.

+ +

Algunos ejemplos de condiciones que pueden desencadenar notificaciones de aviso incluyen:

+ + + +

Si la aplicación implementa notificaciones en cualquiera de esos escenarios, asegúrate de que las notificaciones de aviso se presenten correctamente.

+ +

Si la aplicación usa RemoteControlClient…

+

La clase {@link android.media.RemoteControlClient} ahora está obsoleta. Cambia a la nueva API {@link android.media.session.MediaSession} tan pronto como sea posible.

+ +

Las pantallas bloqueadas en Android 5.0 no muestran controles de transporte para {@link android.media.session.MediaSession} ni {@link android.media.RemoteControlClient}. En cambio, la aplicación puede proporcionar un control de la reproducción de los medios desde la pantalla bloqueada a través de una notificación. De este modo, la aplicación tiene un mayor control sobre la presentación de los botones de medios, al mismo tiempo que proporciona una experiencia uniforme para los usuarios a través de los dispositivos bloqueados y desbloqueados.

+ +

Android 5.0 introduce una nueva plantilla {@link android.app.Notification.MediaStyle} para este fin. {@link android.app.Notification.MediaStyle} convierte acciones de notificación que agregas con {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent) Notification.Builder.addAction()} en botones compactos integrados en las notificaciones de reproducción de medios de la aplicación. Pasa el token de sesión al método {@link android.app.Notification.MediaStyle#setMediaSession(android.media.session.MediaSession.Token) setSession()} para informar al sistema que esta notificación controla una sesión de medios en curso.

+ +

Asegúrate de establecer la visibilidad de la notificación en {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} para marcar la notificación como segura y mostrarla en cualquier pantalla bloqueada (segura o de otra manera). Para obtener más información, consulta Notificaciones de pantalla bloqueada.

+ +

Para mostrar los controles de reproducción de medios si la aplicación se está ejecutando en la plataforma de Android TV o Android Wear, implementa la clase {@link android.media.session.MediaSession}. También debes implementar {@link android.media.session.MediaSession} si la aplicación necesita recibir eventos de botones de medios en dispositivos Android.

+ +

Si la aplicación usa getRecentTasks()…

+ +

Con la introducción de la nueva función de tareas de documentos y actividades concurrentes en Android 5.0 (consulta Documentos y actividades concurrentes en la pantalla de actividades y tareas recientes a continuación), el método {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} ahora está obsoleto para mejorar la privacidad del usuario. En el caso de la compatibilidad con versiones anteriores, este método sigue devolviendo un pequeño subconjunto de sus datos, que incluye algunas tareas propias de la aplicación que llama y, posiblemente, algunas otras tareas no confidenciales (como Página principal). Si la aplicación usa este método para recuperar sus propias tareas, usa {@link android.app.ActivityManager#getAppTasks() getAppTasks()} en su lugar para recuperar esa información.

+ +

Si usas el kit de desarrollo nativo (NDK) de Android…

+ +

Android 5.0 introduce compatibilidad con sistemas de 64 bits. La mejora de 64 bits aumenta el espacio de direcciones y mejora el rendimiento, al mismo tiempo que mantiene la compatibilidad absoluta con las aplicaciones de 32 bits existentes. La compatibilidad con 64 bits también mejora el rendimiento de OpenSSL para la criptografía. Además, esta versión introduce nuevas API de NDK de medios nativas, así como compatibilidad nativa con la OpenGL ES (GLES) 3.1.

+ +

Para usar la compatibilidad con 64 bits proporcionada en Android 5.0, descarga e instala la revisión 10c de NDK desde la página de NDK de Android. Consulta las notas de la versión de la revisión 10c para obtener más información acerca de los cambios y las correcciones de errores importantes en el NDK.

+ +

Si la aplicación se vincula a un servicio…

+ +

El método {@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} ahora requiere un {@link android.content.Intent} explícito y genera una excepción si se realiza un intento implícito. Para asegurarte de que la aplicación sea segura, usa un intento explícito al iniciar o vincular tu {@link android.app.Service}, y no declares filtros de intención para el servicio.

+ +

Si la aplicación usa WebView…

+ +

Android 5.0 cambia el comportamiento predeterminado de la aplicación.

+ + +

Interfaz de usuario

+ +

Compatibilidad con diseño de materiales

+ +

La próxima versión agrega compatibilidad con el nuevo estilo de diseño de materiales de Android. Puedes crear aplicaciones con diseño de materiales que sean visualmente dinámicas y tengan transiciones de elementos de interfaz de usuario que parezcan reales para los usuarios. Esta compatibilidad incluye lo siguiente:

+ + + +

Para obtener más información sobre la adición de la funcionalidad de diseño de materiales a la aplicación, consulta Diseño de materiales.

+ +

Documentos y actividades concurrentes en la pantalla de actividades y tareas recientes

+ +

En versiones anteriores, la pantalla de actividades y tareas recientes solo podía mostrar una tarea para cada aplicación con la que el usuario había interaccionado recientemente. Si es necesario, ahora la aplicación puede abrir más tareas para actividades y documentos concurrentes adicionales. Esta función facilita la multitarea, ya que permite a los usuarios cambiar rápidamente entre las actividades y los documentos individuales de la pantalla de actividades y tareas recientes, y brinda una experiencia de cambio uniforme entre todas las aplicaciones. Algunos ejemplos de este tipo de tareas concurrentes pueden incluir pestañas abiertas en una aplicación de navegador web, documentos en una aplicación de productividad, partidos concurrentes en un juego o chats en una aplicación de mensajería. La aplicación puede administrar sus tareas a través de la clase {@link android.app.ActivityManager.AppTask}.

+ +

Para insertar un salto lógico a fin de que el sistema trate la actividad como una nueva tarea, usa {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} al iniciar la actividad con {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}. También puedes obtener este comportamiento estableciendo el atributo {@code documentLaunchMode} del elemento de <actividad> en {@code "intoExisting"} o {@code "always"} en tu manifiesto.

+ +

Para evitar la saturación de la pantalla de actividades y tareas recientes, puedes establecer la cantidad máxima de tareas de la aplicación que pueden aparecer en esa pantalla. Para hacerlo, establece el atributo {@link android.R.attr#maxRecents android:maxRecents} de la <aplicación>. La cantidad máxima actual que se puede especificar es de 50 tareas por usuario (25 para dispositivos con baja memoria RAM).

+ +

Las tareas en la pantalla de actividades y tareas recientes se pueden configurar para que se mantengan tras los reinicios. Para controlar el comportamiento de persistencia, usa el atributo android:persistableMode. También puedes cambiar las propiedades visuales de una actividad en la pantalla de actividades y tareas recientes, como el color, la etiqueta y el ícono de la actividad, llamando al método {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()}.

+ +

Actualizaciones de WebView

+

Android 5.0 actualiza la implementación de {@link android.webkit.WebView} a Chromium M37, que incorpora mejoras de seguridad y estabilidad, así como correcciones de errores. Se actualizó la cadena de usuario-agente predeterminada de una {@link android.webkit.WebView} que se ejecuta en Android 5.0 para incorporar 37.0.0.0 como el número de versión.

+ +

Esta versión introduce la clase {@link android.webkit.PermissionRequest}, que permite a la aplicación conceder el permiso {@link android.webkit.WebView} para acceder a los recursos protegidos, como la cámara y el micrófono, a través de las API web, como getUserMedia(). La aplicación debe tener los permisos apropiados de Android para estos recursos con el fin de otorgar los permisos a {@link android.webkit.WebView}.

+ +

Con el nuevo método onShowFileChooser(), ahora puedes usar un campo de formulario de entrada en {@link android.webkit.WebView} y abrir un selector de archivos para seleccionar imágenes y archivos desde el dispositivo Android.

+ +

Además, esta versión admite los estándares abiertos WebAudio, WebGL y WebRTC. Para obtener más información sobre las nuevas funciones incluidas en esta versión, consulta WebView para Android.

+ +

Captura y uso compartido de pantalla

+

Android 5.0 permite agregar capacidades de captura y uso compartido de pantalla a la aplicación con las nuevas API {@link android.media.projection}. Esta funcionalidad es útil, por ejemplo, si quieres habilitar el uso compartido de la pantalla en una aplicación de videoconferencia.

+ +

El nuevo método {@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()} permite que la aplicación capture el contenido de la pantalla principal (la pantalla predeterminada) en un objeto {@link android.view.Surface}, que luego la aplicación puede enviar a través de la red. La API solo permite capturar contenido de pantalla no seguro, y no audio del sistema. Para comenzar la captura de pantalla, la aplicación primero debe solicitar el permiso del usuario abriendo un cuadro de diálogo de captura de pantalla con un {@link android.content.Intent} obtenido a través del método {@link android.media.projection.MediaProjectionManager#createScreenCaptureIntent()}.

+ +

Para ver un ejemplo de cómo utilizar las nuevas API, consulta la clase {@code MediaProjectionDemo} en el proyecto de ejemplo.

+ +

Notificaciones

+ +

Notificaciones de pantalla bloqueada

+

Las pantallas bloqueadas en Android 5.0 tienen la capacidad de presentar notificaciones. Los usuarios pueden elegir mediante la configuración si desean permitir que el contenido de notificación confidencial se muestre a través de una pantalla bloqueada segura.

+ +

La aplicación puede controlar el nivel de detalle visible cuando las notificaciones se muestran a través de la pantalla bloqueada segura. Para controlar el nivel de visibilidad, llama a {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} y especifica uno de estos valores:

+ + + +

Cuando el nivel de visibilidad es {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE}, también puedes proporcionar una versión redactada del contenido de la notificación que oculta datos personales. Por ejemplo, una aplicación de SMS podría mostrar una notificación que te indique que tienes tres nuevos mensajes de texto, pero oculta el contenido y los remitentes del mensaje. Para proporcionar esta notificación alternativa, primero crea la notificación de reemplazo utilizando {@link android.app.Notification.Builder}. Cuando crees el objeto de notificación privado, adjúntale la notificación de reemplazo a través del método {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+ +

Metadatos de notificaciones

+

Android 5.0 utiliza metadatos asociados con notificaciones de la aplicación para ordenar las notificaciones de forma más inteligente. Para definir los metadatos, llama a los siguientes métodos en {@link android.app.Notification.Builder} cuando creas la notificación:

+ + + +

Gráficos

+ +

Compatibilidad con OpenGL ES 3.1

+

Android 5.0 agrega interfaces Java y compatibilidad nativa para OpenGL ES 3.1. La nueva funcionalidad clave proporcionada en OpenGL ES 3.1 incluye lo siguiente:

+ + + +

La interfaz Java para OpenGL ES 3.1 en Android se proporciona con {@link android.opengl.GLES31}. Al usar OpenGL ES 3.1, asegúrate de declararlo en el archivo de manifiesto con la etiqueta {@code } y el atributo {@code android:glEsVersion}. Por ejemplo:

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

Para obtener más información sobre el uso de OpenGL ES, incluso cómo comprobar la versión de OpenGL ES compatible del dispositivo en el tiempo de ejecución, consulta la guía de la API OpenGL ES.

+ +

Android Extension Pack

+ +

Además de OpenGL ES 3.1, esta versión ofrece un paquete de extensiones con interfaces Java y compatibilidad nativa para la funcionalidad de gráficos avanzada. Estas extensiones se tratan como un solo paquete en Android. (Si la extensión {@code ANDROID_extension_pack_es31a} está presente, la aplicación puede asumir que todas las extensiones en el paquete están presentes y habilitar las funciones del lenguaje de sombreado con una sola instrucción {@code #extension}).

+ +

El paquete de extensiones admite lo siguiente:

+ + + +

La interfaz Java para el paquete de extensiones se proporciona con {@link android.opengl.GLES31Ext}. En el manifiesto de la aplicación, puedes declarar que la aplicación debe instalarse solo en dispositivos compatibles con el paquete de extensiones. Por ejemplo:

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

Medios

+ +

API de cámara para capacidades avanzadas de la cámara

+ +

Android 5.0 introduce la nueva API android.hardware.camera2 para facilitar la captura y el procesamiento de imágenes de grano fino. Ahora puedes acceder mediante programación a los dispositivos de cámara disponibles para el sistema con {@link android.hardware.camera2.CameraManager#getCameraIdList() getCameraIdList()} y conectarte a un dispositivo específico con {@link android.hardware.camera2.CameraManager#openCamera(java.lang.String, android.hardware.camera2.CameraDevice.StateCallback, android.os.Handler) openCamera()}. Para iniciar la captura de imágenes, crea una {@link android.hardware.camera2.CameraCaptureSession} y especifica los objetos {@link android.view.Surface} para enviar las imágenes capturadas. La {@link android.hardware.camera2.CameraCaptureSession} puede configurarse para tomar fotos individuales o múltiples imágenes al instante.

+ +

Para recibir una notificación cuando se capturan imágenes nuevas, implementa el agente de escucha {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} y establécelo en la solicitud de captura. Cuando el sistema completa la solicitud de captura de imágenes, el agente de escucha {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} recibe una llamada en {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback#onCaptureCompleted(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.TotalCaptureResult) onCaptureCompleted()} y proporciona los metadatos de captura de imágenes en un {@link android.hardware.camera2.CaptureResult}.

+ +

La clase {@link android.hardware.camera2.CameraCharacteristics} permite que la aplicación detecte las funciones de la cámara que están disponibles en un dispositivo. La propiedad {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} del objeto representa el nivel de funcionalidad de la cámara.

+ + + +

Para ver cómo utilizar la API de la cámara actualizada, consulta las muestras de implementación de {@code Camera2Basic} y {@code Camera2Video} en esta versión.

+ +

Reproducción de audio

+

En esta versión, se incluyen los cambios a {@link android.media.AudioTrack} que se indican a continuación:

+ + +

Control de reproducción de medios

+

Usa las nuevas API de notificación y medios para asegurarte de que la interfaz de usuario del sistema sepa cuando reproduces medios y pueda extraer y mostrar la carátula del álbum. El control de la reproducción de medios en una interfaz de usuario y un servicio es ahora más fácil con las nuevas clases {@link android.media.session.MediaSession} y {@link android.media.session.MediaController}.

+ +

La nueva clase {@link android.media.session.MediaSession} reemplaza la clase {@link android.media.RemoteControlClient} obsoleta y proporciona un único conjunto de métodos de devolución de llamada para el manejo de los controles de transporte y los botones de los medios. Si la aplicación permite reproducir medios y se ejecuta en la plataforma Android TV o Android Wear, usa la clase {@link android.media.session.MediaSession} para manejar los controles de transporte con los mismos métodos de devolución de llamada.

+ +

Ahora puedes crear tu propia aplicación de controlador de medios con la nueva clase {@link android.media.session.MediaController}. Esta clase ofrece una manera segura para subprocesos de supervisar y controlar la reproducción de medios desde el proceso de la interfaz de usuario de la aplicación. Al crear un controlador, especifica un objeto {@link android.media.session.MediaSession.Token} para que la aplicación pueda interaccionar con la {@link android.media.session.MediaSession} dada. Mediante el uso de los métodos {@link android.media.session.MediaController.TransportControls}, puedes enviar comandos, como {@link android.media.session.MediaController.TransportControls#play() play()}, {@link android.media.session.MediaController.TransportControls#stop() stop()}, {@link android.media.session.MediaController.TransportControls#skipToNext() skipToNext()} y {@link android.media.session.MediaController.TransportControls#setRating(android.media.Rating) setRating()}, para controlar la reproducción de medios en esa sesión. Con el controlador, también puedes registrar un objeto {@link android.media.session.MediaController.Callback} para escuchar metadatos y cambios de estado en la sesión.

+ +

Además, puedes crear notificaciones enriquecidas que permiten el control de la reproducción vinculado a una sesión de medios con la nueva clase {@link android.app.Notification.MediaStyle}.

+ +

Exploración de medios

+

Android 5.0 introduce la capacidad para las aplicaciones de explorar la biblioteca de contenidos de medios de otra aplicación a través de la nueva API android.media.browse. Para exponer el contenido de los medios en la aplicación, amplía la clase {@link android.service.media.MediaBrowserService}. La implementación de {@link android.service.media.MediaBrowserService} debe proporcionar acceso a {@link android.media.session.MediaSession.Token} para que las aplicaciones puedan reproducir contenido de medios proporcionado a través de tu servicio.

+

Para interaccionar con un servicio de explorador de medios, usa la clase {@link android.media.browse.MediaBrowser}. Especifica el nombre del componente para una {@link android.media.session.MediaSession} cuando creas una instancia {@link android.media.browse.MediaBrowser}. El uso de esa instancia de explorador hará que la aplicación pueda conectarse al servicio asociado y obtener un objeto {@link android.media.session.MediaSession.Token} para reproducir contenido expuesto a través de ese servicio.

+ +

Almacenamiento

+ +

Selección de directorio

+ +

Android 5.0 amplía el Storage Access Framework para permitir a los usuarios seleccionar un subárbol entero del directorio y proporcionar a las aplicaciones acceso de lectura o escritura a todos los documentos incluidos sin requerir la confirmación del usuario para cada elemento.

+ +

Para seleccionar un subárbol del directorio, crea y envía un intento {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE}. El sistema muestra todas las instancias {@link android.provider.DocumentsProvider} que admiten la selección de subárbol y permite que el usuario explore y seleccione un directorio. El URI devuelto representa el acceso al subárbol seleccionado. A continuación, puedes usar {@link android.provider.DocumentsContract#buildChildDocumentsUriUsingTree(android.net.Uri, java.lang.String) buildChildDocumentsUriUsingTree()} y {@link android.provider.DocumentsContract#buildDocumentUriUsingTree(android.net.Uri, java.lang.String) buildDocumentUriUsingTree()} junto con {@link android.content.ContentResolver#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) query()} para explorar el subárbol.

+ +

El nuevo método {@link android.provider.DocumentsContract#createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String) createDocument()} permite crear nuevos documentos o directorios en cualquier lugar del subárbol. Para administrar los documentos existentes, usa {@link android.provider.DocumentsContract#renameDocument(android.content.ContentResolver, android.net.Uri, java.lang.String) renameDocument()} y {@link android.provider.DocumentsProvider#deleteDocument(java.lang.String) deleteDocument()}. Comprueba {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} para verificar si el proveedor admite estas llamadas antes de su emisión.

+ +

Si implementas un {@link android.provider.DocumentsProvider} y quieres admitir la selección de subárbol, implementa {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()} e incluye {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD} en tu {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS}.

+ +

Android 5.0 también introduce nuevos directorios específicos de paquetes en almacenamiento compartido, donde la aplicación puede colocar archivos de medios para que sean incluidos en {@link android.provider.MediaStore}. El nuevo {@link android.content.Context#getExternalMediaDirs()} devuelve rutas a estos directorios en todos los dispositivos de almacenamiento compartido. De forma similar a {@link android.content.Context#getExternalFilesDir(java.lang.String) getExternalFilesDir()}, la aplicación no necesita permisos adicionales para acceder a las rutas devueltas. La plataforma busca periódicamente nuevos medios en estos directorios, pero tú también puedes utilizar {@link android.media.MediaScannerConnection} para buscar contenido nuevo de forma explícita.

+ +

Redes inalámbricas y conectividad

+ +

Múltiples conexiones de red

+

Android 5.0 ofrece nuevas API de múltiples redes que permiten que la aplicación busque las redes disponibles con capacidades específicas dinámicamente y que establezca una conexión con ellas. Esta funcionalidad es útil cuando la aplicación requiere una red especializada, como una red de facturación del operador de telefonía celular, SUPL o MMS, o si quieres enviar datos con un determinado tipo de protocolo de transporte.

+ +

Para seleccionar una red y conectarte a ella de forma dinámica desde la aplicación, sigue estos pasos:

+ +
    +
  1. Crea un {@link android.net.ConnectivityManager}.
  2. +
  3. Usa la clase {@link android.net.NetworkRequest.Builder} para crear un objeto {@link android.net.NetworkRequest} y especifica las características de la red y el tipo de transporte que requiere la aplicación.
  4. +
  5. Para buscar las redes adecuadas, llama a {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} o {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}, y envía el objeto {@link android.net.NetworkRequest} y una implementación de {@link android.net.ConnectivityManager.NetworkCallback}. Usa el método {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} si deseas cambiar de forma activa a una red adecuada una vez que se detecta; para recibir solamente notificaciones de redes analizadas sin tener que cambiar de forma activa de red, usa el método {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()} en su lugar.
  6. +
+ +

Cuando el sistema detecta una red adecuada, se conecta a la red e invoca la devolución de llamada {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Puedes usar el objeto {@link android.net.Network} de la devolución de llamada para obtener información adicional acerca de la red o para indicar que el tráfico use la red seleccionada.

+ +

Bluetooth de baja energía

+

Android 4.3 introdujo compatibilidad de plataforma para Bluetooth de baja energía (Bluetooth LE) en el rol central. En Android 5.0, un dispositivo Android ahora puede actuar como un dispositivo periférico Bluetooth LE. Las aplicaciones pueden utilizar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear aplicaciones que permiten que un dispositivo funcione como un podómetro o un monitor de estado, y comunique sus datos a otro dispositivo Bluetooth LE.

+

Las nuevas API {@link android.bluetooth.le} permiten a sus aplicaciones transmitir anuncios, buscar respuestas y establecer conexiones con dispositivos Bluetooth LE cercanos. Para utilizar las nuevas funciones de anuncio y búsqueda, agrega el permiso {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} en el manifiesto. Cuando los usuarios actualizan o descargan tu aplicación desde Play Store, se les pide que concedan el siguiente permiso a tu aplicación: "Información de conexión Bluetooth: Permite que la aplicación controle Bluetooth, incluida la transmisión de información a dispositivos Bluetooth cercanos o la obtención de información sobre ellos".

+ +

Para comenzar el anuncio de Bluetooth LE a fin de que otros dispositivos puedan detectar tu aplicación, llama a {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} y envía una implementación de la clase {@link android.bluetooth.le.AdvertiseCallback}. El objeto de devolución de llamada recibe un informe del éxito o fracaso de la operación de anuncio.

+ +

Android 5.0 introduce la clase {@link android.bluetooth.le.ScanFilter} para que tu aplicación pueda buscar solo tipos específicos de dispositivos que le interesan. Para empezar a buscar dispositivos Bluetooth LE, llama a {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} y envía una lista de filtros. En la llamada del método, también debes proporcionar una implementación de {@link android.bluetooth.le.ScanCallback} para infomar cuando se encuentra un anuncio de Bluetooth LE.

+ +

Mejoras de NFC

+

Android 5.0 agrega estas mejoras para permitir un uso más amplio y más flexible de la NFC:

+ + + +

Proyecto Volta

+ +

Además de las nuevas funciones, Android 5.0 hace hincapié en las mejoras de la duración de la batería. Usa las nuevas API y la herramienta para entender y optimizar el consumo de energía de la aplicación.

+ +

Programación de trabajos

+

Android 5.0 proporciona una nueva API {@link android.app.job.JobScheduler} que permite optimizar la duración de la batería mediante la definición de trabajos que el sistema ejecutará de forma asíncrona (en otro momento) o en condiciones específicas (por ejemplo, cuando el dispositivo se está cargando). La programación de trabajos es útil en situaciones como las siguientes:

+ + +

Una unidad de trabajo está encapsulada por un objeto {@link android.app.job.JobInfo}. Este objeto especifica los criterios de programación.

+ +

Usa la clase {@link android.app.job.JobInfo.Builder} para configurar cómo se debe ejecutar la tarea programada. Puedes programar la tarea para que se ejecute en condiciones específicas, como las siguientes:

+ + + +

Por ejemplo, puedes agregar un código como este para ejecutar la tarea en una red no medida:

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

Si el dispositivo tiene energía estable (es decir, el dispositivo estuvo enchufado durante más de dos minutos, y la batería está en un nivel aceptable), el sistema ejecutará cualquier trabajo programado que esté listo, incluso si la fecha límite del trabajo no pasó.

+ +

Para ver un ejemplo de cómo utilizar la API {@link android.app.job.JobScheduler}, consulta la muestra de implementación de {@code JobSchedulerSample} en esta versión.

+ +

Herramientas de programadores para el uso de la batería

+ +

El nuevo comando {@code dumpsys batterystats} genera información estadística interesante sobre el uso de la batería en un dispositivo, organizada por ID de usuario único (UID). Las estadísticas incluyen:

+ + + +

Usa la opción {@code --help} para conocer acerca de las diversas opciones que tienes para adaptar la salida. Por ejemplo, para imprimir las estadísticas de uso de la batería de un paquete de aplicaciones dado desde que el dispositivo se cargó por última vez, ejecuta este comando: +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

Puedes utilizar la herramienta Battery Historian en la salida del comando {@code dumpsys} para generar una visualización HTML de eventos relacionados con la energía a partir de los registros. Esta información facilita la comprensión y el diagnóstico de cualquier problema relacionado con la batería.

+ +

Android en el entorno de trabajo y en el entorno educativo

+

Aprovisionamiento administrado

+ +

Android 5.0 ofrece nuevas funcionalidades para ejecutar aplicaciones en un entorno empresarial. Un administrador de dispositivos puede iniciar un proceso de aprovisionamiento administrado para agregar un perfil administrado copresente, pero separado, a un dispositivo si el usuario tiene una cuenta personal existente. Las aplicaciones que se asocian con perfiles administrados aparecen junto con las aplicaciones no administradas en el Launcher del usuario, la pantalla de actividades y tareas recientes, y las notificaciones.

+ +

Para iniciar el proceso de aprovisionamiento administrado, envía {@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE ACTION_PROVISION_MANAGED_PROFILE} en un {@link android.content.Intent}. Si la llamada se realiza correctamente, el sistema activa la devolución de llamada {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete(android.content.Context, android.content.Intent) onProfileProvisioningComplete()}. A continuación, puedes llamar a {@link android.app.admin.DevicePolicyManager#setProfileEnabled(android.content.ComponentName) setProfileEnabled()} para habilitar este perfil administrado.

+ +

De forma predeterminada, solo un pequeño subconjunto de aplicaciones están habilitadas en el perfil administrado. Puedes instalar aplicaciones adicionales en el perfil administrado llamando a {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()}.

+ +

Si programas una aplicación Launcher, puedes utilizar la nueva clase {@link android.content.pm.LauncherApps} para obtener una lista de las actividades que se pueden iniciar para el usuario actual y los perfiles administrados asociados. El Launcher puede hacer que las aplicaciones administradas sean visualmente prominentes agregando una insignia de trabajo al ícono dibujable. Para recuperar el ícono con insignia, llama a {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}.

+ +

Para ver cómo utilizar la nueva funcionalidad, consulta la muestra de implementación de {@code BasicManagedProfile} en esta versión.

+ +

Propietario de dispositivo

+

Android 5.0 introduce la capacidad de implementar una aplicación de propietario de dispositivo. Un propietario de dispositivo es un tipo especializado de administrador de dispositivos que tiene la capacidad adicional de crear y eliminar usuarios secundarios, y configurar opciones globales en el dispositivo. La aplicación de propietario de dispositivo puede utilizar los métodos de la clase {@link android.app.admin.DevicePolicyManager} para tomar un control específico de la configuración, la seguridad y las aplicaciones en los dispositivos administrados. Un dispositivo puede tener solamente un propietario de dispositivo activo a la vez.

+ +

Para implementar y activar un propietario de dispositivo, debes realizar una transferencia de datos NFC desde una aplicación de programación hasta el dispositivo mientras el dispositivo está en estado no aprovisionado. Esta transferencia de datos envía la misma información que la que se envía en el intento de aprovisionamiento descrito en Aprovisionamiento administrado.

+ +

Fijación de pantalla

+ +

Android 5.0 introduce una nueva API para fijar la pantalla que te permite impedir temporalmente que los usuarios salgan de tu tarea o sean interrumpidos por notificaciones. Podría usarse, por ejemplo, si estás programando una aplicación de educación para cumplir con requisitos de evaluación de gran importancia en Android o una aplicación de único propósito o kiosco. Una vez que la aplicación activa la fijación de pantalla, los usuarios no pueden ver las notificaciones, acceder a otras aplicaciones ni volver a la pantalla principal hasta que la aplicación sale del modo.

+ +

Hay dos formas de activar la fijación de pantalla:

+ + + +

Cuando el bloqueo de tarea está activo, ocurre lo siguiente:

+ + + +

Marco de impresión

+ +

Representación de PDF como mapa de bits

+

Ahora puedes representar páginas de documentos PDF en imágenes de mapa de bits para imprimir mediante el uso de la nueva clase {@link android.graphics.pdf.PdfRenderer}. Debes especificar un {@link android.os.ParcelFileDescriptor} que admita búsquedas (es decir, que se pueda acceder al contenido de forma aleatoria) y en el que el sistema pueda escribir el contenido imprimible. La aplicación puede obtener una página para representar con {@link android.graphics.pdf.PdfRenderer#openPage(int) openPage()} y luego llamar a {@link android.graphics.pdf.PdfRenderer.Page#render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, int) render()} para convertir la {@link android.graphics.pdf.PdfRenderer.Page} abierta en un mapa de bits. También puedes configurar parámetros adicionales si solo deseas convertir una parte del documento en una imagen de mapa de bits (por ejemplo, para implementar la representación en mosaicos a fin de hacer zoom en el documento).

+ +

Para ver un ejemplo de cómo utilizar las nuevas API, consulta la muestra {@code PdfRendererBasic}.

+ +

Sistema

+

Estadísticas de uso de aplicaciones

+

Ahora puedes acceder al historial de uso de las aplicaciones desde un dispositivo Android con la nueva API {@link android.app.usage}. Esta API proporciona información de uso más detallada que el método {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()} obsoleto. Para utilizar esta API, primero debes declarar el permiso {@code "android.permission.PACKAGE_USAGE_STATS"} en el manifiesto. El usuario también debe permitir el acceso a esta aplicación a través de Configuración > Seguridad> Aplicaciones con acceso de uso.

+ +

El sistema recopila los datos de uso por aplicación y agrega los datos en intervalos diarios, semanales, mensuales y anuales. El tiempo máximo que el sistema conserva estos datos es el siguiente:

+ + + +

Para cada aplicación, el sistema registra los siguientes datos:

+ + +

Pruebas y accesibilidad

+ +

Mejoras de pruebas y accesibilidad

+

Android 5.0 incorpora la siguiente compatibilidad para pruebas y accesibilidad:

+ + + +

IME

+ +

Cambio más sencillo de idiomas de entrada

+ +

A partir de Android 5.0, los usuarios pueden cambiar más fácilmente entre todos los editores de métodos de entrada (IME) admitidos por la plataforma. La ejecución de la acción de cambio designada (normalmente tocar un ícono del mundo en el teclado en pantalla) te lleva por todos estos IME. Este cambio de comportamiento es implementado por el método {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()}.

+ +

Además, el marco ahora comprueba si el siguiente IME incluye un mecanismo de cambio (y, por lo tanto, si ese IME admite el cambio al IME después de él). Un IME con un mecanismo de cambio no pasará a otro IME que no lo tenga. Este cambio de comportamiento es implementado por el método {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()}. + +

Para ver un ejemplo de cómo utilizar las API de cambio de IME actualizadas, consulta la muestra de implementación de teclado en pantalla actualizada en esta versión. Para obtener más información acerca de cómo implementar el cambio entre los IME, consulta Creación de un método de entrada. +

+ +

Declaraciones de manifiesto

+ +

Características requeridas declarables

+

Los siguientes valores ahora son compatibles con el elemento {@code }, por lo que puedes asegurarte de que la aplicación solo se instale en dispositivos que proporcionen las características que necesita.

+ + + +

Permisos de usuario

+ +

El siguiente permiso ahora es compatible con el elemento {@code } para declarar los permisos que requiere la aplicación para acceder a determinadas API.

+ + diff --git a/docs/html-intl/intl/es/about/versions/lollipop.jd b/docs/html-intl/intl/es/about/versions/lollipop.jd new file mode 100644 index 0000000..2725270 --- /dev/null +++ b/docs/html-intl/intl/es/about/versions/lollipop.jd @@ -0,0 +1,249 @@ +page.title=Android Lollipop + +@jd:body + + + + + +
+ +
+ +
+ +
+ + + + + + + +

Te damos la bienvenida a Android 5.0 Lollipop, la versión de Android más extensa y ambiciosa hasta el momento.

+ +

Esta versión está repleta de funciones nuevas para usuarios y miles de API nuevas para programadores. Android se sigue expandiendo; desde teléfonos, tablets y wearables hasta televisores y autos.

+ +

Si quieres conocer las API para programadores más en detalle, consulta la Descripción general de las API de Android 5.0. También puedes obtener más información sobre Android 5.0 para consumidores en www.android.com.

+ +

Material design

+ +

Android 5.0 incluye Material design y te ofrece un kit de herramientas expandido para la interfaz de usuario. Con este kit, podrás integrar los nuevos patrones de diseño a las aplicaciones fácilmente.

+ + + +

Las nuevas vistas 3D te permiten establecer un eje z y superponer los elementos en la jerarquía con sombras en tiempo real, incluso mientras se mueven.

+ + +

Las transiciones de actividad integradas trasladan al usuario de un estado al otro de forma fluida y con un movimiento estético y animado. El tema del material agrega transiciones a las actividades, incluida la capacidad de usar elementos visuales compartidos a través de las actividades.

+ + + +
+
+ +
+
+ Para volver a reproducir el video, haz clic en la pantalla del dispositivo. +
+
+ + +

Las animaciones con efecto de propagación están disponibles para botones, casillas de verificación y otros controles táctiles de tu aplicación. + +

También puedes definir elementos de diseño vectoriales en XML y animarlos de distintas formas. Los elementos de diseño vectoriales escalan sin perder definición, por lo que son ideales para los íconos de un solo color integrados en aplicaciones.

+ +

Un nuevo grupo de subprocesos de procesamiento administrado por el sistema, llamado RenderThread, mantiene las animaciones fluidas incluso cuando hay demoras en el proceso de interfaz de usuario principal.

+ + +

Enfoque en el rendimiento

+ +

Android 5.0 ofrece una experiencia informática más veloz, más fluida y más potente.

+ +

Android ahora se ejecuta exclusivamente en el nuevo tiempo de ejecución ART, creado desde cero para ofrecer compatibilidad con una mezcla de ahead-of-time (AOT), just-in-time (JIT) y código interpretado. Admite las arquitecturas ARM, x86 y MIPS, y además es totalmente compatible con la arquitectura de 64 bits.

+ +

El tiempo de ejecución ART mejora el rendimiento y la capacidad de respuesta de las aplicaciones. El recolector de basura eficiente reduce la cantidad y la duración de pausas para los eventos de recolección de basura, que encajan sin inconvenientes en la ventana con sincronización vertical para que la aplicación no omita fotogramas. Además, ART traslada memoria de forma dinámica para optimizar el rendimiento durante el uso de elementos en primer plano.

+ +

Android 5.0 incluye compatibilidad de plataforma para las arquitecturas de 64 bits que usa la placa NVIDIA Tegra K1 de la Nexus 9. Las optimizaciones ofrecen espacios de direcciones más amplios y un rendimiento mejorado para las cargas de trabajo de ciertos procesos. Las aplicaciones que están en lenguaje de Java se ejecutan automáticamente como aplicaciones de 64 bits; no es necesario realizar modificaciones. Si tu aplicación usa código nativo, extendimos el NDK para que sea compatible con las nuevas ABI para ARM v8, x86-64 y MIPS 64.

+ +

Continuando con el enfoque en el rendimiento más parejo, Android 5.0 ofrece sincronización A/V mejorada. Los procesos gráficos y de audio se instrumentaron para lograr marcas de tiempo más precisas, lo que permite que las aplicaciones de video y de juegos muestren contenido sincronizado y parejo.

+ + +

Notificaciones

+ +

Las notificaciones en Android 5.0 son más visibles, accesibles y configurables.

+ + + +

Pueden aparecer detalles de notificaciones distintos en la pantalla bloqueada si el usuario lo desea. Los usuarios pueden elegir si permiten que, en la pantalla bloqueada segura, aparezca todo el contenido las notificaciones, que aparezca parte del contenido o que no aparezca nada.

+ +

Las alertas de notificaciones clave, como una llamada entrante, aparecen en una notificación emergente, es decir, una ventana flotante pequeña que permite al usuario responder o ignorar la notificación sin abandonar la aplicación que está utilizando.

+ +

Ahora puedes agregar metadatos nuevos a las notificaciones para recopilar contactos asociados (para la clasificación), categoría y prioridad.

+ +

Una nueva plantilla de notificación de contenido multimedia ofrece controles multimedia para las notificaciones con hasta seis botones de acción, incluidos controles personalizados, como "Me gusta". Ya no necesitarás usar RemoteViews.

+ + + +

Tus aplicaciones en la pantalla grande

+ +

Android TV te ofrece una plataforma de televisión completa para la experiencia de tu aplicación en la pantalla grande. Android TV se centra en una experiencia simplificada de pantalla principal que permite a los usuarios descubrir contenido fácilmente gracias a las recomendaciones personalizadas y la búsqueda por voz.

+ +

Con Android TV, ahora puedes crear una gran experiencia llena de creatividad para el contenido de tu aplicación o juego, además de ofrecer compatibilidad para que interaccione con controladores de juegos y otros dispositivos de entrada. Con el fin de ayudarte a crear una interfaz de usuario cinemática, de tres metros para televisión, Android ofrece un marco de trabajo de la interfaz de usuario Leanback en la versión 17 de la biblioteca de soporte.

+ +

El marco de trabajo de entrada de televisión de Android (TIF) permite que las aplicaciones de televisión manejen las transmisiones de video desde distintas fuentes, como entradas HDMI, sintonizadores de televisión y receptores IPTV. También permite la búsqueda y las recomendaciones de televisión en vivo a través de metadatos publicados por la entrada de televisión e incluye el Servicio de control HDMI-CEC para manejar múltiples dispositivos con un solo control remoto.

+ +

El marco de trabajo de entrada de televisión ofrece acceso a una amplia variedad de fuentes entrada de televisión en vivo. Además, las reúne en una sola interfaz de usuario para que estos puedan explorar, ver y disfrutar el contenido. Crear un servicio de entrada de televisión para tu contenido puede ayudar a que sea más accesible en los dispositivos de televisión.

+ + + + + +

Aplicaciones centradas en el documento

+ +

Android 5.0 presenta un espacio rediseñado de la sección Recientes; mucho más versátil y útil para tareas múltiples.

+ +

Las nuevas API permiten mostrar actividades separadas en tu aplicación como documentos individuales junto a otras pantallas recientes.

+ +

Puedes aprovechar los documentos concurrentes para darles a los usuarios la posibilidad de acceder al instante a más contenidos o servicios tuyos. Por ejemplo, podrías usar los documentos concurrentes para representar archivos en una aplicación de productividad, partidos de un jugador en un juego o chats en una aplicación de mensajería.

+ + + +

Conectividad avanzada

+ +

Android 5.0 agrega nuevas API que permiten que las aplicaciones realicen operaciones concurrentes con Bluetooth de baja energía (BLE), lo que permite la detección (modo central) y la publicidad (modo periférico).

+ +

Las nuevas funciones de redes múltiples permiten que las aplicaciones realicen consultas a las redes disponibles sobre las funciones disponibles, por ejemplo, si son redes Wi-Fi, móviles o de uso medido, o si ofrecen ciertas funciones de red. Luego, la aplicación puede solicitar una conexión y responder a la pérdida de conectividad o a otros cambios en la red.

+ +

Las API de NFC ahora permiten que las aplicaciones registren un ID de aplicación NFC (AID) de forma dinámica. También pueden establecer el servicio de emulación de tarjeta preferido por servicio activo y crear un registro NDEF que contenga datos de texto UTF-8.

+ + + +

Gráficos de alto rendimiento

+ +

La compatibilidad con OpenGL ES 3.1 de Khronos ahora permite que los juegos y las aplicaciones cuenten con la capacidad gráfica en 2D y 3D de más alto rendimiento en dispositivos admitidos.

+ +

OpenGL ES 3.1 incluye sombreadores de cálculo, texturas de símbolos, efectos visuales con aceleración, compresión de texturas ETC2/EAC de alta calidad, procesamiento de texturas avanzado, formatos renderbuffer y tamaño de textura estandarizados, y muchas cosas más.

+ + +
+ +

Rival Knights de Gameloft usa compresión de texturas ASTC (Adaptive Scalable Texture Compression) de AEP y sombreadores de cálculo de ES 3.1 para brindar efectos bloom/HDR y gráficos más detallados.

+
+ +

Android 5.0 también presenta el paquete de extensiones de Android (AEP), un conjunto de extensiones de OpenGL ES que permiten acceder a funciones como sombreadores de teselación y geometría, compresión de texturas ASTC, interpolación y sombreado por muestra y otras capacidades avanzadas de procesamiento. Con AEP, puedes ofrecer gráficos de alto rendimiento a través de una gran variedad de GPU.

+ + +

Audio más potente

+ +

Un nuevo diseño de captura de audio ofrece entrada de audio de baja latencia. El nuevo diseño incluye: un subproceso de captura rápida que nunca se bloquea, excepto durante una lectura; clientes de captura rápida a una tasa nativa de muestra, recuento de canales y profundidad de bits. Los clientes normales de captura ofrecen remuestreo y la opción de aumentar o disminuir la mezcla de canales o la profundidad de bit.

+ +

La mezcla de transmisión de audio de canales múltiples permite que las aplicaciones de audio profesionales mezclen hasta ocho canales, incluidos los canales 5.1 y 7.1.

+ +

Las aplicaciones pueden exponer su contenido multimedia y explorar el contenido multimedia de otras aplicaciones y luego solicitar reproducción. El contenido se expone a través de una interfaz consultable y no necesita residir en el dispositivo.

+ +

Las aplicaciones tienen un control más preciso de la síntesis de texto a voz mediante perfiles de voz asociados con idiomas específicos, calidad y tasa de latencia. Las nuevas API también mejoran compatibilidad con la comprobación de errores de síntesis, la síntesis de la red, la detección de idiomas y la reserva de red.

+ +

Android ahora incluye compatibilidad con los periféricos de audio USB estándar, lo que permite a los usuarios conectar auriculares USB, altavoces, micrófonos u otros periféricos digitales de alto rendimiento. Android 5.0 también agrega compatibilidad con códecs de audio Opus.

+ +

Gracias a las nuevas API {@link android.media.session.MediaSession} para controlar la reproducción de contenido multimedia, ahora es más sencillo brindar controles multimedia consistentes en todas las pantallas y en otros controladores.

+ + +

Cámara y video mejorados

+ +

Android 5.0 presenta API de la cámara totalmente nuevas que te permiten capturar formatos sin procesar, como YUV y Bayer RAW, y controlar distintos parámetros, como el tiempo de exposición, la sensibilidad ISO y la duración de una toma cuadro por cuadro. Los nuevos procesos totalmente sincronizados de la cámara te permiten capturar imágenes YUV sin comprimir y en su resolución original a 30 FPS en dispositivos compatibles.

+ +

Además de las imágenes, también puedes capturar metadatos de la cámara, como modelos de ruido e información óptica.

+ +

Las aplicaciones que envían transmisiones de video por redes ahora pueden aprovechar el estándar H.265 High Efficiency Video Coding (HEVC) para lograr la codificación y decodificación optimizadas de los datos de video.

+ +

Android 5.0 también agrega compatibilidad con la tunelización de contenido multimedia para ofrecer la mejor experiencia de contenido con ultraalta definición (4K) y la posibilidad de reproducir datos de audio y video comprimidos al mismo tiempo.

+ + + +
+ +

Los usuarios tienen una visión unificada de sus aplicaciones personales y laborales, las cuales tienen una insignia para identificarlas fácilmente.

+
+ + +

Android en el lugar de trabajo

+ +

Para habilitar la política de traer tu propio dispositivo en entornos empresariales, un proceso de aprovisionamiento administrado se encarga de crear un perfil seguro de trabajo en el dispositivo. En el Launcher, las aplicaciones aparecen con una insignia de Work para indicar que un administrador de TI administra la aplicación y sus datos dentro del perfil de trabajo.

+ +

Notificaciones tanto del perfil personal y como del laboral son visibles en una vista unificada. Los datos de cada perfil se mantienen siempre seguros y separados entre sí, incluso cuando ambos perfiles usan la misma aplicación.

+ +

En el caso de dispositivos que son propiedad de la empresa, los administradores de TI pueden comenzar con un nuevo dispositivo y configurarlo con un propietario de dispositivo. Los empleadores pueden entregar estos dispositivos con una aplicación de propietario de dispositivo ya instalada que pueda ajustar la configuración general del dispositivo.

+ + + +

Captura y uso compartido de pantalla

+ +

Android 5.0 te permite agregar capacidades de captura y uso compartido de pantalla a tu aplicación.

+ +

Con el permiso del usuario, puedes capturar video no seguro de la pantalla y distribuirlo en la red si lo deseas.

+ + +

Nuevos tipos de sensores

+ +

En Android 5.0, un nuevo sensor detector de inclinación ayuda a mejorar el reconocimiento de la actividad en los dispositivos compatibles, y un sensor de frecuencia cardíaca informa del ritmo cardíaco de la persona que toca el dispositivo.

+ +

Los nuevos sensores compuestos de interacción ahora están disponibles para detectar interacciones especiales, por ejemplo, cuando el usuario hace un gesto para activar el dispositivo, levantarlo o mirarlo.

+ + + +

WebView de Chromium

+ +
+ +
+ +

La versión inicial de Android 5.0 incluye una versión de Chromium para {@link android.webkit.WebView} basada en la versión M37 de Chromium, y con ella se agrega compatibilidad con WebRTC, WebAudio y WebGL.

+ +

Chromium M37 también incluye compatibilidad nativa para todas las especificaciones de los Web Components: Custom Elements, Shadow DOM, HTML Imports y Templates. Esto significa que puedes usar Polymer y sus elementos de diseño material en una WebView sin polyfills.

+ +

A pesar de que WebView se basó en Chromium desde Android 4.4, ahora se puede actualizar la capa de Chromium desde Google Play.

+ +

A medida que haya más versiones disponibles de Chromium, los usuarios podrán actualizar la suya desde Google Play para asegurarse de que tienen las mejoras y correcciones de errores más recientes para WebView, además de encontrar las últimas API web y correcciones de errores para las aplicaciones que usen WebView en Android 5.0 y versiones posteriores.

+ + + +

Accesibilidad y entrada

+ +

Las nuevas API de accesibilidad pueden recuperar información detallada sobre las propiedades de las ventanas en la pantalla con la que los usuarios videntes pueden interactuar y definir acciones de entrada estándar o personalizadas para distintos elementos de la interfaz de usuario.

+ +

La nueva API de editor de método de entrada (IME) permite cambiar en menos tiempo a otros editores directamente desde el método de entrada.

+ + + +

Herramientas para crear aplicaciones con uso eficiente de batería

+ +

Las nuevas API de programación de tareas te permiten optimizar la duración de la batería gracias a la opción para postergar tareas que el sistema ejecutará más tarde o bajo condiciones específicas, por ejemplo, cuando el dispositivo se está cargando o conectado a Wi-Fi.

+ +

Un nuevo comando dumpsys batterystats genera estadísticas de uso de batería que puedes utilizar para comprender el uso de la batería en todo el sistema y el impacto de tu aplicación en la batería del dispositivo. Puedes consultar un historial de eventos de energía, el uso aproximado de energía por en una historia de eventos de energía, el uso de energía aproximado por identificador único de usuario (UID) y componente del sistema, y muchas opciones más.

+ + +

Battery Historian es una nueva herramienta para convertir las estadísticas de dumpsys batterystats en una visualización de la depuración relacionada con la batería. Encuentra esta herramienta en https://github.com/google/battery-historian.

diff --git a/docs/html-intl/intl/ja/about/versions/android-5.0.jd b/docs/html-intl/intl/ja/about/versions/android-5.0.jd new file mode 100644 index 0000000..47cd24d --- /dev/null +++ b/docs/html-intl/intl/ja/about/versions/android-5.0.jd @@ -0,0 +1,635 @@ +page.title=Android 5.0 API +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

このドキュメントの内容 詳細を表示

+ +
    +
  1. 対象 API レベルの更新
  2. +
  3. 動作に関する重要な変更 +
      +
    1. まだ新しい Android Runtime(ART)に対してアプリをテストしていない場合
    2. +
    3. アプリで通知を実装する場合
    4. +
    5. アプリで RemoteControlClient を使用する場合
    6. +
    7. アプリで getRecentTasks() を使用する場合
    8. +
    9. Android Native Development Kit(NDK)を使用している場合
    10. +
    11. アプリからサービスにバインドする場合
    12. +
    13. アプリで WebView を使用する場合
    14. +
    +
  4. +
  5. ユーザー インターフェース +
      +
    1. Material Design のサポート
    2. +
    3. 最近使ったアプリ画面に表示される同時実行中のドキュメント / アクティビティ
    4. +
    5. WebView の更新
    6. +
    7. 画面のキャプチャと共有
    8. +
    +
  6. +
  7. 通知 +
      +
    1. ロック画面の通知
    2. +
    3. 通知メタデータ
    4. +
    +
  8. +
  9. グラフィック +
      +
    1. OpenGL ES 3.1 のサポート
    2. +
    3. Android Extension Pack
    4. +
    +
  10. +
  11. メディア +
      +
    1. 高度なカメラ機能に対応した Camera API
    2. +
    3. 音声の再生
    4. +
    5. メディア再生コントロール
    6. +
    7. メディアの参照
    8. +
    +
  12. +
  13. ストレージ +
      +
    1. ディレクトリの選択
    2. +
    +
  14. +
  15. ワイヤレスと接続 +
      +
    1. マルチネットワーク接続
    2. +
    3. Bluetooth によるブロードキャスト
    4. +
    5. NFC の機能強化
    6. +
    +
  16. +
  17. Project Volta +
      +
    1. ジョブのスケジューリング
    2. +
    3. 電池の使用統計情報を提供するデベロッパー向けツール +
    +
  18. +
  19. 職場向けや教育向けの Android +
      +
    1. 管理対象プロビジョニング
    2. +
    3. 端末所有者
    4. +
    5. 画面の固定
    6. +
    +
  20. +
  21. システム +
      +
    1. アプリの使用統計情報
    2. +
    +
  22. +
  23. 印刷フレームワーク +
      +
    1. PDF をビットマップとしてレンダリング
    2. +
    +
  24. +
  25. テストとユーザー補助 +
      +
    1. テストとユーザー補助の向上
    2. +
    +
  26. +
  27. IME +
      +
    1. 入力言語の切り替えやすさの向上
    2. +
    +
  28. +
  29. マニフェスト宣言 +
      +
    1. 宣言可能な必須機能
    2. +
    3. ユーザー権限
    4. +
    +
  30. +
+ +

API Differences

+
    +
  1. API level 20 to 21 »
  2. +
  3. L Developer Preview to 21 »
  4. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
  4. +
+ +
+
+ +

API レベル: {@sdkPlatformApiLevel}

+ +

Android 5.0(Lollipop)は、ユーザーとアプリ デベロッパーに新しい機能を提供します。このドキュメントでは、最も重要な新しい API を紹介しています。

+ +

新しいプラットフォーム機能の概要について詳しくは、Android Lollipop の特長をご覧ください。

+ + +

開発の開始

+ +

Android 5.0 対応アプリの開発を始めるには、最初に Android SDK を入手する必要があります。次に、SDK Manager を使用して Android 5.0 SDK プラットフォームとシステム イメージをダウンロードします。

+ +

対象 API レベルの更新

+ +

Android {@sdkPlatformVersion} 搭載端末向けにアプリの最適化を向上させるには、{@code targetSdkVersion}"{@sdkPlatformApiLevel}" に設定し、Android {@sdkPlatformVersion} システム イメージにアプリをインストールした後、この変更を加えた更新済みのアプリを公開します。

+ +

Android {@sdkPlatformVersion} API を使用しながら旧バージョンも同時にサポートするには、{@code minSdkVersion} でサポートされていない API を実行する前に、システムの API レベルをチェックする条件をコードに追加します。下位互換性の維持について詳しくは、複数のプラットフォーム バージョンへの対応をご覧ください。

+ +

API レベルの仕組みについて詳しくは、API レベルとはをご覧ください。

+ +

動作に関する重要な変更

+ +

以前に Android 対応アプリを公開したことがある場合は、アプリが Android 5.0 の変更による影響を受ける可能性があることに注意してください。

+ +

まだ新しい Android Runtime(ART)に対してアプリをテストしていない場合

+ +

リリース 4.4 では新しい Android ランタイムである ART が試験的に導入されていました。4.4 では、ART はオプションで、デフォルトのランタイムは Dalvik のままでした。Android 5.0 では、ART がデフォルトのランタイムになりました。

+ +

ART の新機能の概要について詳しくは、ART の紹介をご覧ください。主に次のような新機能があります。

+ + + +

ほとんどの Android アプリは変更を加えなくても ART で問題なく動作します。ただし、Dalvik で動作する一部の技術が ART で動作しません。特に重要な問題について詳しくは、Android Runtime(ART)でアプリの動作を検証するをご覧ください。特に次の点にご注意ください。

+ + + +

アプリで通知を実装する場合

+ +

通知を実装する際は、Android 5.0 での変更点について必ず考慮してください。Android 5.0 以降に対応した通知の設計について詳しくは、通知の設計に関するガイドをご覧ください。 +

+ +

Material Design スタイル

+

通知は、新しい Material Design ウィジェットに合わせて、白色(または非常に明るい色)の背景の上に暗い色のテキストで描かれます。すべての通知が新しい配色で見やすくなるようにしてください。通知が見にくい場合は、次の方法で修正してください。

+ + + +

音声とバイブレーション

+

現在 {@link android.media.Ringtone}、{@link android.media.MediaPlayer}、または {@link android.os.Vibrator} クラスを使用して音声やバイブレーションを通知に追加している場合は、システムが「優先」モードで通知を正しく表示できるように、それらのコードを削除してください。代わりに {@link android.app.Notification.Builder} のメソッドを使用して音声やバイブレーションを追加してください。

+ +

端末を {@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} に設定すると端末の優先モードが終了します。

+ +

従来、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} によってコントロールされるようになりました。

+ +

ロック画面の表示

+

Android 5.0 ではデフォルトでユーザーのロック画面に通知が表示されるようになりました。ユーザーは機密情報の表示を防ぐことを選択できます。その場合は通知に表示されるテキストが自動的に編集されます。編集される通知をカスタマイズする場合は、{@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} を使用してください。

+

通知に個人情報が含まれていない場合や、通知にメディア再生コントロールを表示できるようにしたい場合は、{@link android.app.Notification.Builder#setVisibility(int) setVisibility()} メソッドを呼び出して通知の表示レベルを {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} に設定してください。 +

+ +

メディアの再生

+

メディアの再生状態やトランスポート コントロールを表示する通知を実装する場合は、カスタムの {@link android.widget.RemoteViews.RemoteView} オブジェクトに代わって新しい {@link android.app.Notification.MediaStyle} テンプレートを使用することをおすすめします。どちらのアプローチの場合でも、必ず通知の表示を {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} に設定して、ロック画面からコントロールにアクセスできるようにしてください。Android 5.0 以降では、ロック画面に {@link android.media.RemoteControlClient} オブジェクトが表示されなくなりました。詳しくは、アプリで RemoteControlClient を使用する場合をご覧ください。

+ +

警告通知

+

必要に応じて、端末がアクティブのとき(端末のロックが解除されていて画面が表示されているとき)に通知が小さいフローティング ウィンドウ(警告通知ともいいます)に表示されるようになりました。これらの通知の外観はデベロッパーによる簡易形式の通知に似ていますが、警告通知には操作ボタンも表示されます。ユーザーは、現在のアプリから離れることなく警告通知に応答したり、警告通知を拒否したりできます。

+ +

たとえば次のような条件の場合に警告通知が起動されることがあります。

+ + + +

こうした条件の下でアプリで通知を実装する場合は、必ず警告通知が正しく表示されるようにしてください。

+ +

アプリで RemoteControlClient を使用する場合

+

{@link android.media.RemoteControlClient} クラスは非推奨になりました。できるだけ速やかに新しい {@link android.media.session.MediaSession} API に切り替えてください。

+ +

Android 5.0 のロック画面には {@link android.media.session.MediaSession} または {@link android.media.RemoteControlClient} に対応したトランスポート コントロールは表示されません。アプリでは代わりに、通知を通してロック画面からメディア再生コントロールを提供することができます。これにより、メディアボタンの表示をより詳細にコントロールできるようになると同時に、端末のロック時とロック解除時で一貫したユーザー エクスペリエンスが提供されます。

+ +

この目的のために、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()} メソッドに渡し、この通知によって以後のメディア セッションがコントロールされることをシステムに伝えます。

+ +

必ず通知の表示を {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} に設定し、どのようなロック画面でも安全に表示できる(それ以外の場合はセキュリティで保護される)ものとしてマークします。詳しくは、ロック画面の通知をご覧ください。

+ +

アプリを Android TV または Wear プラットフォームで実行する場合、メディア再生コントロールを表示するには {@link android.media.session.MediaSession} クラスを実装してください。アプリで Android 端末のメディアボタン イベントを受信する必要がある場合は、{@link android.media.session.MediaSession} も実装してください。

+ +

アプリで getRecentTasks() を使用する場合

+ +

Android 5.0 で新しい「同時実行中のドキュメント / アクティビティ タスク」機能が導入されたことに伴い(下記の最近使ったアプリ画面に表示される同時実行中のドキュメント / アクティビティをご覧ください)、ユーザーのプライバシーを向上させるために {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} メソッドは非推奨になりました。下位互換性の目的から、このメソッドは引き続きデータの小さなサブセット(呼び出し側アプリの独自のタスクや、他の機密でないタスク(たとえばホーム)など)を返します。アプリで独自のタスクを取得するためにこのメソッドを使用している場合は、代わりに {@link android.app.ActivityManager#getAppTasks() getAppTasks()} を使用してその情報を取得してください。

+ +

Android Native Development Kit(NDK)を使用している場合

+ +

Android 5.0 では 64 ビット システムのサポートが導入されています。64 ビットへの拡大によってアドレス空間が増加し、パフォーマンスが向上します。一方で、既存の 32 ビット アプリについても引き続き完全にサポートされます。また、64 ビットのサポートによって OpenSSL の暗号化のパフォーマンスも向上します。さらに、今回のリリースではネイティブの OpenGL ES(GLES)3.1 のサポートに加えて、新しいネイティブのメディア NDK API も導入されています。

+ +

Android 5.0 で提供される 64 ビットのサポートを利用するには、Android NDK のページから NDK Revision 10c をダウンロードしてインストールしてください。NDK の重要な変更点とバグ修正について詳しくは、Revision 10c のリリースノートをご覧ください。

+ +

アプリからサービスにバインドする場合

+ +

{@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} メソッドについて、明示的な {@link android.content.Intent} の指定が必須となり、暗黙的なインテントを指定した場合は例外をスローするようになりました。アプリが確実にセキュリティで保護されるように、{@link android.app.Service} の起動やバインドの際は明示的なインテントを使用し、サービスに対してインテント フィルタを宣言しないでください。

+ +

アプリが WebView を使用している場合

+ +

Android 5.0 ではアプリのデフォルトの動作が変更されています。

+ + +

ユーザー インターフェース

+ +

Material Design のサポート

+ +

次期リリースでは、Android の新しい「Material Design」スタイルが新たにサポートされます。Material Design を使うと、外観が動的に変化し、ユーザーが UI 要素の切り替えを自然だと感じるようなアプリを作成できます。このサポートには以下が含まれます。

+ + + +

アプリに Material Design の機能を追加する方法について詳しくは、Material Design をご覧ください。

+ +

最近使ったアプリ画面に表示される同時実行中のドキュメント / アクティビティ

+ +

以前のリリースでは、最近使ったアプリ画面には、ユーザーが最近操作したアプリごとにタスクを 1 つずつしか表示できませんでした。今後は、ドキュメント用の同時実行中のアクティビティが追加される場合、必要に応じて複数のタスクをアプリで開けるようになります。この機能により、ユーザーは最近使ったアプリ画面から個々のアクティビティやドキュメントをすばやく切り替えられるようになります。すべてのアプリにわたって一貫した切り替え操作になるので、マルチタスクの操作がしやすくなります。こうした同時実行中のタスクの例としては、ウェブブラウザ アプリで複数のタブを開く、生産性向上アプリで複数のドキュメントを開く、ゲームで複数の試合を同時に実行する、メッセージ アプリで複数のチャットを実行する、などが考えられます。アプリのタスクは {@link android.app.ActivityManager.AppTask} クラスを使って管理できます。

+ +

論理的な切れ目を挿入してアクティビティが新しいタスクとして扱われるようにするには、{@link android.app.Activity#startActivity(android.content.Intent) startActivity()} を使用してアクティビティを起動するときに {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} を使用します。または、マニフェストで <activity> 要素の {@code documentLaunchMode} 属性を {@code "intoExisting"} または {@code "always"} に設定しても、この動作を実現できます。

+ +

最近使ったアプリ画面が適切に整理されるように、最近使ったアプリ画面に表示できるタスクの最大数をアプリから設定することができます。それには、<application> 属性 {@link android.R.attr#maxRecents android:maxRecents} を設定します。指定できる現在の最大タスク数はユーザーあたり 50 個(RAM が不足している端末の場合は 25 個)です。

+ +

最近使ったアプリ画面に表示されるタスクが再起動後も持続されるように設定することができます。この持続動作をコントロールするには android:persistableMode 属性を使用します。また、{@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()} メソッドを呼び出して、最近使ったアプリ画面に表示されるアクティビティの表示プロパティ(アクティビティの色、ラベル、アイコンなど)を変更することもできます。

+ +

WebView の更新

+

Android 5.0 では Chromium M37 に対する {@link android.webkit.WebView} の実装が更新され、セキュリティと安定性が強化されているほか、バグが修正されています。Android 5.0 で実行される {@link android.webkit.WebView} のデフォルトのユーザーエージェント文字列が更新され、バージョン番号として 37.0.0.0 が組み込まれています。

+ +

今回のリリースでは {@link android.webkit.PermissionRequest} クラスが導入されています。アプリでこのクラスを使用することで、getUserMedia() などのウェブ API を通じてカメラやマイクなどの保護リソースにアクセスするための権限を {@link android.webkit.WebView} に許可できます。{@link android.webkit.WebView} に権限を許可するためには、これらのリソースに対する適切な Android 権限をアプリに持たせる必要があります。

+ +

新しい onShowFileChooser() メソッドでは、{@link android.webkit.WebView} で入力フォーム項目を使用できるようになり、ファイル選択機能を起動して Android 端末から画像やファイルを選択できるようになりました。

+ +

さらに、今回のリリースでは WebAudioWebGLWebRTC の各オープン規格もサポートされるようになります。今回のリリースに含まれる新機能について詳しくは、Android 用 WebView をご覧ください。

+ +

画面のキャプチャと共有

+

Android 5.0 では、新しい {@link android.media.projection} API を使用して画面キャプチャ機能や画面共有機能をアプリに追加できます。この機能は、たとえばビデオ会議アプリで画面の共有を有効にしたい場合などに便利です。

+ +

アプリで新しい {@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} を使用して画面キャプチャ用のダイアログを起動し、ユーザーの許可をリクエストする必要があります。

+ +

新しい API の使用例については、サンプル プロジェクトの {@code MediaProjectionDemo} クラスをご覧ください。

+ +

通知

+ +

ロック画面の通知

+

Android 5.0 のロック画面には通知を表示する機能が組み込まれています。ユーザーは [設定] を通じて、機密性のある通知内容をセキュリティで保護されたロック画面に表示できるようにするかどうかを選択できます。

+ +

アプリでは、セキュリティで保護されたロック画面にアプリの通知が表示されるときの表示の詳細レベルをコントロールできます。表示レベルをコントロールするには、{@link android.app.Notification.Builder#setVisibility(int) setVisibility()} を呼び出して次のいずれかの値を指定します。

+ + + +

表示レベルが {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE} の場合は、詳細な個人情報を隠した編集済みの通知内容を表示することもできます。たとえば SMS アプリで、「3 個の新しいテキスト メッセージがあります」という通知は表示しますが、メッセージの内容や送信者を表示しないようにできます。こうした代わりの通知を表示するには、最初に {@link android.app.Notification.Builder} を使用して代わりとなる通知を作成します。プライベートの通知オブジェクトを作成するときに、{@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} メソッドを使用して代わりの通知をオブジェクトに添付します。

+ +

通知メタデータ

+

Android 5.0 では、アプリの通知がよりスマートに並べ替えられるように、通知に関連付けられたメタデータが使用されます。メタデータを設定するには、通知の作成時に {@link android.app.Notification.Builder} で次のメソッドを呼び出します。

+ + + +

グラフィック

+ +

OpenGL ES 3.1 のサポート

+

Android 5.0 では、OpenGL ES 3.1 のネイティブ サポートとそれに対応した Java インターフェースが追加されています。OpenGL ES 3.1 では主に次の新機能が提供されています。

+ + + +

Android での OpenGL ES 3.1 の Java インターフェースは {@link android.opengl.GLES31} で提供されます。OpenGL ES 3.1 を使用する場合は、必ずマニフェスト ファイルで {@code } タグと {@code android:glEsVersion} 属性を使用して宣言してください。次に例を示します。

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

端末でサポートされている OpenGL ES のバージョンを実行時にチェックする方法など、OpenGL ES の使い方について詳しくは、OpenGL ES API ガイドをご覧ください。

+ +

Android Extension Pack

+ +

OpenGL ES 3.1 に加えて、今回のリリースでは、高度なグラフィック機能のネイティブ サポートとそれに対応した Java インターフェースを実現する拡張パックが提供されています。これらの拡張機能は Android で 1 つのパッケージとして扱われます({@code ANDROID_extension_pack_es31a} 拡張機能が存在する場合、アプリではパッケージ内のすべての拡張機能が存在すると見なして、1 つの {@code #extension} ステートメントでシェーディング言語機能を有効にすることができます)。

+ +

拡張パックは以下をサポートします。

+ + + +

拡張パックの Java インターフェースは {@link android.opengl.GLES31Ext} で提供されます。アプリのマニフェストで、拡張パックをサポートしている端末にのみアプリをインストールする必要があることを宣言できます。次に例を示します。

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

メディア

+ +

高度なカメラ機能に対応した Camera API

+ +

Android 5.0 では、写真のキャプチャや画像処理をきめ細かく行えるように、新しい android.hardware.camera2 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} を設定して、1 枚のショットを撮影するようにしたり、一度に複数の画像を撮影するようにしたりできます。

+ +

新しい画像がキャプチャされたときに通知を受けるには、{@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} に画像キャプチャ メタデータが設定されます。

+ +

アプリで {@link android.hardware.camera2.CameraCharacteristics} クラスを使用すると、端末でどのカメラ機能が使用できるのかを検出できます。オブジェクトの {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} プロパティは、カメラの機能レベルを表します。

+ + + +

最新の Camera API の使い方について詳しくは、このリリースに付属している {@code Camera2Basic} と {@code Camera2Video} の実装サンプルをご覧ください。

+ +

音声の再生

+

今回のリリースでは {@link android.media.AudioTrack} に次の変更が加えられています。

+ + +

メディア再生コントロール

+

メディアの再生についての情報をシステム UI に知らせ、アルバムアートの抽出と表示ができるように、新しい通知 / メディア API を使用してください。UI とサービスにまたがるメディアの再生のコントロールが、新しい {@link android.media.session.MediaSession} クラスと {@link android.media.session.MediaController} クラスを使用して、より簡単に行えるようになりました。

+ +

新しい {@link android.media.session.MediaSession} クラスは非推奨となった {@link android.media.RemoteControlClient} クラスの代わりとなるもので、トランスポート コントロールとメディアボタンを処理するための単一のコールバック メソッド セットを提供します。アプリでメディアの再生を提供して Android TV または Wear プラットフォームで実行する場合は、{@link android.media.session.MediaSession} クラスを使用し、同じコールバック メソッドを通じてトランスポート コントロールを処理してください。

+ +

新しい {@link android.media.session.MediaController} クラスを使用して独自のメディア コントローラ アプリを作成できるようになりました。このクラスは、アプリの UI プロセスからスレッドセーフな方法でメディアの再生を監視しコントロールするための手段を提供します。コントローラの作成時に {@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} オブジェクトを登録し、そのセッションでメタデータや状態変更がないかをリッスンできます。

+ +

さらに、新しい {@link android.app.Notification.MediaStyle} クラスを使用して、再生コントロールをメディア セッションに結び付けることができる高機能な通知を作成できます。

+ +

メディアの参照

+

Android 5.0 では、新しい android.media.browse API を通じて、あるアプリから別のアプリのメディア コンテンツ ライブラリを参照する機能が導入されています。アプリのメディア コンテンツを公開するには、{@link android.service.media.MediaBrowserService} クラスを拡張します。{@link android.service.media.MediaBrowserService} の実装で {@link android.media.session.MediaSession.Token} へのアクセスを提供することで、別のアプリがそのサービスを通じて提供されるメディア コンテンツを再生できるようになります。

+

メディア ブラウザ サービスを操作するには、{@link android.media.browse.MediaBrowser} クラスを使用します。{@link android.media.browse.MediaBrowser} インスタンスの作成時に、{@link android.media.session.MediaSession} のコンポーネント名を指定します。その後、アプリからブラウザ インスタンスを使用して、関連付けられたサービスに接続し、{@link android.media.session.MediaSession.Token} オブジェクトを取得して、そのサービスを通じて公開されたコンテンツを再生できます。

+ +

ストレージ

+ +

ディレクトリの選択

+ +

Android 5.0 ではストレージ アクセス フレームワークが拡張され、ユーザーがディレクトリのサブツリー全体を選択し、それぞれのアイテムについてユーザーの確認を必要とせずに、含まれているすべてのドキュメントへの読み取り / 書き込みアクセス権をアプリに与えることができるようになります。

+ +

ディレクトリのサブツリーを選択するには、{@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE} インテントを作成して送信します。サブツリーの選択をサポートしているすべての {@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()} と一緒に使用することでサブツリーを探索できます。

+ +

新しい {@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} をチェックして、提供側が呼び出しをサポートしているかどうかを確認してください。

+ +

{@link android.provider.DocumentsProvider} を実装しようとしていて、サブツリーの選択をサポートしたい場合は、{@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()} を実装し、{@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD} を {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS} に追加します。

+ +

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} を使用して明示的にスキャンし、新しいコンテンツがないかを調べることもできます。

+ +

ワイヤレスと接続

+ +

マルチネットワーク接続

+

Android 5.0 では新しいマルチネットワーク API が導入されています。これらの API を通じてアプリで動的にスキャンを実行し、特定の機能を持つネットワークが使用できないかを調べて、それらへの接続を確立することができます。この機能は、アプリで SUPL、MMS、キャリア課金ネットワークなどの特殊なネットワークを必要とする場合や、特定のタイプのトランスポート コントロールを使用してデータを送信したい場合に便利です。

+ +

アプリでネットワークを動的に選択して接続する手順は次のとおりです。

+ +
    +
  1. {@link android.net.ConnectivityManager} を作成します。
  2. +
  3. {@link android.net.NetworkRequest.Builder} クラスを使用して {@link android.net.NetworkRequest} オブジェクトを作成し、アプリで必要なネットワーク機能とトランスポート タイプを指定します。
  4. +
  5. 適切なネットワークがないかどうかをスキャンして調べるには、{@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()} メソッドを使用します。
  6. +
+ +

適切なネットワークが検出されると、システムはそのネットワークに接続し、{@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} コールバックを呼び出します。このコールバックの {@link android.net.Network} オブジェクトを使用して、ネットワークに関する詳細な情報を取得したり、選択されたネットワークを使用するようにトラフィックを設定したりできます。

+ +

Bluetooth Low Energy

+

Android 4.3 では、Bluetooth Low EnergyBluetooth LE)がプラットフォームでサポートされ、中央の役割として導入されました。Android 5.0 では、Android 搭載デバイスが Bluetooth LE の「周辺デバイス」として機能できるようになりました。アプリからこの機能を使用することで、アプリの存在を付近のデバイスに知らせることができます。たとえば、デバイスを歩数計や健康管理機器として機能させるアプリを作成して、それらのデータを他の Bluetooth LE 対応デバイスとやり取りすることができます。

+

新しい {@link android.bluetooth.le} API を使用すると、アプリからアドバタイズをブロードキャストしたり、応答の有無をスキャンして調べたり、付近の Bluetooth LE 対応デバイスとの接続を確立したりできます。新しいアドバタイズ機能やスキャン機能を使用するには、{@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 権限をマニフェストに追加します。ユーザーは、Play ストアでアプリを更新またはダウンロードするときに、「Bluetooth接続情報: Bluetoothの制御(付近のBluetoothデバイスへの送信、詳細情報の取得など)をアプリに許可します」という権限をアプリに許可するかどうかたずねられます。

+ +

他のデバイスがアプリを検出できるように Bluetooth LE によるアドバタイズを開始するには、{@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} を呼び出し、{@link android.bluetooth.le.AdvertiseCallback} クラスの実装を渡します。このコールバック オブジェクトは、アドバタイズ操作の成否を知らせる通知を受信します。

+ +

Android 5.0 で導入された {@link android.bluetooth.le.ScanFilter} クラスをアプリで使用すると、必要な特定のタイプのデバイスのみを探すスキャンを実行できます。Bluetooth LE デバイスを探すためのスキャンを開始するには、{@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} を呼び出し、フィルタのリストを渡します。このメソッド呼び出しでは、{@link android.bluetooth.le.ScanCallback} の実装を渡し、Bluetooth LE のアドバタイズが検出されたときにそれを知らせるようにする必要もあります。

+ +

NFC の機能強化

+

Android 5.0 では、NFC をより幅広く柔軟に利用できるように、次の機能強化が追加されています。

+ + + +

Project Volta

+ +

新機能に加えて、Android 5.0 では特に電池寿命が向上しています。新しい API やツールを使用して、アプリの消費電力に関する情報の取得や消費電力の最適化を行ってください。

+ +

ジョブのスケジューリング

+

Android 5.0 で提供される新しい {@link android.app.job.JobScheduler} API を使用すると、システムが後で、または指定の条件(端末の充電時など)の下で、非同期に実行するジョブを定義することによって、電池寿命を最適化できます。ジョブ スケジューリングは、アプリで次のような状況を処理する場合に便利です。

+ + +

作業ユニットは {@link android.app.job.JobInfo} オブジェクトによってカプセル化されます。このオブジェクトでスケジューリング条件を指定します。

+ +

スケジューリング済みのタスクをどのように実行するのかを設定するには、{@link android.app.job.JobInfo.Builder} クラスを使用します。タスクが次のような特定の条件下で実行されるようにスケジューリングできます。

+ + + +

たとえば、次のようなコードを追加すると、タスクを定額制ネットワーク上で実行できます。

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

端末の電力が安定している場合(つまり、端末が 2 分以上電源に接続されていて、電池が正常レベルにある場合)には、ジョブがまだ期限切れになっていなくても、実行の準備ができているスケジューリング済みのジョブがすべて実行されます。

+ +

{@link android.app.job.JobScheduler} API の使用例については、このリリースに付属している {@code JobSchedulerSample} の実装サンプルをご覧ください。

+ +

電池の使用統計情報を提供するデベロッパー向けツール

+ +

新しい {@code dumpsys batterystats} コマンドでは、端末での電池の使用に関して役立つ統計データが、一意のユーザー ID(UID)別に整理されて生成されます。次のような統計情報が生成されます。

+ + + +

出力をカスタマイズするための各種オプションについて調べるには、{@code --help} オプションを使用します。たとえば対象のアプリ パッケージについて、端末が最後に充電されてから現在までの電池の使用統計情報を出力するには、次のコマンドを実行します。 +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

{@code dumpsys} コマンドの出力に対して電池履歴ツールを使用すると、電力に関するイベントをログから取得して視覚的に表現する HTML を生成できます。これらの情報を利用することで、電池に関連した問題の把握や診断がしやすくなります。

+ +

職場向けや教育向けの Android

+

管理対象プロビジョニング

+ +

Android 5.0 では社内環境の中でアプリを実行するための新機能が提供されています。端末管理者は、ユーザーが既存の個人用アカウントを持っている場合に、管理対象プロビジョニングのプロセスを開始して、同時かつ別々に存在する「管理対象プロフィール」を端末に追加することができます。管理対象プロフィールに関連付けられたアプリは、管理対象外のアプリと一緒に、ユーザーのランチャー、最近使ったアプリ画面、通知に表示されます。

+ +

管理対象プロビジョニングのプロセスを開始するには、{@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()} を呼び出してこの管理対象プロフィールを有効にすることができます。

+ +

デフォルトでは、一部の少数のアプリのみが管理対象プロフィールで有効になります。管理対象プロフィールで追加のアプリをインストールするには、{@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()} を呼び出します。

+ +

ランチャー アプリを開発している場合は、新しい {@link android.content.pm.LauncherApps} クラスを使用して、現在のユーザーの起動可能なアクティビティのリストや、関連するすべての管理対象プロフィールを取得できます。ランチャーでアイコン drawable に作業バッジを付けると、管理対象アプリを視覚的に目立たせることができます。バッジ付きのアイコンを取得するには {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()} を呼び出します。

+ +

新機能の使い方については、このリリースに付属している {@code BasicManagedProfile} の実装サンプルをご覧ください。

+ +

端末所有者

+

Android 5.0 では、端末所有者アプリの展開機能が導入されています。「端末所有者」は特殊なタイプの端末管理者で、第 2 ユーザーの作成や削除、端末全体の設定について、さらに詳細な操作を実行できます。端末管理者アプリでは {@link android.app.admin.DevicePolicyManager} クラスのメソッドを使用して、管理対象端末の設定、セキュリティ、アプリをきめ細かくコントロールできます。端末で有効にできる端末管理者は一度に 1 つだけです。

+ +

端末管理者を展開して有効にするには、端末がプロビジョニングされていない状態となっている間に、プログラミング アプリから端末への NFC データ転送を実行する必要があります。このデータ転送では、管理対象プロビジョニングで説明しているインテントのプロビジョニングの場合と同じ情報が送信されます。

+ +

画面の固定

+ +

Android 5.0 では、新しい画面固定 API が導入されています。これを使用すると、ユーザーがタスクから離れる操作や通知による割り込みを一時的に制限することができます。たとえば Android で、重要度の高い評価要件に対応した教育向けアプリや、単一用途のアプリ、またはキオスクアプリを開発している場合などに役立ちます。アプリで画面の固定を有効にすると、そのモードを終了するまで、ユーザーは通知を表示することも、他のアプリにアクセスすることも、ホーム画面に戻ることもできなくなります。

+ +

次の 2 つの方法で画面の固定を有効にすることができます。

+ + + +

タスクのロックが有効になると、次のような動作になります。

+ + + +

印刷フレームワーク

+ +

PDF をビットマップとしてレンダリング

+

新しい {@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} をビットマップに変換できます。また、ドキュメントの一部分だけをビットマップ画像に変換したい場合は追加のパラメータを設定できます(たとえば、ドキュメントを拡大するためにタイル レンダリングを実装する場合など)。

+ +

新しいアプリの使用例については、{@code PdfRendererBasic} のサンプルをご覧ください。

+ +

システム

+

アプリの使用統計情報

+

新しい {@link android.app.usage} API を使用して Android 端末のアプリ使用履歴にアクセスできるようになりました。この API では、非推奨となった {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()} メソッドよりも詳細な使用統計情報が提供されます。この API を使用するには、最初にマニフェストで {@code "android.permission.PACKAGE_USAGE_STATS"} 権限を宣言する必要があります。また、ユーザーも [設定] > [セキュリティ] > [アプリ] を通じてこのアプリの使用アクセス権を有効にする必要があります。

+ +

使用統計データはアプリ単位で収集され、毎日、毎週、毎月、毎年の各期間でデータが集計されます。データの最長保持期間は次のとおりです。

+ + + +

各アプリについて次のデータが記録されます。

+ + +

テストとユーザー補助

+ +

テストとユーザー補助の向上

+

Android 5.0 ではテストとユーザー補助に関する次のサポートが追加されています。

+ + + +

IME

+ +

入力言語の切り替えやすさの向上

+ +

Android 5.0 以降、ユーザーはプラットフォームでサポートされているすべてのインプット メソッド エディタ(IME)を簡単に切り替えられるようになります。指定された切り替え操作(通常はソフト キーボード上の地球アイコンのタップ)を行うと、それらの IME のすべてが循環して切り替わります。この動作変更は {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()} メソッドによって実装されます。

+ +

また、次の IME に切り替え機能が組み込まれているかどうか(つまり、対象の IME が次に続く IME への切り替えをサポートしているかどうか)がチェックされるようになりました。切り替え機能のある IME から切り替え機能のない IME への循環切り替えは行われません。この動作変更は {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()} メソッドによって実装されます。 + +

最新の IME 切り替え API の使用例については、このリリースに付属している最新のソフト キーボードの実装サンプルをご覧ください。IME の切り替えを実装する方法について詳しくは、入力方法の作成をご覧ください。 +

+ +

マニフェスト宣言

+ +

宣言可能な必須機能

+

次の値が {@code } 要素でサポートされるようになりました。これにより、アプリで必要としている機能を備えている端末にのみアプリをインストールできるようになります。

+ + + +

ユーザー権限

+ +

次の権限が {@code } 要素でサポートされ、アプリで特定の API へのアクセスに必要な権限を宣言できるようになりました。

+ + diff --git a/docs/html-intl/intl/ja/about/versions/lollipop.jd b/docs/html-intl/intl/ja/about/versions/lollipop.jd new file mode 100644 index 0000000..9c7c52c --- /dev/null +++ b/docs/html-intl/intl/ja/about/versions/lollipop.jd @@ -0,0 +1,256 @@ +page.title=Android Lollipop + +@jd:body + + + + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +

Android 5.0 Lollipop は、これまでの Android の中で最も大きく刷新された意欲的なリリースです。

+ +

このリリースには、ユーザー向けの新しい機能だけでなく、デベロッパー向けに数多くの API が追加されています。これらの API を使用することで、携帯電話、タブレット、ウェアラブルに加え、テレビや自動車用にも Android を拡張できます。

+ +

新しいデベロッパー向け API の概要については、Android 5.0 API をご覧ください。Android 5.0 のユーザー向けの新機能については www.android.com をご覧ください。

+ + + +

Material Design

+ +

Android 5.0 では新たに Material Design が導入され、拡張 UI ツールキットを使用することで新しいデザイン パターンをアプリに簡単に統合できるようになりました。

+ + + +

新しい 3D ビュー機能では、z レベルを設定することでビュー階層から要素を持ち上げることができるようになりました。また、リアルタイム シャドウ機能により、要素が移動しても影を追随させることができます。

+ + +

アクティビティ遷移機能が組み込まれたことで、美しいアニメーションを使って次の状態へスムーズに遷移できるようになりました。マテリアル テーマを使用すると、アクティビティの遷移がさらにスムーズになります。たとえば、アクティビティ間で共有視覚要素を使用できるようになりました。

+ + + +
+
+ +
+
+ 端末画面をクリックすると動作が再現されます +
+
+ + +

アプリ内のタップ コントロール(ボタン、チェックボックスなど)にリップル アニメーションを適用できます。 + +

XML でベクター ドローアブルを定義して、さまざまな方法でアニメーション化することも可能です。ベクター ドローアブルは定義を変更することなく拡大縮小できるため、単色のアプリ内アイコンに最適です。

+ +

システム管理の処理スレッドとして RenderThread が追加されており、メインの UI スレッドに遅延が発生してもアニメーションをスムーズに再生できます。

+ + +

パフォーマンス重視

+ +

Android 5.0 では、より高速でスムーズな演算処理が実現します。

+ +

新しい ART ランタイムに完全に移行しました。ART は基礎から徹底的に再構築したランタイムで、AOT(ahead-of-time)、JIT(just-in-time)、インタプリタ型のコードをまとめて処理できます。ARM、x86、MIPS アーキテクチャに対応した 64 ビット完全互換のランタイムです。

+ +

ART は、アプリのパフォーマンスと応答性を改善します。ガベージ コレクションを効率的することで、GC イベントによる一時停止の回数や時間を減らしました。垂直同期の期間にうまく適合するようになったことで、アプリがフレームをスキップすることもなくなります。また、メモリを動的に移動してフォアグラウンドのパフォーマンスも最適化しています。

+ +

Android 5.0 では、Nexus 9 の NVIDIA Tegra K1 で採用されている64 ビット アーキテクチャのプラットフォーム サポートを導入しています。最適化によって広いアドレス空間が提供され、特定の演算負荷の処理能力が向上しました。Java で記述されているアプリは、修正なしで自動的に 64 ビット アプリとして実行されます。ネイティブ コードを使用するアプリのためには、ARM v8、x86-64、MIPS-64 用の新しい ABI をサポートするため NDK を拡張しました。

+ +

Android 5.0 では、パフォーマンスをさらに向上させるため、A/V 同期についても改善に取り組みました。音声と映像のパイプラインを搭載したことでタイムスタンプの正確性が向上し、動画アプリやゲームのコンテンツの同期がスムーズに行われるようになりました。

+ + +

通知

+ +

Android 5.0 の通知は、より見やすく、アクセスしやすく、カスタマイズしやすくなりました。

+ + + +

さまざまな通知の詳細をロック画面に表示できるようになり、通知内容をすべて表示するか、一部だけ表示するか、表示しないかをユーザーが選択できます。

+ +

着信などの重要な通知は警告通知と呼ばれるフローティング ウィンドウに表示されるため、使用中のアプリを表示したまま応答したり破棄したりできます。

+ +

Android 5.0 では、通知に新しいメタデータを追加して、関連付けられている連絡先(ランク付け用)、カテゴリ、優先度を収集できるようになりました。

+ +

新たに追加されたメディア通知テンプレートを使用すると、最大 6 つの操作ボタンを使用して、一貫性のあるメディア コントロール(例: 「いいね」や「+1」)を通知に追加できます。RemoteViews はもう必要ありません。

+ + + +

アプリを大画面で

+ +

Android TV は、アプリを大画面で楽しむためのテレビ用プラットフォームを提供します。シンプルなホーム画面をベースに構成されており、ユーザーへのおすすめや音声検索によってコンテンツを簡単に見つけることができます。

+ +

Android TV なら、アプリやゲームを迫力の大画面で楽しむことができ、ゲーム コントローラなどの入力デバイスにも対応しています。Android では v17 サポート ライブラリLeanback UI フレームワークが用意されており、離れた場所からでも操作しやすい 10 フィート UI を簡単に実現できます。

+ +

Android TV Input Framework(TIF)を使用すると、HDMI 入力、テレビチューナー、IPTV 対応受信機などからの動画ストリームを TV アプリで処理できます。TV Input が公開しているメタデータを使用することで、放送中のテレビ番組を検索できるようにしたり、ユーザーへのおすすめを表示したりできます。また、HDMI-CEC コントロール サービスを使用して、複数のデバイスを 1 つのリモコンで操作できるようにすることも可能です。

+ +

TV Input フレームワークを使用すると、さまざまな入力ソースからのテレビ番組をまとめ、ユーザーが 1 つのインターフェースで閲覧したり視聴したりできるようにすることができます。提供するコンテンツの TV Input サービスを作成することで、ユーザーが TV デバイスでコンテンツを視聴する可能性を高めることができます。

+ + + + + +

アプリのドキュメント化

+ +

Android 5.0 では、[概要](以前は [最近])のスペースをデザインしなおして用途を広げ、マルチタスクにも使えるようにしました。

+ +

新しい API を使用することで、アプリ内の各アクティビティを個別のドキュメントとして、他の最近の画面と並べて表示できます。

+ +

これにより、ユーザーがコンテンツやサービスにすばやくアクセスできるようになります。たとえば、生産性アプリのファイル、ゲームでのプレーヤーの組み合わせ、メッセージ アプリのチャットなどを、別々のドキュメントにして同時に表示できます。

+ + + +

進化した接続性

+ +

Android 5.0 に追加された新しい API を使用すると、アプリと BLE(Bluetooth Low Energy)の同時処理が可能になり、スキャン(セントラル モード)とアドバタイズ(ペリフェラル モード)の両方を行うことができます。

+ +

新しいマルチネットワーキング機能により、アプリから特定の機能を利用できるネットワーク(Wi-Fi、モバイル、従量制、特定のネットワーク機能を提供するネットワークなど)を探せるようになりました。ネットワークが見つかったら、アプリから接続を要求したり、切断やネットワーク変更に対して応答したりできます。

+ +

NFC API では、アプリから NFC AID(Application ID)を動的に登録できるようになりました。また、アクティブなサービスごとに望ましいカード エミュレーション サービスを設定したり、UTF-8 テキストデータを格納する NDEF レコードを作成したりすることも可能になりました。

+ + + +

高性能グラフィックス

+ +

Khronos OpenGL ES 3.1 をサポートしたことで、対応デバイスで実行するゲームやアプリに高性能な 2D / 3D グラフィックス機能を利用できるようになりました。

+ +

OpenGL ES 3.1 により、コンピュート シェーダー、ステンシル テクスチャ、アクセラレータによる視覚効果、高品質 ETC2/EAC テクスチャ圧縮、高度なテクスチャ レンダリング、標準化されたテクスチャ サイズ、レンダー バッファ フォーマットなど、さまざまな機能が追加されました。

+ + +
+ +

Gameloft の Rival Knights では、AEP の ASTC(Adaptive Scalable Texture Compression)と ES 3.1 のコンピュート シェーダーを使用して、ハイ ダイナミック レンジ(HDR)によるブルーム効果や詳細なグラフィックスを実現しています。

+
+ +

Android 5.0 には OpenGL ES 拡張をまとめた Android Extension Pack(AEP)も追加されており、テッセレーション シェーダー、ジオメトリ シェーダー、ASTC テクスチャ圧縮、サンプル単位での補間とシェーディングなど、高度なレンダリング機能を使用できます。AEP を使用することで、GPU を無駄なく利用して高性能なグラフィックスを実現できます。

+ + +

さらに強化された音声

+ +

新しい音声キャプチャ デザインにより、音声入力の待ち時間が短縮されました。新しいデザインには、ブロックが読み込み中にしか発生しない高速キャプチャ スレッド、ネイティブ サンプル レートでの高速トラック キャプチャ クライアント、チャンネル カウント、ビット深度、リサンプリングを提供する通常のキャプチャ クライアント、チャンネルのアップミックスとダウンミックス、ビット深度の調整などが含まれています。

+ +

マルチチャンネルの音声ストリーム ミキシングを使うと、5.1 や 7.1 を含め最大 8 つのチャンネルをミキシングできる本格的なオーディオ アプリを実現できます。

+ +

アプリでは、メディア コンテンツを公開したり、他のアプリが公開しているメディアを閲覧したり、その再生をリクエストしたりできます。コンテンツはクエリ可能なインターフェースで公開されるため、端末に保持する必要はありません。

+ +

また、特定のロケール、音質、レイテンシ速度に関連付けられた音声プロフィールを使うことで、合成音声によるテキスト読み上げをきめ細かくコントロールできます。新しい API では、合成エラーチェック、ネットワーク合成、言語検出、ネットワーク フォールバックなどへの対応も進めました。

+ +

Android が標準の USB オーディオ機器にも対応したことで、USB ヘッドセット、スピーカー、マイクなどの高性能デジタル機器も使用できるようになりました。Android 5.0 には、Opus 音声コーデックのサポートも追加されています。

+ +

メディア再生をコントロールするための新しい {@link android.media.session.MediaSession} API を使用することで、複数の画面にわたって一貫性のあるメディア コントロールや各種コントローラを簡単に表示できるようになりました。

+ + +

カメラと動画の拡張

+ +

Android 5.0 ではカメラ用の API が一新されており、YUV、Bayer RAW などの未加工フォーマットのキャプチャや、露出時間、ISO 感度、フレーム単位のフレーム持続時間などのパラメータ調整が可能です。カメラ パイプラインが完全に同期するようになったことで、対応デバイスを使えば未圧縮のフル解像度 YUV イメージを 30 FPS でキャプチャできます。

+ +

イメージと一緒に、ノイズモデルや光情報などのメタデータをカメラからキャプチャすることもできます。

+ +

ネットワーク経由で動画ストリームを送信するアプリでは、H.265 HEVC(High Efficiency Video Coding)を利用して動画データのエンコードとデコードを最適化できるようになりました。

+ +

Android 5.0 にはマルチメディア トンネリングのサポートも追加されており、超高解像度(4K)のコンテンツを楽しむための最適な環境を提供するほか、圧縮された音声データと動画データを一緒に再生することも可能です。

+ + + +
+ +

個人用と仕事用のアプリをまとめて表示し、バッジで簡単に識別できます。

+
+ + +

職場での Android

+ +

企業環境において BYOD(Bring-Your-Own-Device)を実現するには、管理されたプロビジョニング手続きによって端末の安全なワーク プロフィールを作成する必要があります。ランチャー内のアプリにワークバッジが表示されている場合は、そのアプリがワーク プロフィール内で IT 管理者によって管理されていることを表します。

+ +

通知の表示は個人プロフィールとワーク プロフィールが 1 つに統合されていますが、データはプロフィール別に分けて管理されます。同じアプリを両方のプロフィールで使用しても、それぞれのデータは別々に保管されます。

+ +

会社所有の端末は、IT 管理者が新しい端末として登録して端末所有者を設定します。会社所有の端末にグローバル端末設定を定義する端末所有者アプリをインストールすることで、従業員はその端末を持ち出すことができるようになります。

+ + + +

画面のキャプチャと共有

+ +

Android 5.0 では、アプリに画面キャプチャや画面共有の機能を追加できます。

+ +

ユーザーの承諾が得られれば、画面から安全性の低い動画をキャプチャしてネットワークに配信することも可能です。

+ + +

新しいタイプのセンサー

+ +

Android 5.0 には、新たに傾き検出センサーが追加され、対応デバイスでの操作の認識精度が向上しました。また、心拍数センサーも追加され、デバイスに接触している人の心拍数を記録できるようになりました。

+ +

新しい操作複合センサーを使用すると、「ウェイクアップ」(オンにする)ジェスチャー、「ピックアップ」(手に取る)ジェスチャー、「グランス」(ちらりと見る)ジェスチャーなどの特殊な操作を検出できます。

+ + + +

Chromium WebView

+ +
+ +
+ +

Android 5.0 の初期リリースには、Chromium M37 リリースをベースとした Chromium for {@link android.webkit.WebView} が含まれており、これにより WebRTCWebAudioWebGL がサポートされます。

+ +

Chromium M37 には、すべての Web Components 仕様(Custom Elements、Shadow DOM、HTML Imports、Templates)のネイティブ サポートも含まれています。つまり、Polymer とその Material Design 要素を WebView で、Polyfill なしで使用できるということです。

+ +

Android 4.4 以降の WebView は Chromium をベースにしていますが、Chromium レイヤは今後は Google Play から更新できるようになります。

+ +

Chromium の新バージョンがリリースされたとき、Android 5.0 以上で WebView を使用しているアプリのウェブ API の更新やバグ修正がある場合は、ユーザーが Google Play から更新することで WebView の最新の拡張とバグ修正を確実に適用できます。

+ + + +

ユーザー補助機能と入力

+ +

新しいユーザー補助機能 API を使用すると、視覚に障がいのないユーザーが操作できる画面上のウィンドウのプロパティに関する詳しい情報を取得し、UI 要素の標準入力操作とカスタム入力操作を定義できます。

+ +

新しい IME(Input Method Editor)API を使用すると、入力方法から直接他の IME に切り替えることができます。

+ + + +

省電力アプリ用のツール

+ +

新しいジョブ スケジューリング API を使用すると、システムのジョブの実行を延期することで電池消費量を最適化できます。延期したジョブは、後で実行するように指定したり、特定の条件(充電中、Wi-Fi 接続時など)を満たしたときに実行したりできます。

+ +

新たに追加された dumpsys batterystats コマンドで電池の使用統計情報を生成すると、システム全体での電池使用状況や、アプリが電池使用量にどの程度影響しているかを理解できます。電池が消費されたイベントの履歴、UID やシステム コンポーネントごとのおおよその消費電力量なども把握できます。

+ + +

新しい電池履歴ツールを使用すると、dumpsys batterystats で生成した統計情報を視覚化でき、電池関連のデバッグに便利です。このツールは https://github.com/google/battery-historian から入手できます。

diff --git a/docs/html-intl/intl/ko/about/versions/android-5.0.jd b/docs/html-intl/intl/ko/about/versions/android-5.0.jd new file mode 100644 index 0000000..48d542e --- /dev/null +++ b/docs/html-intl/intl/ko/about/versions/android-5.0.jd @@ -0,0 +1,636 @@ +page.title=Android 5.0 API +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

이 도움말에서 다루는 내용 더보기

+ +
    +
  1. 타겟 API 수준 업데이트
  2. +
  3. 중요 동작 변경사항 +
      +
    1. 새 ART(Android 런타임)에서 앱을 테스트하지 않은 경우...
    2. +
    3. 앱에서 알림을 구현하는 경우...
    4. +
    5. 앱에서 RemoteControlClient를 사용하는 경우...
    6. +
    7. 앱에서 getRecentTasks()를 사용하는 경우...
    8. +
    9. Android NDK(기본 개발 키트)를 사용 중인 경우...
    10. +
    11. 앱이 서비스에 결합된 경우...
    12. +
    13. 앱에서 WebView를 사용하는 경우...
    14. +
    +
  4. +
  5. 사용자 인터페이스 +
      +
    1. 머티리얼 디자인 지원
    2. +
    3. 최근 화면의 동시 문서 및 액티비티
    4. +
    5. WebView 업데이트
    6. +
    7. 화면 캡처 및 공유
    8. +
    +
  6. +
  7. 알림 +
      +
    1. 잠금 화면 알림
    2. +
    3. 알림 메타데이터
    4. +
    +
  8. +
  9. 그래픽 +
      +
    1. OpenGL ES 3.1 지원
    2. +
    3. Android 확장 프로그램 팩
    4. +
    +
  10. +
  11. 미디어 +
      +
    1. 고급 카메라 기능을 위한 카메라 API
    2. +
    3. 오디오 재생
    4. +
    5. 미디어 재생 컨트롤
    6. +
    7. 미디어 탐색
    8. +
    +
  12. +
  13. 저장소 +
      +
    1. 디렉토리 선택
    2. +
    +
  14. +
  15. 무선 및 연결 +
      +
    1. 여러 네트워크 연결
    2. +
    3. 블루투스 브로드캐스팅
    4. +
    5. NFC 개선사항
    6. +
    +
  16. +
  17. 프로젝트 Volta +
      +
    1. 작업 예약
    2. +
    3. 배터리 사용량을 위한 개발자 도구 +
    +
  18. +
  19. 업무 및 교육을 위한 Android +
      +
    1. 관리되는 프로비저닝
    2. +
    3. 기기 소유자
    4. +
    5. 화면 고정
    6. +
    +
  20. +
  21. 시스템 +
      +
    1. 앱 사용량 통계
    2. +
    +
  22. +
  23. 인쇄 프레임워크 +
      +
    1. PDF를 비트맵으로 렌더링
    2. +
    +
  24. +
  25. 테스트 및 접근성 +
      +
    1. 테스트 및 접근성 개선사항
    2. +
    +
  26. +
  27. IME +
      +
    1. 더 쉽게 입력 언어를 전환
    2. +
    +
  28. +
  29. 매니페스트 선언 +
      +
    1. 선언 가능한 필수 기능
    2. +
    3. 사용자 권한
    4. +
    +
  30. +
+ +

API Differences

+
    +
  1. API level 20 to 21 »
  2. +
  3. L Developer Preview to 21 »
  4. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
  4. +
+ +
+
+ +

API 수준: {@sdkPlatformApiLevel}

+ +

Android 5.0(LOLLIPOP)에서는 사용자와 앱 개발자를 위한 새 기능을 제공합니다. 이 문서에서는 가장 주목할 만한 새 API에 대해 안내해 줍니다.

+ +

상위 수준에서 새 플랫폼 기능을 확인하려면 Android Lollipop 주요 기능을 참조하세요.

+ + +

개발 시작

+ +

Android 5.0용 앱 개발을 시작하려면 먼저 Android SDK를 다운로드해야 합니다. 그런 다음 SDK 관리자를 사용하여 Android 5.0 SDK 플랫폼과 시스템 이미지를 다운로드합니다.

+ + +

타겟 API 수준 업데이트

+ +

Android {@sdkPlatformVersion}을 실행하는 기기에서 앱을 더욱 최적화하려면 {@code targetSdkVersion}"{@sdkPlatformApiLevel}"로 설정하고 Android {@sdkPlatformVersion} 시스템 이미지에 앱을 설치한 다음, 앱을 테스트하고 이러한 변경사항으로 업데이트된 앱을 게시합니다.

+ +

이전 버전을 지원하면서 Android {@sdkPlatformVersion} API를 사용할 수도 있습니다. {@code minSdkVersion}에서 지원하지 않는 API를 실행하기 전에 시스템 API 수준을 확인하는 코드에 조건을 추가하면 됩니다. 하위 호환성을 유지하는 방법에 대해 자세히 알아보려면 여러 플랫폼 버전 지원을 참조하세요.

+ +

API 수준이 작동하는 방식에 대한 자세한 내용은 API 수준은 무엇인가요?를 읽어 보세요.

+ +

중요 동작 변경사항

+ +

이전에 Android용 앱을 게시한 적이 있는 경우 앱이 Android 5.0 변경사항에 의해 영향을 받을 수 있으므로 주의해야 합니다.

+ +

새 ART(Android 런타임)에서 앱을 테스트하지 않은 경우...

+ +

4.4 출시 버전에는 새 실험용 ART(Android 런타임)가 도입되었습니다. 4.4 이전 버전에서는 ART가 선택사항이었고 기본 런타임은 Dalvik으로 설정되었습니다. Android 5.0에서는 이제 ART가 기본 런타임입니다.

+ +

ART의 새 기능에 대한 개요는 ART 소개를 참조하세요. 몇 가지 주요한 새 기능은 다음과 같습니다.

+ + + +

대부분의 Android 앱은 이전과 같이 ART에서도 작동해야 합니다. 하지만 Dalvik에서 작동하던 일부 기능은 ART에서 작동하지 않습니다. 가장 중요한 문제를 확인하려면 ART(Android 런타임)에서 앱 동작 확인을 참조하세요. 다음과 같은 경우 특히 주의하세요.

+ + + +

앱에서 알림을 구현하는 경우...

+ +

알림이 다음과 같은 Android 5.0 변경사항을 고려하여 구현되는지 확인합니다. Android 5.0 이상에서 알림을 디자인하는 방법에 대해 자세히 알아보려면 알림 디자인 가이드를 참조하세요. +

+ +

머티리얼 디자인 스타일

+

알림은 새 머티리얼 디자인 위젯과 어울리도록 흰색(또는 매우 밝은 색) 배경 위에 어두운 텍스트로 표시됩니다. 모든 알림이 새 색상 구성에서 올바르게 표시되는지 확인하세요. 알림이 올바르게 표시되지 않으면 다음과 같이 수정합니다.

+ + + +

소리 및 진동

+

현재 {@link android.media.Ringtone}, {@link android.media.MediaPlayer} 또는 {@link android.os.Vibrator} 클래스를 사용하여 알림에 소리 및 진동을 추가한 경우, 이 코드를 제거해야 시스템이 우선순위 모드에서 알림을 올바르게 표시할 수 있습니다. 대신 {@link android.app.Notification.Builder} 메소드를 사용하여 소리 및 진동을 추가합니다.

+ +

기기를 {@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}로 설정하면 기기의 우선순위 모드가 종료됩니다.

+ +

이전에는 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}에서 제어합니다.

+ +

잠금 화면 표시 여부

+

기본적으로 Android 5.0에서는 사용자의 잠금 화면에 알림이 표시됩니다. 사용자는 민감한 정보가 노출되지 않도록 선택할 수 있습니다. 이 경우 시스템에서 알림에 표시되는 텍스트를 자동으로 수정합니다. 이렇게 수정되는 알림을 맞춤설정하려면 {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}을 사용합니다.

+

알림에 개인정보가 포함되지 않았거나 알림에서 미디어 재생 컨트롤을 허용하려는 경우 {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} 메소드를 호출하고 알림의 표시 수준을 {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}으로 설정합니다. +

+ +

미디어 재생

+

미디어 재생 상태 또는 이동 컨트롤을 표시하는 알림을 구현하는 경우 기존 {@link android.widget.RemoteViews.RemoteView} 개체 대신 새 {@link android.app.Notification.MediaStyle} 템플릿을 사용하는 것이 좋습니다. 어떤 방식을 선택하든 알림의 표시 여부를 {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}으로 설정하여 잠금 화면에서 컨트롤에 액세스할 수 있도록 합니다. Android 5.0부터 시스템이 잠금 화면에서 더 이상 {@link android.media.RemoteControlClient} 개체를 표시하지 않습니다. 자세한 내용은 앱에서 RemoteControlClient를 사용하는 경우를 참조하세요.

+ +

헤드업 알림

+

이제 기기를 사용 중일 때(즉, 기기가 잠금 해제 상태이고 화면이 켜져 있는 경우) 작은 플로팅 창(헤드업 알림이라고도 함)에 알림이 표시될 수 있습니다. 이러한 알림은 간결한 형태의 알림과 비슷하게 표시되지만 헤드업 알림에는 작업 버튼도 표시됩니다. 사용자는 사용 중인 앱을 종료하지 않고 헤드업 알림에서 작업을 수행하거나 알림을 닫을 수 있습니다.

+ +

다음은 헤드업 알림을 실행할 수 있는 조건의 예입니다.

+ + + +

위와 같은 시나리오에서 앱이 알림을 구현하는 경우 헤드업 알림이 올바르게 표시되는지 확인하세요.

+ +

앱에서 RemoteControlClient를 사용하는 경우...

+

{@link android.media.RemoteControlClient} 클래스는 이제 사용할 수 없습니다. 가능한 빨리 새 {@link android.media.session.MediaSession} API로 전환하세요.

+ +

Android 5.0의 잠금 화면은 {@link android.media.session.MediaSession} 또는 {@link android.media.RemoteControlClient}의 이동 컨트롤을 표시하지 않습니다. 대신 앱에서 알림을 통해 잠금 화면의 미디어 재생 컨트롤을 제공할 수 있습니다. 이를 통해 앱에서 미디어 버튼 표시를 더욱 제어할 수 있게 되며, 잠금 설정 및 해제된 기기에서 사용자에게 일관된 경험을 제공할 수 있게 됩니다.

+ +

이를 위해 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()} 메소드로 전달하여 시스템에 이 알림이 진행 중인 미디어 세션을 제어한다는 것을 알립니다.

+ +

알림의 표시 여부를 {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}으로 설정하여 알림이 모든 잠금 화면(보안 또는 비보안)에서 표시되어도 안전함을 나타냅니다. 자세한 내용은 잠금 화면 알림을 참조하세요.

+ +

앱이 Android TV 또는 Wear 플랫폼에서 실행되는 경우 미디어 재생 컨트롤을 표시하려면 {@link android.media.session.MediaSession} 클래스를 구현합니다. 또한 앱이 Android 기기에서 미디어 버튼 이벤트를 수신해야 하는 경우 {@link android.media.session.MediaSession}도 구현해야 합니다.

+ +

앱에서 getRecentTasks()를 사용하는 경우...

+ +

Android 5.0에 새 동시 문서 및 액티비티 작업 기능(아래의 최근 화면에서 동시 문서 및 액티비티 참조)이 도입되면서, 사용자의 개인정보 보호를 개선하기 위해 이제 {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} 메소드가 사용 중지되었습니다. 하위 호환성을 위해 이 메소드에서는 여전히 관련 데이터의 일부 하위 집합을 반환합니다. 여기에는 호출 애플리케이션의 자체 작업과 가능한 경우 민감하지 않은 일부 기타 작업(예: 홈)이 포함됩니다. 앱에서 이 메소드를 사용하여 자체 작업을 가져오는 경우 {@link android.app.ActivityManager#getAppTasks() getAppTasks()}를 대신 사용하여 정보를 가져오세요.

+ +

Android NDK(기본 개발 키트)를 사용 중인 경우...

+ +

Android 5.0에서는 64비트 시스템을 지원합니다. 64비트 지원을 통해 기존의 32비트 앱을 계속해서 완전하게 지원하면서 주소 공간을 넓히고 성능을 개선했습니다. 또한 64비트 지원으로 암호화를 위한 OpenSSL 성능이 개선되었습니다. 이외에 이 출시 버전에는 새 기본 미디어 NDK API와 함께 기본 OpenGL ES(GLES) 3.1 지원이 도입되었습니다.

+ +

Android 5.0에서 제공되는 64비트 지원을 사용하려면 Android NDK 페이지에서 NDK 수정 버전 10c를 다운로드하고 설치하세요. NDK의 중요 변경사항 및 버그 수정에 대한 자세한 내용은 수정 버전 10c 출시 노트를 참조하세요.

+ +

앱이 서비스에 결합된 경우...

+ +

이제 {@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} 메소드에서 명시적 {@link android.content.Intent}를 요구하며 암시적 인텐트가 있는 경우 예외를 발생시킵니다. 앱이 안전한지 확인하려면 {@link android.app.Service}를 시작하거나 결합할 때 명시적 인텐트를 사용하고 서비스를 위한 인텐트 필터를 선언하지 마세요.

+ +

앱에서 WebView를 사용하는 경우...

+ +

Android 5.0에서는 앱의 기본 동작이 변경되었습니다.

+ + +

사용자 인터페이스

+ +

머티리얼 디자인 지원

+ +

곧 출시되는 버전에는 Android의 새 머티리얼 디자인 스타일에 대한 지원이 추가되었습니다. 머티리얼 디자인을 사용하면 시각적으로 역동적이고 사용자가 자연스럽게 느낄 수 있는 UI 요소의 전환을 포함한 앱을 만들 수 있습니다. 지원에는 다음이 포함됩니다.

+ + + +

앱에 머티리얼 디자인 기능을 추가하는 방법에 대해 자세히 알아보려면 머티리얼 디자인을 참조하세요.

+ +

최근 화면의 동시 문서 및 액티비티

+ +

이전 출시 버전에서는 최근 화면에 각 앱에 대해 사용자가 가장 최근에 상호작용한 하나의 작업만 표시될 수 있었습니다. 이제 앱에서 문서의 추가적인 동시 액티비티에 필요한 만큼 더 많은 작업을 열 수 있습니다. 이 기능은 최근 화면에서 사용자가 개별 액티비티와 문서 간에 빠르게 전환할 수 있도록 하여 멀티태스킹을 용이하게 하며, 모든 앱에서 일관된 전환 경험을 제공해 줍니다. 이러한 동시 작업의 예로는 웹브라우저 앱에서 열려 있는 탭, 생산성 앱의 문서, 게임에서의 동시 대결 또는 메시지 앱에서의 채팅이 있습니다. 앱은 {@link android.app.ActivityManager.AppTask} 클래스를 통해 작업을 관리할 수 있습니다.

+ +

논리 중단을 삽입하여 시스템이 액티비티를 새 작업으로 처리하도록 하려면, {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}로 액티비티를 실행할 때 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}를 사용합니다. 매니페스트에서 <activity> 요소의 {@code documentLaunchMode} 속성을 {@code "intoExisting"} 또는 {@code "always"}로 설정하여 이 동작을 유도할 수도 있습니다.

+ +

최근 화면이 지저분해지지 않게 하려면 앱에서 화면에 표시할 수 있는 작업의 최대 개수를 설정하면 됩니다. 설정하려면 <application> 속성 {@link android.R.attr#maxRecents android:maxRecents}를 설정합니다. 현재 사용자당 최대 50개의 작업을 지정할 수 있습니다(기기의 RAM이 낮은 경우는 25개)입니다.

+ +

최근 화면의 작업은 재부팅해도 지속되도록 설정할 수 있습니다. 지속 동작을 제어하려면 android:persistableMode 속성을 사용합니다. 또한 최근 화면에서 {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()} 메소드를 호출하여 액티비티의 색상, 라벨, 아이콘과 같은 액티비티의 시각적 속성을 변경할 수도 있습니다.

+ +

WebView 업데이트

+

Android 5.0에서는 {@link android.webkit.WebView} 구현을 Chromium M37로 업데이트하여 보안 및 안정성을 개선하고 버그도 수정했습니다. Android 5.0에서 실행되는 {@link android.webkit.WebView}의 기본 사용자 에이전트 문자열이 37.0.0.0을 버전 번호로 통합하도록 업데이트되었습니다.

+ +

이 출시 버전에는 {@link android.webkit.PermissionRequest} 클래스가 도입되었습니다. 이를 사용하면 앱에서 {@link android.webkit.WebView} 권한을 부여하여 getUserMedia()와 같은 웹 API를 통해 카메라와 마이크 등의 보호된 리소스에 액세스할 수 있습니다. {@link android.webkit.WebView}에 권한을 부여하려면 이러한 리소스에 대한 적절한 Android 권한이 앱에 있어야 합니다.

+ +

이제 새 onShowFileChooser() 메소드를 통해 {@link android.webkit.WebView}에서 입력 양식 필드를 사용할 수 있고, 파일 선택기를 실행하여 Android 기기에서 이미지 및 파일을 선택할 수 있습니다.

+ +

또한 이 출시 버전에서는 WebAudio, WebGL, WebRTC 개방형 표준을 지원합니다. 이 출시 버전에 포함된 새 기능에 대해 자세히 알아보려면 Android용 WebView를 참조하세요.

+ +

화면 캡처 및 공유

+

Android 5.0에서는 새 {@link android.media.projection} API를 통해 앱에 화면 캡처 및 화면 공유 기능을 추가할 수 있습니다. 예를 들어 이 기능은 동영상 회의 앱에서 화면 공유를 사용하려는 경우 유용합니다.

+ +

새 {@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.content.Intent}({@link android.media.projection.MediaProjectionManager#createScreenCaptureIntent()} 메소드를 통해 가져옴)를 사용하는 화면 캡처 대화상자를 실행하여 권한을 요청할 수 있습니다.

+ +

새 API를 사용하는 방법에 대한 예는 샘플 프로젝트의 {@code MediaProjectionDemo} 클래스를 참조하세요.

+ +

알림

+ +

잠금 화면 알림

+

Android 5.0의 잠금 화면에는 알림을 표시할 수 있습니다. 사용자는 설정을 통해 민감한 알림 내용의 보안 잠금 화면 표시 여부를 선택할 수 있습니다.

+ +

앱에서 보안 잠금 화면에 알림이 표시될 때 세부내용의 표시 수준을 제어할 수 있습니다. 표시 수준을 제어하려면 {@link android.app.Notification.Builder#setVisibility(int) setVisibility()}를 호출하고 다음 값 중 하나를 지정합니다.

+ + + +

표시 수준이 {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE}인 경우 개인 세부정보를 숨기는 알림 내용의 수정된 버전을 제공할 수도 있습니다. 예를 들어 SMS 앱에서 '3개의 새 메시지가 있습니다'라는 알림을 표시하면서 메시지 내용과 보낸 사람을 숨길 수도 있습니다. 이러한 대체 알림을 제공하려면 먼저 {@link android.app.Notification.Builder}를 사용하여 대체 알림을 만듭니다. 비공개 알림 개체를 만드는 경우 {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} 메소드를 통해 비공개 알림 개체에 대체 알림을 첨부합니다.

+ +

알림 메타데이터

+

Android 5.0에서는 앱 알림에 연결된 메타데이터를 사용하여 알림을 더욱 지능적으로 정렬합니다. 메타데이터를 설정하려면 알림을 생성할 때 {@link android.app.Notification.Builder}에서 다음 메소드를 호출합니다.

+ + + +

그래픽

+ +

OpenGL ES 3.1 지원

+

Android 5.0에는 자바 인터페이스와 OpenGL ES 3.1에 대한 기본 지원이 추가되었습니다. OpenGL ES 3.1에서 제공하는 주요한 새 기능은 다음과 같습니다.

+ + + +

Android의 OpenGL ES 3.1용 자바 인터페이스는 {@link android.opengl.GLES31}과 함께 제공됩니다. OpenGL ES 3.1을 사용하는 경우 {@code } 태그 및 {@code android:glEsVersion} 속성을 사용하여 매니페스트 파일에서 OpenGL을 선언해야 합니다. 예를 들어 다음과 같이 선언합니다.

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

런타임에서 기기의 지원되는 OpenGL ES 버전을 확인하는 방법 등 OpenGL ES 사용에 대한 자세한 내용은 OpenGL ES API 가이드를 확인하세요.

+ +

Android 확장 프로그램 팩

+ +

OpenGL ES 3.1 외에, 이 출시 버전에서는 자바 인터페이스와 고급 그래픽 기능에 대한 기본 지원이 포함된 확장 프로그램 팩을 제공합니다. 이러한 확장 프로그램은 Android에서 단일 패키지로 취급합니다. {@code ANDROID_extension_pack_es31a} 확장 프로그램이 있는 경우 앱에서 패키지의 모든 확장 프로그램이 있다고 가정하고, 단일 {@code #extension} 구문을 통해 셰이딩 언어 기능을 사용 설정합니다.

+ +

확장 프로그램 팩은 다음을 지원합니다.

+ + + +

확장 프로그램 팩의 자바 인터페이스는 {@link android.opengl.GLES31Ext}와 함께 제공됩니다. 앱 매니페스트에서 앱이 확장 프로그램 팩을 지원하는 기기에서만 설치되도록 선언할 수 있습니다. 예를 들어 다음과 같이 선언합니다.

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

미디어

+ +

고급 카메라 기능을 위한 카메라 API

+ +

Android 5.0에는 새 android.hardware.camera2 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}을 구성할 수 있습니다.

+ +

새 이미지를 캡처할 때 알림을 받으려면 {@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}의 이미지 캡처 메타데이터를 제공합니다.

+ +

{@link android.hardware.camera2.CameraCharacteristics} 클래스를 사용하면 기기에서 사용할 수 있는 카메라 기능을 감지할 수 있습니다. 개체의 {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} 속성은 카메라의 기능 수준을 나타냅니다.

+ + + +

업데이트된 카메라 API를 사용하는 방법에 대해 알아보려면 이 출시 버전의 {@code Camera2Basic} 및 {@code Camera2Video} 구현 샘플을 참조하세요.

+ +

오디오 재생

+

이 출시 버전에는 다음과 같은 {@link android.media.AudioTrack}에 대한 변경사항이 포함되어 있습니다.

+ + +

미디어 재생 컨트롤

+

새 알림 및 미디어 API를 사용하면 시스템 UI에서 미디어 재생을 인식하고 앨범 아트를 추출 및 표시하도록 할 수 있습니다. 이제 새 {@link android.media.session.MediaSession} 및 {@link android.media.session.MediaController} 클래스를 통해 UI 및 서비스에서 미디어 재생을 제어하는 것이 더욱 쉬워졌습니다.

+ +

새 {@link android.media.session.MediaSession} 클래스는 사용 중지된 {@link android.media.RemoteControlClient} 클래스를 대체하며 이동 컨트롤 및 미디어 버튼 처리에 하나의 콜백 메소드 집합을 제공합니다. 앱이 미디어 재생을 제공하고 Android TV 또는 Wear 플랫폼에서 실행되는 경우, {@link android.media.session.MediaSession} 클래스로 동일한 콜백 메소드를 사용하는 이동 컨트롤을 처리할 수 있습니다.

+ +

이제 새 {@link android.media.session.MediaController} 클래스를 사용하여 미디어 컨트롤러 앱을 제작할 수 있습니다. 이 클래스는 스레드 안전성을 보장하면서 앱의 UI 프로세스에서 미디어 재생을 모니터링하고 제어할 수 있는 방법을 제시합다. 컨트롤러를 만들 때 {@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} 개체를 등록하여 세션의 메타데이터 및 상태 변경을 수신할 수도 있습니다.

+ +

또한 새 {@link android.app.Notification.MediaStyle} 클래스를 사용하여 미디어 세션에 연결된 재생 컨트롤을 허용하는 리치 알림을 생성할 수 있습니다.

+ +

미디어 탐색

+

Android 5.0에는 새 android.media.browse API를 통해 앱에서 다른 앱의 미디어 콘텐츠 라이브러리를 탐색할 수 있는 기능이 도입되었습니다. 앱의 미디어 콘텐츠를 노출하려면 {@link android.service.media.MediaBrowserService} 클래스를 확장합니다. {@link android.service.media.MediaBrowserService} 구현하면서 {@link android.media.session.MediaSession.Token}에 대한 액세스 권한을 제공해야 서비스를 통해 제공된 미디어 콘텐츠를 앱에서 재생할 수 있습니다.

+

미디어 브라우저 서비스와 상호작용하려면 {@link android.media.browse.MediaBrowser} 클래스를 사용합니다. {@link android.media.browse.MediaBrowser} 인스턴스를 만들 때 {@link android.media.session.MediaSession}의 구성요소 이름을 지정합니다. 이 브라우저 인스턴스를 사용하면 앱에서 서비스에 연결할 수 있고, {@link android.media.session.MediaSession.Token} 개체를 가져와 서비스를 통해 노출된 콘텐츠를 재생할 수 있습니다.

+ +

저장소

+ +

디렉토리 선택

+ +

Android 5.0에서는 저장소 액세스 프레임워크를 확장하여 사용자가 전체 디렉토리 하위 트리를 선택할 수 있으며, 각 항목에 대한 사용자 확인 없이 포함된 모든 문서에 대한 읽기/쓰기 액세스 권한을 앱에 부여합니다.

+ +

디렉토리 하위 트리를 선택하려면 {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE} 인텐트를 만들어 전송합니다. 시스템에서 하위 트리 선택을 지원하는 모든 {@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()}와 함께 사용하여 하위 트리를 탐색할 수 있습니다.

+ +

새 {@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}에서 이러한 호출에 대한 제공업체 지원을 확인합니다.

+ +

{@link android.provider.DocumentsProvider}를 구현하고 있고 하위 트리 선택을 지원하고자 하는 경우 {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()}를 구현하고 {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD}를 {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS}에 추가합니다.

+ +

또한 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}을 사용하여 새 콘텐츠를 명시적으로 검색할 수도 있습니다.

+ +

무선 및 연결

+ +

여러 네트워크 연결

+

Android 5.0에서는 앱이 특정 기능이 있는 사용 가능한 네트워크를 동적으로 스캔하고 이러한 네트워크에 연결을 설정하도록 해 주는 새 멀티 네트워킹 API를 제공합니다. 이 기능은 앱에서 특수한 네트워크(예: SUPL, MMS, 이동통신사 결제 네트워크 또는 특정 유형의 전송 프로토콜을 사용해 데이터를 전송하려는 경우)가 필요할 때 유용합니다.

+ +

앱에서 네트워크를 동적으로 선택하고 연결하려면 다음 단계를 따릅니다.

+ +
    +
  1. {@link android.net.ConnectivityManager}를 만듭니다.
  2. +
  3. {@link android.net.NetworkRequest.Builder} 클래스를 사용하여 {@link android.net.NetworkRequest} 개체를 만들고 앱에서 사용하려는 네트워크 기능 및 전송 유형을 지정합니다.
  4. +
  5. 적합한 네트워크를 스캔하려면 {@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()} 메소드를 사용합니다.
  6. +
+ +

시스템에서 적절한 네트워크를 감지하면 감지한 네트워크에 연결하고 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 콜백을 호출합니다. 콜백의 {@link android.net.Network} 개체를 사용하여 네트워크에 대한 추가 정보를 가져오거나, 트래픽이 선택한 네트워크를 사용하도록 유도합니다.

+ +

저전력 블루투스

+

Android 4.3에서는 저전력 블루투스(블루투스 LE)에 대한 플랫폼 지원이 도입되었습니다. Android 5.0에서는 Android 기기가 블루투스 LE 주변기기로 작동할 수 있습니다. 앱에서 이 기능을 사용하여 주변 기기에 블루투스로 연결할 수 있음을 알릴 수 있습니다. 예를 들어 기기가 만보계나 건강 모니터링 기기로 작동하면서 다른 블루투스 LE 기기와 데이터를 통신할 수 있도록 하는 앱을 제작할 수 있습니다.

+

새 {@link android.bluetooth.le} API를 사용하면 앱에서 광고를 브로드캐스팅하고, 응답을 스캔하며, 주변의 블루투스 LE 기기와 연결을 설정하도록 할 수 있습니다. 새 광고 및 스캔 기능을 사용하려면 매니페스트에 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 권한을 추가합니다. 사용자가 Play 스토어에서 앱을 업데이트하거나 다운로드할 때 사용자에게 앱에 권한을 부여할 것인지 묻는 메시지('블루투스 연결 정보: 주변의 블루투스 기기에 브로드캐스팅하거나 이러한 기기에 대한 정보 수집하는 등 앱에서 블루투스를 제어하도록 허용합니다.')가 표시됩니다.

+ +

다른 앱에서 내 앱을 찾을 수 있도록 블루투스 LE 광고를 시작하려면 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()}을 호출하고 이를 {@link android.bluetooth.le.AdvertiseCallback} 클래스 구현에 전달합니다. 콜백 개체는 광고 작업의 성공 또는 실패에 대한 보고서를 수신합니다.

+ +

Android 5.0에는 {@link android.bluetooth.le.ScanFilter} 클래스가 도입되어 앱에서 연결하려는 특정 유형의 기기만 스캔하도록 할 수 있습니다. 블루투스 LE 기기 스캔을 시작하려면 {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()}을 호출하고 필터 목록으로 전달합니다. 메소드 호출에서 {@link android.bluetooth.le.ScanCallback} 구현도 제공하여 블루투스 LE 광고를 찾은 시점을 보고해야 합니다.

+ +

NFC 개선사항

+

Android 5.0에서는 다음과 같은 개선사항을 통해 더욱 폭넓고 자유롭게 NFC를 사용할 수 있게 되었습니다.

+ + + +

프로젝트 Volta

+ +

새 기능과 이외에, Android 5.0에서는 배터리 수명을 개선하는 데 집중하고 있습니다. 새 API 및 도구를 사용하여 앱의 전력 소비를 파악하고 최적화할 수 있습니다.

+ +

작업 예약

+

Android 5.0에서는 시스템에서 나중에 또는 특정 조건(예: 기기가 충전될 때)에서 비동기식으로 실행할 작업을 정의하여 배터리 수명을 최적화할 수 있는 새 {@link android.app.job.JobScheduler} API를 제공합니다. 작업 예약은 다음과 같은 상황에서 유용합니다.

+ + +

작업 단위는 {@link android.app.job.JobInfo} 개체에 의해 캡슐화됩니다. 이 개체는 예약 기준을 지정합니다.

+ +

{@link android.app.job.JobInfo.Builder} 클래스를 사용하여 예약된 작업이 실행되어야 하는 방식을 구성합니다. 다음과 같은 특정 조건에서 작업이 실행되도록 예약할 수 있습니다.

+ + + +

예를 들어 다음과 같은 코드를 추가하여 무제한 네트워크에서 작업을 실행할 수 있습니다.

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

기기가 안정적인 전원에 연결된 경우(즉, 기기가 2분 이상 충전 중이며 배터리가 충분한 수준인 경우) 시스템에서 작업의 기한이 지나지 않았더라도 실행 준비가 된 예약 작업을 실행합니다.

+ +

{@link android.app.job.JobScheduler} API를 사용하는 방법의 예를 확인하려면 이 출시 버전의 {@code JobSchedulerSample} 구현 샘플을 참조하세요.

+ +

배터리 사용량을 위한 개발자 도구

+ +

새 {@code dumpsys batterystats} 명령은 기기의 배터리 사용량에 대해 흥미로운 통계 데이터를 생성하고, 이러한 데이터는 고유한 UID(사용자 ID)로 정리됩니다. 통계에는 다음이 포함됩니다.

+ + + +

{@code --help} 옵션을 사용하여 통계를 맞춤설정하는 다양한 방법에 대해 알아볼 수 있습니다. 예를 들어 기기가 마지막으로 충전된 이후 특정 앱 패키지에서의 배터리 사용량 통계를 출력하려면 다음 명령을 실행합니다. +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

{@code dumpsys} 명령의 출력에서 Battery Historian 도구를 사용하여 로그로부터 전력 관련 이벤트를 가져와 HTML 형식으로 볼 수 있습니다. 이 정보는 배터리 관련 문제를 쉽게 파악하고 진단할 수 있게 해 줍니다.

+ +

업무 및 교육을 위한 Android

+

관리되는 프로비저닝

+ +

Android 5.0에서는 기업 환경에서 사용하는 앱을 위한 새 기능을 제공합니다. 사용자에게 기존 개인 계정이 있는 경우, 기기 관리자는 관리되는 프로비저닝 과정을 시작하여 기기에 동시에 존재하지만 분리된 관리되는 프로필을 추가할 수 있습니다. 관리되는 프로필에 연결된 앱은 사용자의 런처, 최근 화면, 알림에서 관리되지 않는 앱과 함께 표시됩니다.

+ +

관리되는 프로비저닝 과정을 시작하려면 {@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()}를 호출하여 관리되는 프로필을 사용 설정할 수 있습니다.

+ +

기본적으로 앱의 일부 하위 집합만 관리되는 프로필에서 사용 설정됩니다. {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()}을 호출하여 관리되는 프로필에서 추가 앱을 설치할 수 있습니다.

+ +

런처 앱을 개발 중인 경우 새 {@link android.content.pm.LauncherApps} 클래스를 사용하여 현재 사용자 및 연결된 관리되는 프로필에 대해 실행할 수 있는 액티비티의 목록을 가져올 수 있습니다. 런처에서는 작업 배지를 아이콘 드로어블에 추가하여 관리되는 앱을 눈에 띄게 만들 수 있습니다. 배지 아이콘을 가져오려면 {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}을 호출합니다.

+ +

새 기능을 사용하는 방법을 확인하려면 이 출시 버전의 {@code BasicManagedProfile} 구현 샘플을 참조하세요.

+ +

기기 소유자

+

Android 5.0에는 기기 소유자 앱을 배포할 수 있는 기능이 도입되었습니다. 기기 소유자는 특수한 유형의 기기 관리자로, 보조 사용자를 만들거나 제거하고 기기에서 전체 설정을 구성할 수 있습니다. 기기 소유자 앱에서는 {@link android.app.admin.DevicePolicyManager} 클래스의 메소드를 사용하여 관리되는 기기에서 구성, 보안 및 앱을 세부적으로 제어할 수 있습니다. 기기에는 한 번에 한 명의 활성 기기 소유자만 있어야 합니다.

+ +

기기 소유자를 적용하고 활성화하려면 기기가 프로비저닝되지 않은 상태에서, 프로그래밍 앱에서 기기로 NFC 데이터를 전송해야 합니다. 이 데이터 전송 시 관리되는 프로비저닝에서 설명한 프로비저닝 인텐트의 정보와 동일한 정보가 전송됩니다.

+ +

화면 고정

+ +

Android 5.0에는 새 화면 고정 API가 도입되어 일시적으로 사용자가 작업에서 벗어나거나 알림에 의해 방해받는 것을 제한할 수 있습니다. 예를 들어 이 기능은 Android에서 중대한 평가를 위한 교육용 앱, 용도가 하나로 고정된 애플리케이션이나 키오스크 용 애플리케이션을 개발 중인 경우에 사용할 수 있습니다. 앱에서 화면 고정을 활성화하면 앱에서 고정 모드를 종료할 때까지 사용자는 알림을 보거나 다른 앱에 액세스하거나 홈 화면으로 돌아갈 수 없습니다.

+ +

다음과 같은 두 가지 방법으로 화면 고정을 활성화할 수 있습니다.

+ + + +

작업 잠금이 활성 상태이면 다음 동작이 진행됩니다.

+ + + +

인쇄 프레임워크

+ +

PDF를 비트맵으로 렌더링

+

이제 새 {@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}를 비트맵으로 전환할 수 있습니다. 문서 일부만 비트맵 이미지로 전환하려는 경우 추가 매개변수를 설정할 수도 있습니다(예: 문서에서 확대하기 위해 타일식 렌더링을 구현하려는 경우).

+ +

새 API를 사용하는 방법에 대한 예는 {@code PdfRendererBasic} 샘플을 참조하세요.

+ +

시스템

+

앱 사용량 통계

+

새 {@link android.app.usage} API를 사용하여 Android 기기에서 앱 사용량 기록에 액세스할 수 있습니다. 이 API는 사용 중지된 {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()} 메소드보다 더 자세한 사용량 정보를 제공합니다. 이 API를 사용하려면 먼저 매니페스트에서 {@code "android.permission.PACKAGE_USAGE_STATS"} 권한을 선언해야 합니다. 또한 사용자는 설정 > 보안 > 앱에서 사용량 액세스와 함께 해당 앱에 대한 액세스를 사용 설정해야 합니다.

+ +

시스템에서는 앱 단위 사용량 데이터를 수집하며 일일, 주간, 월간 및 연간 단위로 데이터를 집계합니다. 시스템에서 이 데이터를 보관하는 최대 기간은 다음과 같습니다.

+ + + +

각 앱에 대해 시스템에서는 다음 데이터를 기록합니다.

+ + +

테스트 및 접근성

+ +

테스트 및 접근성 개선사항

+

Android 5.0에는 다음과 같은 테스트 및 접근성 지원이 추가되었습니다.

+ + + +

IME

+ +

더 쉽게 입력 언어를 전환

+ +

Android 5.0부터 사용자는 플랫폼에서 지원하는 모든 IME(입력 방법 편집기) 간에 더 쉽게 전환할 수 있습니다. 지정된 전환 작업(보통 소프트웨어 키보드에서 지구 아이콘을 터치)을 수행하면 이러한 모든 IME가 순환 적용됩니다. 이러한 작동 변경사항은 {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()} 메소드에 의해 구현되었습니다.

+ +

또한 이제 프레임워크에서 다음 IME에 전환 메커니즘이 포함되어 있는지, 즉 다음 IME가 그 다음 IME로의 전환을 지원하는지 확인합니다. 전환 메커니즘이 있는 IME는 메커니즘이 없는 IME로 순환 이동하지 않습니다. 이러한 작동 변경사항은 {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()} 메소드에 의해 구현되었습니다. + +

업데이트된 IME 전환 API를 사용하는 방법에 대한 예를 확인하려면 이 출시 버전의 업데이트된 소프트웨어 키보드 구현 샘플을 참조하세요. IME 간에 전환을 구현하는 방법에 대해 자세히 알아보려면 입력 방법 만들기를 참조하세요. +

+ +

매니페스트 선언

+ +

선언 가능한 필수 기능

+

이제 다음 값이 {@code } 요소에서 지원되므로, 앱에서 필요한 기능을 제공하는 기기에만 앱이 설치됩니다.

+ + + +

사용자 권한

+ +

이제 다음 권한이 {@code } 요소에서 지원되어 앱이 특정 API에 액세스하는 데 필요한 권한을 선언할 수 있습니다.

+ + diff --git a/docs/html-intl/intl/ko/about/versions/lollipop.jd b/docs/html-intl/intl/ko/about/versions/lollipop.jd new file mode 100644 index 0000000..f6f292a --- /dev/null +++ b/docs/html-intl/intl/ko/about/versions/lollipop.jd @@ -0,0 +1,246 @@ +page.title=Android Lollipop + +@jd:body + + +
+ +
+ +
+ +
+ + + + + + + +

지금까지의 Android 출시 버전 중 가장 크고 야심 차게 준비한 Android 5.0 Lollipop을 소개합니다.

+ +

이번 출시 버전에는 사용자를 위한 새로운 기능과 개발자를 위한 수천 가지의 새로운 API가 포함되어 있습니다. 이제 Android를 휴대전화, 태블릿, 웨어러블 기기뿐만 아니라 TV와 자동차에서도 사용할 수 있습니다.

+ +

새로운 개발자 API에 대해 자세히 살펴보려면 Android 5.0 API 개요를 참조하세요. 또는 www.android.com에서 소비자를 위한 Android 5.0에 대해 자세히 읽어 볼 수 있습니다.

+ +

머티리얼 디자인

+ +

Android 5.0에서는 Android에 머티리얼 디자인을 도입하여 새로운 디자인 패턴을 앱과 간편하게 통합할 수 있는 확장된 UI 툴킷을 제공합니다.

+ + + +

새로운 3D 보기를 사용하면 z-레벨을 설정하여 보기 계층구조에서 요소가 위에 나타나도록 하고, 움직이는 동안에도 실시간 그림자가 표시되도록 할 수 있습니다.

+ + +

내장된 액티비티 전환은 아름다운 애니메이션 모션을 제공해 사용자가 다른 상태로 원활하게 전환할 수 있게 해 줍니다. 머티리얼 테마는 액티비티 간 공유된 시각적 요소를 사용할 수 있는 기능을 포함하여, 액티비티에 전환을 추가해 줍니다.

+ + + +
+
+ +
+
+ 영화를 다시 재생하려면 기기 화면을 클릭하기만 하면 됩니다 +
+
+ + +

물결 애니메이션을 앱의 버튼, 체크박스, 기타 터치 컨트롤에 사용할 수 있습니다. + +

또한 XML에서 벡터 드로어블을 정의하고 다양한 방법으로 애니메이션을 적용할 수도 있습니다. 벡터 드로어블은 정의 값을 잃지 않고 크기가 조절되므로 단일 색상 인앱 아이콘에 적합합니다.

+ +

RenderThread라고 하는 시스템에서 관리되는 새 처리 스레드를 통해 기본 UI 스레드에 지연이 발생하더라도 애니메이션을 부드럽게 유지해 줍니다.

+ + +

성능 중심

+ +

Android 5.0은 더 빠르고 매끄럽고 강력해진 컴퓨팅 환경을 제공합니다.

+ +

Android는 이제 새로운 ART 런타임에서만 실행되며, 이 런타임은 AOT(ahead-of-time), JIT(just-in-time) 및 해석된 코드의 조합을 지원하도록 처음부터 다시 제작되었습니다. ARM, x86 및 MIPS 아키텍처에서 지원되며 64비트에서 완벽하게 호환됩니다.

+ +

ART는 앱 성능과 반응성을 개선해 줍니다. 효율적인 가비지 컬렉션이 GC 이벤트의 일시중지 횟수와 시간을 감소시켜 주므로, v-동기화 창 내에 쉽게 배치되어 앱이 프레임을 건너뛰지 않게 합니다. 또한 ART는 메모리를 동적으로 이동하여 포그라운드에서 사용되는 앱을 위해 성능을 최적화합니다.

+ +

Android 5.0에서는 Nexus 9의 NVIDIA Tegra K1에서 사용하는 64비트 아키텍처에 대한 플랫폼 지원을 도입했습니다. 최적화를 통해 더 큰 주소 공간을 제공하고 특정 컴퓨팅 작업을 위한 성능을 개선했습니다. 자바 언어로 쓰인 앱은 64비트 앱으로 자동 실행되므로 수정이 필요하지 않습니다. 앱에서 기본 코드를 사용하는 경우를 위해 ARM v8, x86~64 및 MIPS-64용 새 ABI를 지원하도록 NDK를 확장했습니다.

+ +

더 매끄러운 성능을 위한 노력은 여기서 그치지 않고 Android 5.0에서는 향상된 A/V 동기화를 제공합니다. 오디오 및 그래픽 파이프라인이 더 정확한 타임스탬프가 가능하도록 제작되어 동영상 앱과 게임에서 자연스럽게 동기화된 콘텐츠를 표시할 수 있습니다.

+ + +

알림

+ +

Android 5.0의 알림은 표시, 액세스 및 구성이 더욱 편리해 졌습니다.

+ + + +

사용자가 원하는 경우 잠금 화면에 다양한 세부정보 수준을 지정해 알림을 표시할 수 있습니다. 사용자는 보안 잠금 화면에 알림 내용을 모두 표시할지, 일부만 표시할지, 전혀 표시하지 않을지를 선택할 수 있습니다.

+ +

수신 전화와 같은 주요 알림은 사용자가 현재 사용 중인 앱을 벗어나지 않고 응답하거나 닫을 수 있는 작은 플로팅 창인 헤드업 알림에 표시됩니다.

+ +

이제 알림에 새 메타데이터를 추가하여 관련 연락처(순위 지정 용), 카테고리, 우선순위를 수집할 수 있습니다.

+ +

새 미디어 알림 템플릿에서는 '좋아요'와 같은 맞춤 컨트롤을 비롯하여 최대 6개의 액션 버튼으로 알림에 일관된 미디어 컨트롤을 제공하므로, 더 이상 RemoteView가 필요하지 않습니다.

+ + + +

큰 화면에서 앱 표시

+ +

Android TV에서는 앱을 TV 화면으로 경험할 수 있도록 하는 완벽한 TV 플랫폼을 제공합니다. Android TV는 사용자가 맞춤 추천과 음성 검색을 통해 콘텐츠를 편리하게 찾을 수 있게 해 주는 간편한 홈 스크린 경험을 중심으로 제작되었습니다.

+ +

Android TV를 사용하면 사용자가 앱이나 게임 콘텐츠를 생생하게 경험하도록 할 수 있으며, 게임 컨트롤러 및 기타 입력 기기와의 상호작용을 지원할 수 있습니다. 텔레비전용 3미터 크기 UI를 생생하게 제작할 수 있도록 Android는 린백 UI 프레임워크v17 지원 라이브러리에서 제공합니다.

+ +

Android TIF(TV 입력 프레임워크)를 사용하면 TV 앱이 HDMI 입력, TV 튜너 및 IPTV 수신기와 같은 소스로부터 동영상 스트림을 처리할 수 있습니다. 또한 TV 입력에서 게시한 메타데이터를 통해 실시간 TV 검색과 추천을 사용할 수 있으며, 하나의 리모컨으로 여러 기기를 조작할 수 있는 HDMI-CEC 컨트롤 서비스도 포함되어 있습니다.

+ +

TV 입력 프레임워크는 다양한 실시간 TV 입력 소스를 사용할 수 있게 해 주며, 이를 단일 사용자 인터페이스로 통합하여 사용자가 콘텐츠를 탐색하고 보고 즐길 수 있게 해 줍니다. 콘텐츠에 TV 입력 서비스를 구축하면 TV 기기에서 콘텐츠를 더욱 쉽게 액세스할 수 있습니다.

+ + + + + +

문서 중심 앱

+ +

Android 5.0에서는 새로 디자인된 '개요' 공간(이전에는 '최근')을 통해 더 다양하고 유용한 멀티태스킹이 가능해 졌습니다.

+ +

새 API를 사용하면 앱에서 수행되는 별도의 액티비티를 기타 최근 화면과 함께 개별 문서로 표시할 수 있습니다.

+ +

동시 문서를 활용하여 사용자가 더 많은 콘텐츠나 서비스에 즉시 액세스할 수 있도록 할 수 있습니다. 예를 들어 동시 문서를 사용하여 생산성 앱에서는 파일을, 게임에서는 플레이어 대전을, 메시지 앱에서는 채팅을 표시할 수 있습니다.

+ + + +

향상된 연결

+ +

Android 5.0에서는 앱이 BLE(저전력 블루투스)로 동시 작업을 수행할 수 있도록 하는 새 API가 추가되어 스캐닝(중앙 모드)과 광고(주변 모드)가 모두 가능합니다.

+ +

새로운 멀티 네트워크 기능을 사용하면 앱에서 접속 가능한 네트워크에 어떤 기능이 있는지 쿼리를 보낼 수 있습니다(예: Wi-Fi, 셀룰러, 종량제를 사용하거나 특정 네트워크 기능을 제공하는지). 그런 다음 앱에서 연결을 요청하고 연결 손실 또는 기타 네트워크 변경사항에 반응할 수 있습니다.

+ +

이제 NFC API를 사용하면 앱에서 NFC AID(애플리케이션 ID)를 동적으로 등록할 수 있습니다. 또한 활성 서비스별로 선호하는 카드 에뮬레이션을 설정하고 UTF-8 텍스트 데이터를 포함한 NDEF 기록을 만들 수도 있습니다.

+ + + +

고성능 그래픽

+ +

이제 Khronos OpenGL ES 3.1을 지원하므로, 지원되는 기기에서 게임 및 기타 앱에 최고 성능의 2D 및 3D 그래픽 기능을 제공할 수 있습니다

+ +

OpenGL ES 3.1에서는 컴퓨팅 셰이더, 스텐실 텍스처, 가속 시각 효과, 고품질 ETC2/EAC 텍스처 압축, 고급 텍스처 렌더링, 표준 텍스처 크기 및 렌더 버퍼 포맷 등을 추가합니다.

+ + +
+ +

Gameloft의 Rival Knights는 AEP의 ASTC(Adaptive Scalable Texture Compression) 및 ES 3.1의 컴퓨팅 셰이더를 사용하여 HDR(고 명암비) 블룸 효과와 더 세밀한 그래픽을 제공하고 있습니다.

+
+ +

또한 Android 5.0에서는 테셀레이션 셰이더, 도형 셰이더, ASTC 텍스처 압축, 샘플당 보간과 음영 및 기타 고급 렌더링 기능에 액세스할 수 있게 해 주는 OpenGL ES 확장 프로그램 모음인 AEP(Android 확장 팩)를 도입했습니다. AEP를 사용하면 다양한 GPU에서 고성능 그래픽을 제공할 수 있습니다.

+ + +

더 강력해진 오디오

+ +

새로운 오디오 캡처 디자인은 지연 시간이 단축된 오디오 입력을 제공합니다. 새로운 디자인에는 읽는 동안을 제외하고는 차단하지 않는 빠른 캡처 스레드와 기본 샘플링 속도, 채널 수 및 비트 심도에서 작동하는 빠른 트랙 캡처 클라이언트가 포함되어 있습니다. 또한 일반 캡처 클라이언트에서 리샘플링, 위/아래 채널 믹스 및 위/아래 비트 심도를 제공합니다.

+ +

다중 채널 오디오 스트림 믹싱은 전문 오디오 앱에서 5.1 및 7.1 채널을 포함하여 최대 8개의 채널을 믹싱할 수 있게 합니다.

+ +

앱에서 미디어 콘텐츠를 노출할 수 있으며 다른 앱의 미디어를 탐색한 다음 재생을 요청할 수 있습니다. 콘텐츠는 쿼리 가능한 인터페이스를 통해 노출되며 기기에 저장하지 않아도 됩니다.

+ +

앱에서는 특정 언어, 품질 및 지연 속도로 설정된 음성 프로필을 통해 TTS(텍스트 음성 변환) 합성을 세밀하게 제어할 수 있습니다. 또한 새 API에서는 합성 오류 확인, 네트워크 합성, 언어 검색, 대체 네트워크에 대한 지원이 개선되었습니다.

+ +

이제 Android에서 표준 USB 오디오 주변기기를 지원하므로 사용자가 USB 헤드셋, 스피커, 마이크 또는 고품질 디지털 주변기기를 연결할 수 있습니다. 또한 Android 5.0에서는 Opus 오디오 코덱 지원도 추가되었습니다.

+ +

미디어 재생을 제어하기 위한 새 {@link android.media.session.MediaSession} API를 통해 여러 화면과 컨트롤러에서 일관된 미디어 컨트롤을 더욱 간편하게 제공할 수 있습니다.

+ + +

개선된 카메라 및 동영상

+ +

Android 5.0은 완전히 새로운 카메라 API를 도입하여 YUV 및 Bayer RAW와 같은 RAW 포맷을 캡처하고 노출 시간, ISO 감도, 프레임 단위당 프레임 시간과 같은 매개변수를 제어할 수 있습니다. 완전히 동기화된 새 카메라 파이프라인을 사용하면 지원되는 기기에서 압축되지 않은 전체 해상도 YUV 이미지를 30FPS로 캡처할 수 있습니다.

+ +

이미지와 함께 카메라의 노이즈 모델 및 광학 정보와 같은 메타데이터를 캡처할 수도 있습니다.

+ +

앱에서 네트워크를 통해 동영상 스트림을 전송하는 데 이제 H.265 HEVC(고효율 동영상 코딩)를 사용할 수 있어 동영상 데이터 인코딩 및 디코딩이 최적화되었습니다.

+ +

또한 Android 5.0에 멀티미디어 터널링에 대한 지원이 추가되여 최상의 초 고화질(4K) 콘텐츠 경험을 누리고 압축된 오디오 및 동영상 데이터를 함께 재생할 수 있습니다.

+ + + +
+ +

사용자는 개인 및 작업 앱을 통합된 보기에서 확인할 수 있으며 배지로 쉽게 식별할 수 있습니다.

+
+ + +

업무를 위한 Android

+ +

기업 환경에서 bring-your-own-device(업무 용으로 개인 기기 사용)를 시행할 수 있게 새로운 관리되는 프로비저닝 과정에서 기기에 보안 작업 프로필을 생성합니다. 런처에서 작업 배지가 표시된 앱은 앱 및 관련 데이터가 IT 관리자에 의해 작업 프로필 내부에서 관리됨을 나타냅니다.

+ +

개인 및 작업 프로필 모두 통합된 보기에 표시됩니다. 각 프로필의 데이터는 두 프로필에서 동일한 앱을 모두 사용하는 경우에도 상대 프로필의 데이터와는 별도로 안전하게 유지됩니다.

+ +

회사 소유의 기기의 경우 IT 관리자가 새 기기를 시작하여 기기 소유자와 함께 기기를 구성할 수 있습니다. 고용주는 전체 기기 설정을 구성할 수 있도록 기기 소유자 앱이 이미 설치된 기기를 제공할 수 있습니다.

+ + + +

화면 캡처 및 공유

+ +

Android 5.0을 사용하면 앱에 화면 캡처 및 화면 공유 기능을 추가할 수 있습니다.

+ +

사용자 권한이 있는 경우 디스플레이에서 비보안 동영상을 캡처하고 원하는 경우 네트워크를 통해 전달할 수 있습니다.

+ + +

새로운 유형의 센서

+ +

Android 5.0에서는 새로운 기울이기 감지기 센서를 통해 지원되는 기기에서 활동 인식이 개선되었고, 심박수 센서가 기기를 터치하는 사람의 심박수를 보고합니다.

+ +

새로운 상호작용 복합 센서는 이제 깨우기 동작, 들기 동작 및 보기 동작과 같은 특수한 상호작용을 감지할 수 있습니다.

+ + + +

Chromium WebView

+ +
+ +
+ +

Android 5.0의 초기 출시 버전에는 Chromium M37 출시 버전을 기반으로 한 {@link android.webkit.WebView}의 Chromium 버전이 포함되며, WebRTC, WebAudioWebGL에 대한 지원이 추가되었습니다.

+ +

Chromium M37은 또한 모든 웹 구성요소 사양(맞춤 요소, 그림자 DOM, HTML 가져오기 및 템플릿)을 기본으로 지원합니다. 따라서 폴리필 없이도 WebView에서 Polymer와 관련 머티리얼 디자인 요소를 사용할 수 있습니다.

+ +

Android 4.4 이후로 WebView가 Chromium을 기반으로 해왔지만 이제 Chromium 레이어는 Google Play에서 업데이트할 수 있습니다.

+ +

새로운 버전의 Chromium을 사용할 수 있게 되면서 사용자는 Google Play에서 업데이트하여 WebView의 최신 개선사항 및 버그 수정을 적용할 수 있으며, Android 5.0 이상에서 WebView를 사용하는 앱에도 최신 웹 API와 버그 수정을 적용할 수 있습니다.

+ + + +

접근성 및 입력

+ +

새로운 접근성 API는 일반 사용자가 상호작용할 수 있는 화면의 창 속성에 대한 세부정보를 가져오고 UI 요소에 대한 표준 또는 맞춤 입력 작업을 정의할 수 있습니다.

+ +

새로운 IME(입력 방법 편집기) API는 한 입력 방법에서 다른 IME로 직접 빠르게 전환할 수 있게 해 줍니다.

+ + + +

배터리를 효율적으로 사용하는 앱을 위한 도구

+ +

새로운 작업 예약 API를 사용하면 시스템에서 작업을 나중에 수행하도록 연기하거나, 기기 충전 중 또는 Wi-Fi 연결 시와 같은 특정 조건에서 수행되도록 하여 배터리 수명을 최적화할 수 있습니다.

+ +

새로운 dumpsys batterystats 명령은 배터리 사용량 통계를 생성하여 시스템 단위의 전원 사용량과 앱이 기기 배터리를 사용하는 정도를 파악할 수 있습니다. 전원 이벤트 기록, UID 및 시스템 구성요소당 대략적인 전원 사용량 등을 확인할 수 있습니다.

+ + +

Battery Historian은 dumpsys batterystats의 통계를 배터리 관련 디버깅을 위한 시각화 자료로 전환해주는 새로운 도구로서, https://github.com/google/battery-historian에서 확인할 수 있습니다.

diff --git a/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd new file mode 100644 index 0000000..23904b3 --- /dev/null +++ b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd @@ -0,0 +1,633 @@ +page.title=APIs do Android 5.0 +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

Neste documento mostrar mais

+ +
    +
  1. Atualizar seu nível de API desejado
  2. +
  3. Alterações importantes de comportamento +
      +
    1. Caso você ainda não tenha testado seu app no novo tempo de execução do Android (ART)…
    2. +
    3. Caso seu app implemente notificações…
    4. +
    5. Caso seu app use RemoteControlClient…
    6. +
    7. Caso seu app use getRecentTasks()…
    8. +
    9. Caso você esteja usando o Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês)…
    10. +
    11. Caso seu app esteja associado a um serviço…
    12. +
    13. Caso seu app use WebView…
    14. +
    +
  4. +
  5. Interface do usuário +
      +
    1. Suporte ao material design
    2. +
    3. Documentos simultâneos recentes e atividades na tela de recentes
    4. +
    5. Atualizações de WebView
    6. +
    7. Compartilhamento e captura de tela
    8. +
    +
  6. +
  7. Notificações +
      +
    1. Notificações na tela bloqueada
    2. +
    3. Metadados de notificações
    4. +
    +
  8. +
  9. Gráficos +
      +
    1. Suporte para OpenGL ES 3.1
    2. +
    3. Pacote de extensões para Android
    4. +
    +
  10. +
  11. Mídia +
      +
    1. API de câmera para funcionalidades avançadas da câmera
    2. +
    3. Reprodução de áudio
    4. +
    5. Controle de reprodução de mídia
    6. +
    7. Navegação de mídia
    8. +
    +
  12. +
  13. Armazenamento +
      +
    1. Seleção do diretório
    2. +
    +
  14. +
  15. Sem fio e conectividade +
      +
    1. Várias conexões de rede
    2. +
    3. Transmissão por Bluetooth
    4. +
    5. Aprimoramentos na NFC
    6. +
    +
  16. +
  17. Project Volta +
      +
    1. Agendamento de tarefas
    2. +
    3. Ferramentas do desenvolvedor para uso da bateria +
    +
  18. +
  19. Android no local de trabalho e na educação +
      +
    1. Aprovisionamento gerenciado
    2. +
    3. Proprietário do dispositivo
    4. +
    5. Fixação de tela
    6. +
    +
  20. +
  21. Sistema +
      +
    1. Estatísticas de uso do app
    2. +
    +
  22. +
  23. Estrutura de impressão +
      +
    1. Processar PDF como bitmap
    2. +
    +
  24. +
  25. Testes e acessibilidade +
      +
    1. Testes e aprimoramentos na acessibilidade
    2. +
    +
  26. +
  27. IME +
      +
    1. Fácil de alternar entre os idiomas de entrada
    2. +
    +
  28. +
  29. Declarações do manifesto +
      +
    1. Recursos obrigatórios declaráveis
    2. +
    3. Permissões de usuário
    4. +
    +
  30. +
+ +

Diferenças de API

+
    +
  1. Nível de API de 20 a 21 »
  2. +
  3. Visualização do desenvolvedor de L a 21 »
  4. +
+ +
+
+ +

Nível de API: {@sdkPlatformApiLevel}

+ +

O Android 5.0 (LOLLIPOP) oferece novos recursos para usuários e desenvolvedores de apps. Este documento fornece uma introdução às novas APIs mais relevantes.

+ +

Para uma visão de alto nível dos novos recursos da plataforma, veja os destaques do Android Lollipop.

+ + +

Começar a desenvolver

+ +

Para começar a criar apps para o Android 5.0, primeiro é preciso conseguir o SDK do Android. Depois disso, use o Gerenciador de SDK para fazer o download das imagens do sistema e da plataforma de SDK do Android 5.0.

+ +

Para testar seus apps em um dispositivo real, inclua um Nexus 5 ou 7 com a
IMAGEM DE VISUALIZAÇÃO DO SISTEMA DO ANDROID.

+ + + +

Atualizar seu nível de API desejado

+ +

Para melhor otimizar seu app para os dispositivos executando Android {@sdkPlatformVersion}, defina {@code targetSdkVersion} como "{@sdkPlatformApiLevel}", instale o app em uma imagem do sistema do Android {@sdkPlatformVersion}, teste-a e, em seguida, publique o app atualizado com essa alteração.

+ +

É possível usar as APIs do Android {@sdkPlatformVersion} ao mesmo tempo em que oferece suporte a versões mais antigas adicionando condições para o nível de API do sistema antes de executar APIs que não são compatíveis com seu {@code minSdkVersion}. Para saber mais sobre a manutenção de compatibilidade com versões anteriores, leia Suporte a diferentes versões de plataforma.

+ +

Para mais informações sobre como os níveis de API funcionam, leia O que é um nível de API?

+ +

Alterações importantes de comportamento

+ +

Se você já tiver publicado um app para Android, esteja ciente de que seu app pode ser afetado por alterações feitas no Android 5.0.

+ +

Se você ainda não tiver testado o app com o novo tempo de execução do Android (ART)…

+ +

A versão 4.4 apresentou um novo tempo de execução experimental do Android, o ART. Na versão 4.4, o ART era opcional, e o tempo de execução padrão continuava sendo o Dalvik. Com o Android 5.0, o ART agora é o tempo de execução padrão.

+ +

Para uma visão geral dos novos recursos do ART, consulte Introdução ao ART. Alguns dos principais recursos novos são:

+ + + +

A maioria dos apps para Android deve funcionar com o ART sem alterações. No entanto, algumas técnicas que funcionam em Dalvik não funcionam no ART. Para informações sobre os problemas mais importantes, consulte Verificação do comportamento do app no tempo de execução Android (ART). Preste especial atenção se:

+ + + +

Caso seu app implemente as notificações…

+ +

Verifique se suas notificações consideram essas alterações do Android 5.0. Para saber mais sobre como fazer as notificações para o Android 5.0 e superior, consulte o Guia de design de notificações. +

+ +

Estilo do material design

+

As notificações são desenhadas com texto escuro em planos de fundo brancos (ou muito claros) para corresponder aos novos widgets de material design. Verifique a aparência de todas as suas notificações com o novo esquema de cores. Se o resultado não estiver bom, corrija-o:

+ + + +

Som e vibração

+

Se atualmente você estiver adicionando sons e vibrações às suas notificações usando as classes {@link android.media.Ringtone}, {@link android.media.MediaPlayer} ou {@link android.os.Vibrator}, remova este código para que o sistema possa apresentar notificações de forma correta no modo de prioridade. Em vez disso, use métodos {@link android.app.Notification.Builder} para adicionar sons e vibração.

+ +

Definir o dispositivo como {@link android.media.AudioManager#RINGER_MODE_SILENT RINGER_MODE_SILENT} faz com que o dispositivo entre no novo modo de prioridade. O dispositivo sai do modo prioridade se você o configurar para {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_NORMAL} ou {@link android.media.AudioManager#RINGER_MODE_NORMAL RINGER_MODE_VIBRATE}.

+ +

Anteriormente, o Android usava {@link android.media.AudioManager#STREAM_MUSIC STREAM_MUSIC} como o stream principal para controlar o volume em tablets. No Android 5.0, o stream de volume principal para dispositivos smartphone e tablet agora está unificado e é controlado por {@link android.media.AudioManager#STREAM_RING STREAM_RING} ou {@link android.media.AudioManager#STREAM_NOTIFICATION STREAM_NOTIFICATION}.

+ +

Bloquear a visibilidade da tela

+

Por padrão, as notificações agora são exibidas na tela de bloqueio no Android 5.0. Os usuários podem optar por proteger informações confidenciais evitando que elas sejam expostas, caso em que o sistema automaticamente redige o texto exibido pela notificação. Para personalizar esta notificação redigida, use {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+

Se a notificação não tiver informações pessoais ou se você desejar permitir o controle de reprodução de mídia na notificação, chame o método {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} e defina o nível de visibilidade da notificação como {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}. +

+ +

Reprodução de mídia

+

Se você estiver implementando notificações que apresentam controles de transporte ou status de reprodução de mídia, considere a possibilidade de usar o novo modelo {@link android.app.Notification.MediaStyle}, em vez de um objeto {@link android.widget.RemoteViews.RemoteView} personalizado. Qualquer que seja a abordagem escolhida, defina a visibilidade da notificação como {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} de modo que seus controles sejam acessíveis a partir da tela de bloqueio. Ao iniciar o Android 5.0, o sistema não mostra mais os objetos {@link android.media.RemoteControlClient} na tela de bloqueio. Para mais informações, consulte Caso seu app use RemoteControlClient.

+ +

Notificação de alerta

+

As notificações agora podem aparecer em uma pequena janela flutuante (também chamada de notificação de alerta) quando o dispositivo estiver ativo (isto é, o dispositivo estiver desbloqueado e sua tela ativada). Essas notificações aparecem de maneira semelhante à forma compacta da sua notificação, exceto que as de alerta também mostram botões de ação. Os usuários podem utilizar ou dispensar notificações de alerta sem sair do app atual.

+ +

Exemplos de condições que podem acionar notificações de alerta incluem:

+ + + +

Caso seu app implemente notificações em qualquer um desses cenários, verifique se as notificações de alerta são exibidas corretamente.

+ +

Caso seu app use RemoteControlClient…

+

O uso da classe {@link android.media.RemoteControlClient} foi suspenso. Alterne para a nova {@link android.media.session.MediaSession} API assim que possível.

+ +

O bloqueio de telas no Android 5.0 não mostra controles de transporte para {@link android.media.session.MediaSession} ou {@link android.media.RemoteControlClient}. Em vez disso, o app pode fornecer controle de reprodução de mídia de tela de bloqueio por meio de uma notificação. Isso dá ao app mais controle sobre a apresentação dos botões de mídia ao mesmo tempo em que fornece uma experiência consistente para usuários de dispositivos bloqueados e desbloqueados.

+ +

O Android 5.0 apresenta um novo modelo {@link android.app.Notification.MediaStyle} para essa finalidade. {@link android.app.Notification.MediaStyle} converte as ações de notificação que você adicionou com {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent) Notification.Builder.addAction()} em botões compactos incorporados às notificações de reprodução de mídia do seu app. Passar o token da sessão para o método {@link android.app.Notification.MediaStyle#setMediaSession(android.media.session.MediaSession.Token) setSession()} para informar o sistema de que essa notificação controla uma sessão de mídia em andamento.

+ +

Defina a visibilidade da notificação como {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} para marcar a notificação como segura a fim de ser exibida em qualquer tela de bloqueio (protegida ou não). Para mais informações, consulte Notificações na tela de bloqueio.

+ +

Para exibir controles de reprodução de mídia se o app estiver em execução na plataforma da Android TV ou do Android Wear, implemente a classe {@link android.media.session.MediaSession}. Você também deve implementar {@link android.media.session.MediaSession} caso seu app precise receber eventos de botão de mídia em dispositivos Android.

+ +

Se o app usar getRecentTasks()…

+ +

Com a introdução dos novos recursos de tarefas de atividades e documentos simultâneos do Android 5.0 (consulteDocumentos simultâneos e atividades na tela de recentes abaixo), o método {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} teve seu uso suspenso para aprimorar a privacidade do usuário. Para compatibilidade com versões anteriores, esse método ainda retorna um pequeno subconjunto de seus dados, incluindo a chamada de tarefas do próprio app e, possivelmente, outras tarefas não confidenciais (como Início). Se o app estiver usando esse método para recuperar suas próprias tarefas, use {@link android.app.ActivityManager#getAppTasks() getAppTasks()} em vez de recuperar essas informações.

+ +

Caso você esteja usando o Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês)…

+ +

O Android 5.0 apresenta o suporte a sistemas de 64 bits. O aprimoramento de 64 bits aumenta o espaço de endereço e melhora o desempenho ao mesmo tempo em que oferece suporte integral aos apps existentes de 32 bits. O suporte a 64 bits também melhora o desempenho de OpenSSL para criptografia. Além disso, a versão apresenta novas APIs do NDK de mídia nativas, bem como o suporte a OpenGL ES (GLES) 3.1.

+ +

Para usar o suporte a 64 bits fornecidos no Android 5.0, faça o download e instale o NDK Revision 10c a partir da página NDK do Android. Consulte as notas da versão do Revision 10c para mais informações sobre alterações importantes e correções de bug no NDK.

+ +

Caso seu app esteja associado a um serviço…

+ +

O método {@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} agora requer um {@link android.content.Intent} explícito e lança uma exceção se fornecido um propósito implícito. Para garantir que seu app é seguro, use um propósito explícito ao iniciar ou vincular seu {@link android.app.Service} e não declare filtros de intenção para o serviço.

+ +

Caso seu app use WebView…

+ +

O Android 5.0 altera o comportamento padrão para o app.

+ + +

Interface do usuário

+ +

Suporte ao material design

+ +

O lançamento futuro adiciona o suporte ao novo estilo do material design do Android. É possível criar apps com material design que é visualmente dinâmico e tem transições de elemento de interface do usuário que parecem naturais para os usuários. Esse suporte inclui:

+ + + +

Para saber mais sobre como adicionar a funcionalidade de material design ao seu app, consulte Material design.

+ +

Documentos simultâneos e atividades na tela de recentes

+ +

Em versões anteriores, a tela de recentes podia exibir somente uma tarefa para cada app com o qual o usuário tivesse interagido mais recentemente. Agora seu app pode abrir mais tarefas conforme necessário para outras atividades simultâneas para documentos. Esse recurso facilita fazer muitas tarefas ao mesmo tempo ao permitir que os usuários alternem rapidamente entre atividades individuais e documentos da tela de recentes, com uma experiência consistente de alternação entre todos os apps. Exemplos de tarefas simultâneas podem incluir guias abertas em um app para navegadores da Web, documentos em um app de produtividade, partidas simultâneas em um jogo ou bate-papos em um app de mensagens. O app pode gerenciar tarefas por meio da classe {@link android.app.ActivityManager.AppTask}.

+ +

Para inserir uma interrupção lógica para que o sistema trate suas atividades como uma nova tarefa, use {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} ao iniciar a atividade com {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}. Também é possível ter esse comportamento definindo o atributo do elemento <activity>{@code documentLaunchMode} como {@code "intoExisting"} ou {@code "always"} no seu manifesto.

+ +

Para evitar que a tela de recentes fique bagunçada, defina o número máximo de tarefas do seu app que podem aparecer na tela. Para fazer isso, defina o atributo <application> {@link android.R.attr#maxRecents android:maxRecents}. O máximo que pode ser especificado atualmente é 50 tarefas por usuário (25 para dispositivos com pouca RAM).

+ +

As tarefas na tela de recentes podem ser definidas para persistirem em reinicializações. Para controlar o comportamento de persistência, use o atributo android:persistableMode. Também é possível alterar as propriedades visuais de uma atividade na tela de recentes, como o rótulo, o ícone e a cor da atividade, chamando o método {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()}.

+ +

Atualizações de WebView

+

O Android 5.0 atualiza a implementação de {@link android.webkit.WebView} para o Chromium M37, com aprimoramentos de segurança e estabilidade, bem como correções de bugs. A string de user-agent padrão para um {@link android.webkit.WebView} executando no Android 5.0 foi atualizada para incorporar 37.0.0.0 como o número de versão.

+ +

Essa versão apresenta a classe {@link android.webkit.PermissionRequest}, que permite ao seu app conceder a {@link android.webkit.WebView} permissão para acessar recursos protegidos, como a câmera e o microfone, por meio de APIs da Web, como getUserMedia(). Seu app precisa ter as permissões de Android apropriadas para esses recursos a fim de conceder as permissões para {@link android.webkit.WebView}.

+ +

Com o novo método onShowFileChooser(), é possível usar um campo de formulário de entrada em {@link android.webkit.WebView} e iniciar um seletor de arquivos para selecionar imagens e arquivos do dispositivo Android.

+ +

Além disso, essa versão oferece suporte aos padrões abertos de WebAudio, WebGL e WebRTC. Para saber mais sobre os novos recursos incluídos nessa versão, consulte WebView para Android.

+ +

Compartilhamento e captura de tela

+

O Android 5.0 permite adicionar as funcionalidades de compartilhamento e captura de tela ao seu app com as novas APIs de {@link android.media.projection}. Essa funcionalidade é útil, por exemplo, se você desejar ativar o compartilhamento de tela em um app de conferência de vídeo.

+ +

O novo método {@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()} permite ao seu app capturar o conteúdo da tela principal (a exibição padrão) em um objeto {@link android.view.Surface}, que seu app pode enviar pela rede. A API permite capturar o conteúdo somente de telas não protegidas, e não captura áudio do sistema. Para começar a captura de tela, o app precisa solicitar a permissão do usuário iniciando uma caixa de diálogo de captura de tela usando um {@link android.content.Intent} obtido por meio do método {@link android.media.projection.MediaProjectionManager#createScreenCaptureIntent()}.

+ +

Para ver um exemplo de como usar as novas APIs, consulte a classe {@code MediaProjectionDemo} no projeto de amostra.

+ +

Notificações

+ +

Notificações na tela bloqueada

+

As telas de bloqueio no Android 5.0 têm a capacidade de mostrar as notificações. Os usuários podem optar por meio das Configurações para permitir que conteúdo de notificação confidencial seja exibido em uma tela de bloqueio protegida.

+ +

O app pode controlar o nível de detalhe visível quando as notificações são exibidas na tela de bloqueio segura. Para controlar o nível de visibilidade, chame {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} e especifique um dos seguintes valores:

+ + + +

Quando o nível de visibilidade é {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE}, é possível fornecer uma versão redigida do conteúdo da notificação que oculta detalhes pessoais. Por exemplo, um app de mensagens SMS pode exibir uma notificação que mostra "Você tem três novas mensagens de texto", mas oculta o conteúdo da mensagem e os remetentes. Para fornecer essa notificação alternativa, crie primeiro a notificação de substituição usando {@link android.app.Notification.Builder}. Quando você criar o objeto de notificação privada, anexe a notificação de substituição a ele por meio do método {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+ +

Metadados de notificações

+

O Android 5.0 usa os metadados associados com as notificações do seu app para classificá-las de modo mais inteligente. Para definir os metadados, chame os métodos a seguir em {@link android.app.Notification.Builder} ao criar a notificação:

+ + + +

Gráficos

+ +

Suporte para OpenGL ES 3.1

+

O Android 5.0 adiciona o suporte nativo ao OpenGL ES 3.1 e interfaces Java. As novas e importantes funcionalidades fornecidas no OpenGL ES 3.1 incluem:

+ + + +

A interface Java para o OpenGL ES 3.1 no Android é fornecida com {@link android.opengl.GLES31}. Ao usar o OpenGL ES 3.1, declare isso em seu arquivo de manifesto junto com a tag {@code } e o atributo {@code android:glEsVersion}. Por exemplo:

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

Para mais informações sobre como usar o OpenGL ES, inclusive como verificar a versão do OpenGL ES compatível do dispositivo no tempo de execução, consulte o Guia da OpenGL ES API.

+ +

Pacote de extensões para Android

+ +

Além do OpenGL ES 3.1, essa versão fornece um pacote de extensões com interfaces Java e suporte nativo para a funcionalidade de gráfico avançado. Essas extensões são tratadas como um único pacote pelo Android. Se a extensão {@code ANDROID_extension_pack_es31a} estiver presente, seu app poderá presumir que todas as extensões no pacote estão presentes e ativar os recursos de linguagem de sombreamento com uma única instrução {@code #extension}.

+ +

O pacote de extensões oferece suporte a:

+ + + +

A interface Java para o pacote de extensões é fornecido com {@link android.opengl.GLES31Ext}. No manifesto do app, é possível declarar que o app precisa ser instalado somente em dispositivos que oferecem suporte ao pacote de extensões. Por exemplo:

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

Mídia

+ +

Camera API para funcionalidades avançadas da câmera

+ +

O Android 5.0 apresenta a nova android.hardware.camera2 API para facilitar o processamento de imagens e a captura de fotos com granulação baixa. Agora é possível acessar de maneira programática os dispositivos da câmera disponíveis para o sistema com {@link android.hardware.camera2.CameraManager#getCameraIdList() getCameraIdList()} e conectar um determinado dispositivo com {@link android.hardware.camera2.CameraManager#openCamera(java.lang.String, android.hardware.camera2.CameraDevice.StateCallback, android.os.Handler) openCamera()}. Para começar a capturar imagens, crie um {@link android.hardware.camera2.CameraCaptureSession} e especifique os objetos {@link android.view.Surface} para enviar imagens capturadas. O {@link android.hardware.camera2.CameraCaptureSession} pode ser configurado para tirar uma única foto ou várias imagens em uma sequência.

+ +

Para ser notificado quando novas imagens são capturadas, implemente o listener {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} e defina-o na solicitação de captura. Agora quando o sistema conclui a solicitação de captura de imagem, seu listener {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback} recebe uma chamada a {@link android.hardware.camera2.CameraCaptureSession.CaptureCallback#onCaptureCompleted(android.hardware.camera2.CameraCaptureSession, android.hardware.camera2.CaptureRequest, android.hardware.camera2.TotalCaptureResult) onCaptureCompleted()}, fornecendo a você os metadados da captura de imagem em um {@link android.hardware.camera2.CaptureResult}.

+ +

A classe {@link android.hardware.camera2.CameraCharacteristics} permite que seu app detecte quais recursos de câmera estão disponíveis em um dispositivo. A propriedade {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} do objeto representa o nível de funcionalidade da câmera.

+ + + +

Para ver como usar a Camera API atualizada, consulte as amostras de implementação de {@code Camera2Basic} e {@code Camera2Video} nessa versão.

+ +

Reprodução de áudio

+

Essa versão inclui as seguintes alterações em {@link android.media.AudioTrack}:

+ + +

Controle de reprodução de mídia

+

Use a nova notificação e APIs de mídia para garantir que a interface do usuário do sistema saiba da sua reprodução de mídia e possa extrair e mostrar a capa do álbum. Controlar a reprodução de mídia em uma interface do usuário agora é mais fácil com as novas classes {@link android.media.session.MediaSession} e {@link android.media.session.MediaController}.

+ +

A nova classe {@link android.media.session.MediaSession} substitui a classe {@link android.media.RemoteControlClient} que teve seu uso suspenso e fornece um único conjunto de métodos de chamada de retorno para gerenciar os controles de transporte e os botões de mídia. Se o app fornecer a reprodução de mídia e for executado na plataforma Android TV ou Android Wear, use a classe {@link android.media.session.MediaSession} para lidar com os controles de transporte usando os mesmos métodos de chamada de retorno.

+ +

É possível criar seu próprio app controlador de mídia com a nova classe {@link android.media.session.MediaController}. Essa classe oferece uma maneira de thread seguro para monitorar e controlar a reprodução de mídia do processo de interface do seu app. Ao criar um controlador, especifique um objeto {@link android.media.session.MediaSession.Token} para que seu app possa interagir com o {@link android.media.session.MediaSession} determinado. Usando os métodos {@link android.media.session.MediaController.TransportControls}, é possível enviar comandos como {@link android.media.session.MediaController.TransportControls#play() play()}, {@link android.media.session.MediaController.TransportControls#stop() stop()}, {@link android.media.session.MediaController.TransportControls#skipToNext() skipToNext()} e {@link android.media.session.MediaController.TransportControls#setRating(android.media.Rating) setRating()} para controlar a reprodução de mídia nessa sessão. Com o controlador, também é possível registrar um objeto {@link android.media.session.MediaController.Callback} para escutar os metadados e mudanças de estado da sessão.

+ +

Além disso, é possível criar notificações ricas que permitem o controle de reprodução ligado a uma sessão de mídia com a nova classe {@link android.app.Notification.MediaStyle}.

+ +

Navegação de mídia

+

O Android 5.0 apresenta a capacidade dos apps de procurar a biblioteca de conteúdo de mídia de outro app por meio da nova android.media.browse API. Para expor o conteúdo de mídia no seu app, estenda a classe {@link android.service.media.MediaBrowserService}. Sua implementação de {@link android.service.media.MediaBrowserService} deve fornecer acesso a um {@link android.media.session.MediaSession.Token} para que apps possam reproduzir conteúdo de mídia fornecido por meio do seu serviço.

+

Para interagir com o serviço de navegador de mídia, use a classe {@link android.media.browse.MediaBrowser}. Especifique o nome do componente para um {@link android.media.session.MediaSession} ao criar uma instância {@link android.media.browse.MediaBrowser}. Usando essa instância do navegador, seu app pode se conectar ao serviço associado e obter um objeto {@link android.media.session.MediaSession.Token} para reproduzir conteúdo exposto por meio do serviço.

+ +

Armazenamento

+ +

Seleção do diretório

+ +

O Android 5.0 estende a Estrutura de acesso ao armazenamento para permitir que os usuários selecionem uma subárvore inteira de diretório, fornecendo aos apps o acesso de leitura/gravação a todos os documentos existentes sem exigir confirmação do usuário para cada item.

+ +

Para selecionar uma subárvore de diretório, crie e envie um propósito {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE}. O sistema exibe todas as instâncias {@link android.provider.DocumentsProvider} que oferecem suporte à seleção de subárvore, permitindo que o usuário procure e selecione um diretório. O URI retornado representa o acesso à subárvore selecionada. É possível usar {@link android.provider.DocumentsContract#buildChildDocumentsUriUsingTree(android.net.Uri, java.lang.String) buildChildDocumentsUriUsingTree()} e {@link android.provider.DocumentsContract#buildDocumentUriUsingTree(android.net.Uri, java.lang.String) buildDocumentUriUsingTree()} juntamente com {@link android.content.ContentResolver#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) query()} para explorar a subárvore.

+ +

O novo método {@link android.provider.DocumentsContract#createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String) createDocument()} permite criar novos documentos ou diretórios em qualquer lugar abaixo da subárvore. Para gerenciar documentos existentes, use {@link android.provider.DocumentsContract#renameDocument(android.content.ContentResolver, android.net.Uri, java.lang.String) renameDocument()} e {@link android.provider.DocumentsProvider#deleteDocument(java.lang.String) deleteDocument()}. Confira o {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} para verificar o suporte do provedor para essas chamadas antes de emiti-las.

+ +

Se você estiver implementando um {@link android.provider.DocumentsProvider} e desejar oferecer suporte à seleção de subárvore, implemente {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()} e inclua {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD} em {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS}.

+ +

O Android 5.0 também apresenta novos diretórios específicos ao pacote no armazenamento compartilhado no qual o app pode colocar arquivos de mídia para inclusão em {@link android.provider.MediaStore}. O novo {@link android.content.Context#getExternalMediaDirs()} retorna caminhos para esses diretórios em todos os dispositivos de armazenamento compartilhado. De forma semelhante a {@link android.content.Context#getExternalFilesDir(java.lang.String) getExternalFilesDir()}, permissões adicionais não são necessárias para que o app acesse os caminhos retornados. A plataforma periodicamente verifica novas mídias nesses diretórios, mas também é possível usar o {@link android.media.MediaScannerConnection} para verificar explicitamente se há novo conteúdo.

+ +

Conectividade e sem fio

+ +

Várias conexões de rede

+

O Android 5.0 apresenta novas APIs de várias redes que permitem ao seu app verificar dinamicamente as redes disponíveis com recursos específicos, além de estabelecer uma conexão com eles. Essa funcionalidade é útil quando seu app exigir uma rede especializada, como SUPL, MMS ou uma rede de faturamento via operadora. Outro caso de uso é se você desejar enviar os dados usando um determinado tipo de protocolo de transporte.

+ +

Para selecionar e se conectar a uma rede dinamicamente a partir do seu app, siga estas etapas:

+ +
    +
  1. Crie um {@link android.net.ConnectivityManager}.
  2. +
  3. Use a classe {@link android.net.NetworkRequest.Builder} para criar um objeto {@link android.net.NetworkRequest} e especificar os recursos de rede e o tipo de transporte nos quais seu app está interessado.
  4. +
  5. Para buscar redes adequadas, chame {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} ou {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()} e passe o objeto {@link android.net.NetworkRequest} e uma implementação de {@link android.net.ConnectivityManager.NetworkCallback}. Use o método {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) requestNetwork()} se você quiser alternar para uma rede adequada após ela ser detectada. Para receber notificações somente de redes verificadas sem alternar ativamente, use o método {@link android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}.
  6. +
+ +

Quando o sistema detectar uma rede adequada, ele se conectará à rede e chamará a chamada de retorno {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. É possível usar o objeto {@link android.net.Network} da chamada de retorno a fim de receber mais informações sobre a rede ou direcionar o tráfego para que a rede selecionada seja usada.

+ +

Bluetooth Low Energy

+

O Android 4.3 apresentou o suporte de plataforma para o Bluetooth Low Energy(Bluetooth LE) na função central. No Android 5.0, um dispositivo Android agora pode agir como um dispositivo periférico de Bluetooth LE. Os apps podem usar esse recurso para fazer com que sua presença seja percebida pelos dispositivos vizinhos. É possível, por exemplo, criar apps que permitem que um dispositivo funcione como um pedômetro ou um monitor de integridade de dados e envie seus dados para outro dispositivo Bluetooth LE.

+

As novas APIs de {@link android.bluetooth.le} permitem que seus apps divulguem anúncios, verifiquem respostas e formem conexões com dispositivos Bluetooth LE vizinhos. Para usar os novos recursos de publicidade e varredura, adicione a permissão {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} no manifesto. Quando os usuários atualizam ou fazem o download do seu app a partir da Play Store, eles são solicitados a conceder a seguinte permissão para seu app: "Informações da conexão Bluetooth: permite que o app controle o Bluetooth, incluindo a divulgação para dispositivos Bluetooth vizinhos ou a busca de informações sobre esses dispositivos."

+ +

Para começar a publicidade de Bluetooth LE para que outros dispositivos possam descobrir seu app, chame {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} e passe uma implementação da classe {@link android.bluetooth.le.AdvertiseCallback}. O objeto de chamada de retorno recebe um relatório do sucesso ou da falha da operação de publicidade.

+ +

O Android 5.0 apresenta a classe {@link android.bluetooth.le.ScanFilter} para que seu app possa buscar somente os tipos específicos de dispositivos nos quais está interessado. Para iniciar a busca de dispositivos Bluetooth LE, chame {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} e passe uma lista de filtros. Na chamada de método, você precisa fornecer também uma implementação de {@link android.bluetooth.le.ScanCallback} para informar quando uma publicidade de Bluetooth LE for encontrada.

+ +

Aprimoramentos na NFC

+

O Android 5.0 adiciona estas melhorias para permitir um uso mais amplo e flexível da NFC:

+ + + +

Project Volta

+ +

Além de novos recursos, o Android 5.0 enfatiza melhorias na vida útil da bateria. Use as novas APIs e a ferramenta para compreender e otimizar o consumo de energia de seu app.

+ +

Agendamento de tarefas

+

O Android 5.0 apresenta uma nova {@link android.app.job.JobScheduler} API que permite otimizar a vida útil da bateria definindo as tarefas para que o sistema execute de maneira assíncrona em um momento posterior ou sob condições especificadas (como quando o dispositivo está carregando). O agendamento de tarefa é útil em situações como:

+ + +

Uma unidade de trabalho está encapsulada por um objeto {@link android.app.job.JobInfo}. Esse objeto especifica os critérios de agendamento.

+ +

Use a classe {@link android.app.job.JobInfo.Builder} para configurar como a tarefa agendada deve ser executada. É possível agendar a tarefa para ser executada em condições específicas, como:

+ + + +

Por exemplo, é possível adicionar código como este para executar a tarefa em uma rede não medida:

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

Se o dispositivo tiver energia estável (ou seja, se ele estiver conectado por mais de dois minutos e a bateria estiver em um nível de integridade), o sistema executará a tarefa agendada que estiver pronta para execução, mesmo se o prazo dela não tiver expirado.

+ +

Para ver um exemplo de como usar a {@link android.app.job.JobScheduler}API, consulte a amostra de implementação de {@code JobSchedulerSample} nesta versão.

+ +

Ferramentas do desenvolvedor para uso da bateria

+ +

O novo comando {@code dumpsys batterystats} gera dados estatísticos interessantes sobre o uso da bateria em um dispositivo, organizados pelo código único do usuário (UID, na sigla em inglês). As estatísticas incluem:

+ + + +

Use a opção {@code --help} para saber mais sobre as diversas opções para adequar a saída. Por exemplo, para imprimir estatísticas de uso da bateria de um determinado pacote de apps desde que o dispositivo foi carregado pela última vez, execute este comando: +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

É possível usar a ferramenta Battery Historian na saída do comando {@code dumpsys} para gerar uma visualização de HTML de eventos relacionados à energia dos registros. Essa informação facilita para você entender e diagnosticar problemas relacionados à bateria.

+ +

Android no local de trabalho e na educação

+

Provisionamento gerenciado

+ +

O Android 5.0 apresenta a nova funcionalidade para a execução de apps em um ambiente corporativo. Um administrador de dispositivo pode iniciar um processo de provisionamento gerenciado para adicionar um perfil gerenciado copresente, mas separado, a um dispositivo se o usuário tiver uma conta pessoal existente. Os apps que estão associados aos perfis gerenciados são exibidos junto a apps não gerenciados no inicializador do usuário, na tela de recentes e nas notificações.

+ +

Para iniciar o processo de provisionamento gerenciado, envie {@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE ACTION_PROVISION_MANAGED_PROFILE} em um {@link android.content.Intent}. Se a chamada ocorrer, o sistema acionará a chamada de retorno {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete(android.content.Context, android.content.Intent) onProfileProvisioningComplete()}. Será possível então chamar {@link android.app.admin.DevicePolicyManager#setProfileEnabled(android.content.ComponentName) setProfileEnabled()} para ativar esse perfil gerenciado.

+ +

Por padrão, somente um pequeno subconjunto de apps são ativados no perfil gerenciado. É possível instalar mais apps no perfil gerenciado chamando {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()}.

+ +

Se você estiver desenvolvendo um app inicializador, será possível usar a nova classe {@link android.content.pm.LauncherApps} para ter uma lista das atividades inicializáveis do usuário atual e de quaisquer perfis gerenciados associados. O inicializador pode destacar visualmente os apps gerenciados acrescentando um selo de trabalho ao drawable do ícone. Para recuperar o ícone com selo, chame {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}.

+ +

Para saber como usar a nova funcionalidade, consulte a amostra de implementação de {@code BasicManagedProfile} nesta versão.

+ +

Proprietário do dispositivo

+

O Android 5.0 apresenta a capacidade de implantar um app do proprietário do dispositivo. O proprietário do dispositivo é um tipo especializado de administrador de dispositivo que tem a capacidade adicional de criar e remover usuários secundários, bem como definir configurações globais no dispositivo. Seu app de proprietário do dispositivo pode usar os métodos na classe {@link android.app.admin.DevicePolicyManager} para tirar o controle de granulação da configuração, da segurança e dos apps em dispositivos gerenciados. Um dispositivo pode ter somente um proprietário ativo de cada vez.

+ +

Para implantar e ativar um proprietário do dispositivo, você precisa realizar uma transferência de dados de NFC de um app de programação para o dispositivo enquanto o dispositivo estiver em seu estado não provisionado. Essa transferência de dados envia as mesmas informações presentes no propósito de provisionamento descrito no Provisionamento gerenciado.

+ +

Fixação de tela

+ +

O Android 5.0 apresenta uma nova API de fixação de tela que permite restringir temporariamente a saída dos usuários de sua tarefa ou que eles sejam interrompidos por notificações. Isso pode ser usado, por exemplo, se você desenvolve um app educacional compatível com requisitos de avaliação de alto risco no Android ou em um app de quiosque com um único objetivo. Depois que o app ativar a fixação de tela, os usuários não podem ver as notificações, acessar outros apps ou retornar para a tela inicial do app até saírem do modo.

+ +

Existem duas maneiras de ativar a fixação de tela:

+ + + +

Quando o bloqueio de tarefa estiver ativo, o seguinte comportamento ocorre:

+ + + +

Impressão de framework

+ +

Renderizar PDF como bitmap

+

Agora é possível processar páginas de documentos PDF para imagens de bitmap e imprimi-las usando a nova classe {@link android.graphics.pdf.PdfRenderer}. Você deve especificar um {@link android.os.ParcelFileDescriptor} que seja buscável (isto é, o conteúdo poderá ser acessado aleatoriamente) e no qual o sistema registre o conteúdo imprimível. O app pode obter uma página para processar com {@link android.graphics.pdf.PdfRenderer#openPage(int) openPage()} e depois chamar {@link android.graphics.pdf.PdfRenderer.Page#render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, int) render()} para desativar o {@link android.graphics.pdf.PdfRenderer.Page} aberto em um bitmap. Também é possível definir parâmetros adicionais se você somente deseja converter uma parte do documento em uma imagem de bitmap (por exemplo, para implementar uma renderização de bloco para zoom no documento).

+ +

Para obter um exemplo de como usar as novas APIs, consulte o exemplo {@code PdfRendererBasic}.

+ +

Sistema

+

Estatísticas de uso do app

+

Agora é possível acessar o histórico de utilização em um dispositivo Android com a nova {@link android.app.usage} API. Essa API fornece informações mais detalhadas sobre o uso do método suspenso {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()}. Para usar essa API, primeiro é preciso declarar a permissão {@code "android.permission.PACKAGE_USAGE_STATS"} em seu manifesto. O usuário também deve permitir o acesso do app por meio de Configurações > Segurança > Apps com acesso de uso.

+ +

O sistema coleta os dados de uso por apps, agregando os dados em intervalos diários, semanais, mensais e anuais. A duração máxima pela qual o sistema mantém esses dados é:

+ + + +

Para cada app, o sistema registra os seguintes dados:

+ + +

Testes e acessibilidade

+ +

Melhorias de testes e acessibilidade

+

O Android 5.0 adiciona o seguinte suporte a testes e acessibilidade:

+ + + +

IME

+ +

Troca facilitada entre idiomas de entrada

+ +

A partir do Android 5.0, os usuários podem facilmente alternar entre todos os editores de método de entrada (IME) compatíveis com a plataforma. Executar a ação de comutação designada (normalmente tocando o ícone de globo no teclado virtual) percorre todos os IMEs. Essa mudança de comportamento foi implementada pelo método {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()}.

+ +

Além disso, o framework agora verifica se o próximo IME inclui um mecanismo de alternação (e, portanto, se o IME é compatível com a alternação posterior ao IME). Um IME com mecanismo de alternação não passará a outro IME sem esse mecanismo. Essa mudança de comportamento foi implementada pelo método {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()}. + +

Para saber um exemplo de como usar as APIs de alternação de IME atualizadas, consulte o exemplo atualizado de implementação de teclado virtual nesta versão. Para saber mais sobre como implementar a troca entre IMEs, consulte Criação de um método de entrada. +

+ +

Declarações de manifesto

+ +

Recursos necessários declaráveis

+

Os seguintes valores agora são compatíveis no elemento {@code }, para garantir que o app seja instalado somente em dispositivos que fornecem os recursos necessários.

+ + + +

Permissões do usuário

+ +

A seguinte permissão agora é compatível com o elemento {@code } para declarar as permissões exigidas por seu app para o acesso a algumas APIs.

+ + diff --git a/docs/html-intl/intl/pt-br/about/versions/lollipop.jd b/docs/html-intl/intl/pt-br/about/versions/lollipop.jd new file mode 100644 index 0000000..cb76376 --- /dev/null +++ b/docs/html-intl/intl/pt-br/about/versions/lollipop.jd @@ -0,0 +1,256 @@ +page.title=Android Lollipop + +@jd:body + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +

Bem-vindo ao Android 5.0 Lollipop, a maior e mais ambiciosa versão para Android já lançada!

+ +

Esta versão está repleta de novos recursos para usuários e milhares de novas APIs para desenvolvedores. Ele expande o Android ainda mais, de telefones, tablets e acessórios a TVs e carros.

+ +

Para uma análise mais detalhada das novas APIs para desenvolvedores, consulte a Visão geral da API do Android 5.0. Ou leia mais sobre o Android 5.0 para consumidores em www.android.com.

+ + + +

Para testar seus apps em um dispositivo real, inclua um Nexus 5 ou 7 com a
IMAGEM DE VISUALIZAÇÃO DO SISTEMA DO ANDROID.

+ + +

Material design

+ +

O Android 5.0 traz o Material design para o Android e fornece um kit de ferramentas de interface de usuário para integrar os novos padrões de design facilmente em seus apps.

+ + + +

Novas visualizações em 3Dpermitem que você defina um nível z para aumentar os elementos de fora da hierarquia de visualização e projetar sombras em tempo real, mesmo ao se moverem.

+ + +

Transições de atividades incorporadas levam o usuário diretamente de um estado para outro, com movimentos bonitos e animados. O tema do material adiciona transições para suas atividades, incluindo a capacidade de usar elementos visuais compartilhados em atividades.

+ + + +
+
+ +
+
+ Para reproduzir o filme, clique na tela do dispositivo +
+
+ + +

Animações com ondulação estão disponíveis para botões, caixas de seleção e outros controles de toque em seu app. + +

Você também pode definir drawables de vetor em XML e animá-los de várias formas. Drawables de vetor são dimensionados sem perder definição, então eles são perfeitos para ícones de uma cor em apps.

+ +

Um novo agrupamento de processamento gerenciado pelo sistema, chamado de RenderThread, mantém as animações suaves, mesmo quando há atrasos no agrupamento da interface de usuário principal.

+ + +

Foco no desempenho

+ +

O Android 5.0 fornece uma experiência de computação mais rápida, mais suave e mais poderosa.

+ +

O Android agora é executado exclusivamente no novo tempo de execução ART, criado desde o início para oferecer suporte a uma mistura entre código AOT, JIT e interpretado. Ele é compatível com arquiteturas ARM, x86 e MIPS e é totalmente compatível com 64 bits.

+ +

ART melhora o desempenho e a resposta do app. A coleta eficiente de lixo reduz o número e a duração de pausas para eventos GC, o que se ajusta confortavelmente na janela de sincronização vertical para que seu app não ignore quadros. ART também move dinamicamente a memória para otimizar o desempenho para os usos de primeiro plano.

+ +

O Android 5.0 introduz suporte de plataforma para arquiteturas de 64 bits, usadas pelo NVIDIA Tegra K1 do Nexus 9. Otimizações fornecem maior espaço de endereço e desempenho aprimorado para certas cargas de trabalho de cálculo. Apps escritos na linguagem Java são executados como apps de 64 bits automaticamente sem a necessidade de modificações. Se o app usar código nativo, estendemos o NDK para oferecer suporte a novos ABIs para ARM v8, x86-64 e MIPS-64.

+ +

Com o contínuo foco no desempenho mais suave, o Android 5.0 oferece maior sincronização audiovisual. O fluxo de áudio e de gráficos foi instrumentalizado para marcações de tempo mais precisas, possibilitando que apps de vídeo e jogos exibam conteúdos sincronizados de forma suave.

+ + +

Notificações

+ +

As notificações no Android 5.0 estão mais visíveis, acessíveis e configuráveis.

+ + + +

Se o usuário quiser, diferentes detalhes de notificações podem aparecer na tela de bloqueio. Os usuários podem optar pela exibição de nenhuma notificação de conteúdo, algumas notificações ou notificações de todo o conteúdo na tela de bloqueio de segurança.

+ +

Os principais alertas de notificação, como as chamadas recebidas, aparecem nas notificações de alerta, uma pequena janela flutuante que permite que o usuário responda ou descarte sem sair do app atual.

+ +

Agora você pode adicionar novos metadados a notificações para coletar contatos associados (para classificação), categoria e prioridade.

+ +

Um novo modelo de notificação para mídia fornece controles de mídia consistentes para notificações com até 6 botões de ação, incluindo controles personalizados como "polegar para cima", sem a necessidade de RemoteViews!

+ + + +

Seus apps na tela grande

+ +

A Android TVoferece uma plataforma completa de TV para a experiência de tela grande no app. A Android TV está centrada na experiência da tela inicial simplificada, que permite que os usuários descubram conteúdos facilmente, com recomendações personalizadas e pesquisa por voz.

+ +

Com a Android TV, você agora pode criar experiências grandes e arrojadas para o conteúdo do seu app ou jogo e oferecer suporte a interações com controles de jogo e outros dispositivos de entrada. Para ajudar a criar interfaces de usuário cinematográficas, com 3 metros, para televisão, o Android fornece uma estrutura de interface de usuário na biblioteca de suporte v17.

+ +

A Estrutura de Entrada da Android TV(TIF) permite que apps suportem transmissões de vídeo de fontes como entradas HDMI, sintonizadores de TV e receptores IPTV. Ele também ativa a pesquisa de TV ao vivo por meio de metadados publicados pela entrada da TV e inclui um Serviço de controle HDMI-CEC para suportar diversos dispositivos com um único controle remoto.

+ +

A Estrutura de Entrada de TV fornece acesso a uma variedade de fontes de entrada de TV ao vivo e as reúne em uma única interface para que usuários naveguem, visualizem e desfrutem do conteúdo. A criação de um serviço de entrada de TV para seu conteúdo pode ajudar a tornar o conteúdo mais acessível em dispositivos de TV.

+ + + + + +

Apps centrados em documentos

+ +

O Android 5.0 apresenta um espaço de Visão geral redesenhado (anteriormente chamado de Recentes), que está mais versátil e útil para a realização de múltiplas tarefas.

+ +

Novas APIs permitem exibir atividades separadas em seu app, como documentos individuais juntamente com outras telas recentes.

+ +

Você pode aproveitar os documentos simultâneos para fornecer aos usuários acesso instantâneo a mais dos seus conteúdos ou serviços. Por exemplo, você pode usar documentos simultâneos para representar arquivos em um app de player de produtividade, correspondências em um jogo ou de bate-papo em um app de mensagens.

+ + + +

Conectividade avançada

+ +

O Android 5.0 adiciona novas APIs que permitem que os apps realizem operações simultâneas com o Bluetooth Low Energy (BLE), permitindo a varredura (modo central) e a publicidade (modo periférico).

+ +

Novos recursos de múltiplas redes permitem que os apps consultem redes disponíveis para os recursos disponíveis, como Wi-Fi, celular, medido, ou fornecer determinados recursos de rede. Em seguida, o app pode solicitar uma conexão e responder à perda de conectividade ou a outras alterações de rede.

+ +

As APIs da NFC agora permitem que os apps registrem um código de app da NFC (AID, na sigla em inglês) dinamicamente. Elas também podem definir o serviço de emulação de cartão preferencial por serviço ativo e criar um registro de NDEF contendo dados de texto UTF 8.

+ + + +

Gráficos de alto desempenho

+ +

O suporte para o Khronos OpenGL ES 3.1 agora oferece capacidade gráfica 2D e 3D de alto desempenho para jogos e outros apps nos dispositivos compatíveis.

+ +

O OpenGL ES 3.1 adiciona sombreadores de cálculo Shaders, texturas de estêncil, efeitos visuais acelerados, compressão de textura ETC2/EAC de alta qualidade, renderização avançada de texturas, tamanho padronizado de texturas, formatos de processamento de buffer etc.

+ + +
+ +

Rival Knights, da Gameloft, usa compressão de texturas escalonáveis adaptáveis (ASTC) de AEP e sombreadores de cálculo do ES 3.1 para apresentar efeitos de florescimento em HDR e oferecer maior detalhamento gráfico.

+
+ +

O Android 5.0 também apresenta o Pacote de Extensões do Android (AEP), um conjunto de extensões do OpenGL ES que fornece acesso a recursos, como sombreadores de mosaico, sombreadores de geometria, compressão de texturas ASTC, interpolação por amostra e sombreamento e outros recursos avançados de renderização. Com o AEP, você pode fornecer gráficos de alto desempenho em diversas GPUs.

+ + +

Áudio mais potente

+ +

Um novo design de captura de áudio oferece uma entrada de áudio de baixa latência. O novo design inclui: uma faixa de captura rápida que nunca bloqueia, exceto durante uma leitura; clientes de captura rápida de faixas em faixas de amostras nativas, contagem de canais e profundidade de bits; e os clientes de captura normal oferecem nova amostra, mixagem de canais cima/baixo e profundidade de bits cima/baixo.

+ +

A mixagem de streaming de áudio de vários canais permite que apps profissionais de áudio mixem até oito canais, incluindo canais 5.1 e 7.1.

+ +

Apps podem expor seu conteúdo de mídia, procurar mídia de outros apps e solicitar reprodução. O conteúdo é exposto por meio de uma interface de consulta e não precisa residir no dispositivo.

+ +

Apps têm um melhor controle de granulação sobre a síntese texto-fala por meio de perfis de voz que estão associados a locais, qualidade e classificação de latência específicos. Novas APIs também aprimoram o suporte para verificar erros de síntese, sínteses de rede, descobertas de idioma e substituições de rede.

+ +

O Android agora inclui suporte ao padrão de periféricos de áudio USB, permitindo que os usuários conectem fones de ouvido, alto-falantes, microfones USB ou outros periféricos digitais de alto desempenho. O Android 5.0 também adiciona suporte a codecs de áudio Opus.

+ +

Novas APIs de {@link android.media.session.MediaSession} para controle da reprodução de mídia agora facilitam o fornecimento de controles de mídia entre telas e outros controladores.

+ + +

Câmera e vídeo aprimorados

+ +

O Android 5.0 apresenta todas as novas APIs de câmeras que permitem capturar formatos brutos como YUV e Bayer RAW, bem como parâmetros de controle como tempo de exposição, sensibilidade ISO e duração de frame com base por frame. O novo fluxo de câmera totalmente sincronizado permite capturar imagens YUV sem compressão e com a mais alta resolução em 30 QPS em dispositivos compatíveis.

+ +

Além de imagens, também é possível capturar metadados, como modelos de ruído, e informações ópticas da câmera.

+ +

Apps que enviam streamings pela rede agora podem aproveitar a codificação de vídeo de alta eficiência (HEVC, na sigla em inglês) do H.265 para aumentar a codificação e a decodificação dos dados em vídeo.

+ +

O Android 5.0 também adiciona suporte a encapsulamento de multimídia para proporcionar a melhor experiência possível ao conteúdo de definição ultra-alta (4K) e a capacidade de reproduzir dados comprimidos de áudio e vídeo em conjunto.

+ + + +
+ +

Os usuários têm uma visualização unificada de seus apps pessoais e de trabalho, que têm selos para facilitar a identificação.

+
+ + +

Android no local de trabalho

+ +

Para ativar a opção de trazer seu próprio dispositivo em ambientes corporativos, um novo processo de aprovisionamento gerenciado cria um perfil de trabalho seguro no dispositivo. No lançador, os apps são mostrados com o selo de Trabalho para indicar que o app e seus dados são administrados no perfil de trabalho por um administrador de TI.

+ +

As notificações do perfil de trabalho e do perfil pessoal são acessadas em uma visualização unificada. Os dados de cada perfil são sempre mantidos separados e seguros entre si, incluindo quando o mesmo app é usado por ambos os perfis.

+ +

Para dispositivos de propriedade de uma empresa, os administradores de TI podem iniciar com um novo dispositivo e configurá-lo com um proprietário do dispositivo. Os empregadores podem emitir esses dispositivos com um app de proprietário do dispositivo já instalado que pode definir configurações globais do dispositivo.

+ + + +

Compartilhamento e captura de tela

+ +

O Android 5.0 permite adicionar recursos de captura e compartilhamento de tela a seu app.

+ +

Com a permissão do usuário, é possível capturar vídeo não seguro na tela e exibi-lo pela rede, se for de sua escolha.

+ + +

Novos tipos de sensores

+ +

No Android 5.0, um novo sensor com detector de inclinação ajuda a melhorar o reconhecimento de atividades em dispositivos compatíveis, e um sensor de atividade cardíaca faz o relatório da frequência cardíaca do usuário que toca no dispositivo.

+ +

Novos sensores compostos de interação agora estão disponíveis para detectar interações especiais, como gestos de acordar, pegar e olhar rapidamente.

+ + + +

WebView do Chromium

+ +
+ +
+ +

A versão inicial para Android 5.0 inclui uma versão do Chromium para {@link android.webkit.WebView} com base na versão M37 do Chromium, adicionando suporte a WebRTC, WebAudio e WebGL.

+ +

O Chromium M37 também inclui suporte nativo a todas as especificações de Componentes Web: elementos personalizados, DOM de sombra, Importações de HTML e modelos. Isso significa que é possível usar o Polymer e seus elementos de material design em um WebView sem a necessidade de polyfills.

+ +

Embora o WebView seja baseado no Chromium desde o Android 4.4, a camada do Chromium agora é atualizável no Google Play.

+ +

À medida que novas versões do Chromium são disponibilizadas, os usuários podem atualizar a partir do Google Play para garantir que recebam as mais recentes melhorias e correções de bugs para WebView, oferecendo as APIs da Web e correções de bug mais recentes aos apps que usam o WebView no Android 5.0 e posterior.

+ + + +

Acessibilidade e entrada

+ +

Novas APIs de acessibilidade podem recuperar informações detalhadas sobre as propriedades das janelas na tela. Com elas, usuários com problemas de visão podem interagir e definir ações de entrada padrão ou personalizadas para elementos da interface do usuário.

+ +

Novas APIs do editor de Método de entrada (IME) permitem trocar com mais rapidez para outros IMEs diretamente no método de entrada.

+ + + +

Ferramentas para a criação de apps com eficiência de bateria

+ +

Novas APIs de agendamento de tarefas permitem otimizar a vida útil da bateria adiando tarefas para que o sistema as execute mais tarde ou em condições específicas, como quando o dispositivo é carregado ou está conectado ao Wi-Fi.

+ +

Um novo comando dumpsys batterystats gera Estatísticas de uso da bateria que podem ser utilizadas para entender o uso de energia em todo o sistema e o impacto de seu app na bateria do dispositivo. É possível ver um histórico dos eventos de energia, o uso aproximado de energia por UID e por componente do sistema, entre outros.

+ + +

O Battery Historian é uma nova ferramenta que converte as estatísticas de dumpsys batterystats em uma visualização para depuração da bateria. Você pode encontrá-lo em https://github.com/google/battery-historian.

diff --git a/docs/html-intl/intl/ru/about/versions/android-5.0.jd b/docs/html-intl/intl/ru/about/versions/android-5.0.jd new file mode 100644 index 0000000..5dbbac8 --- /dev/null +++ b/docs/html-intl/intl/ru/about/versions/android-5.0.jd @@ -0,0 +1,636 @@ +page.title=API для Android 5.0 +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

Содержание документа подробнее

+ +
    +
  1. Обновление целевого уровня API
  2. +
  3. Важные функциональные изменения +
      +
    1. Если вы не тестировали свое приложение в новой среде выполнения Android (ART)...
    2. +
    3. Если в приложение нужно добавить уведомления...
    4. +
    5. Если в приложении используется RemoteControlClient...
    6. +
    7. Если в приложении используется метод getRecentTasks()...
    8. +
    9. Если вы используете инструмент разработчика Android Native Development Kit (NDK)...
    10. +
    11. Если ваше приложение связано с определенным сервисом...
    12. +
    13. Если в приложении используется сервис WebView...
    14. +
    +
  4. +
  5. Пользовательский интерфейс +
      +
    1. Material Design
    2. +
    3. Одновременный просмотр документов и процессов на экране
    4. +
    5. Обновления WebView
    6. +
    7. Сохранение и отправка данных с экрана
    8. +
    +
  6. +
  7. Уведомления +
      +
    1. Уведомления на экране блокировки
    2. +
    3. Метаданные уведомлений
    4. +
    +
  8. +
  9. Графика +
      +
    1. Поддержка OpenGL ES 3.1
    2. +
    3. Набор расширений для Android
    4. +
    +
  10. +
  11. Мультимедиа +
      +
    1. API для расширенных возможностей камеры
    2. +
    3. Воспроизведение аудио
    4. +
    5. Управление воспроизведением мультимедиа
    6. +
    7. Поиск и просмотр мультимедиа
    8. +
    +
  12. +
  13. Хранение данных +
      +
    1. Выбор каталогов
    2. +
    +
  14. +
  15. Беспроводные сети и подключения +
      +
    1. Подключения к нескольким сетям
    2. +
    3. Передача данных по Bluetooth
    4. +
    5. Новые возможности NFC
    6. +
    +
  16. +
  17. Project Volta +
      +
    1. Планирование заданий
    2. +
    3. Инструменты для разработчиков (использование батареи) +
    +
  18. +
  19. Android для работы и учебы +
      +
    1. Контролируемые профили
    2. +
    3. Владелец устройства
    4. +
    5. Блокировка в приложении
    6. +
    +
  20. +
  21. Система +
      +
    1. Статистика по использованию приложений
    2. +
    +
  22. +
  23. Инфраструктура печати +
      +
    1. Обработка PDF как растрового изображения
    2. +
    +
  24. +
  25. Тестирование и доступность +
      +
    1. Новые возможности тестирования и оценки доступности
    2. +
    +
  26. +
  27. Редактор способов ввода (IME) +
      +
    1. Упрощенное переключение между языками ввода
    2. +
    +
  28. +
  29. Объявление манифеста +
      +
    1. Объявляемые обязательные функции
    2. +
    3. Разрешения для пользователей
    4. +
    +
  30. +
+ +

API Differences

+
    +
  1. API level 20 to 21 »
  2. +
  3. L Developer Preview to 21 »
  4. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
  4. +
+ +
+
+ +

Уровень API: {@sdkPlatformApiLevel}

+ +

В Android 5.0 (Lollipop) реализованы новые функции как для пользователей, так и для разработчиков приложений. Из этой статьи вы узнаете о самых важных особенностях новых API.

+ +

Чтобы получить общее представление о новых функциях платформы, прочитайте краткий обзор Android Lollipop.

+ + +

Приступая к разработке

+ +

Чтобы создавать приложения для Android 5.0, вам потребуется Android SDK. Воспользуйтесь Менеджером SDK, чтобы загрузить платформу SDK для Android 5.0 и образы системы.

+ + +

Обновление целевого уровня API

+ +

Чтобы оптимизировать приложение для устройств под управлением Android {@sdkPlatformVersion}, настройте {@code targetSdkVersion} на уровень "{@sdkPlatformApiLevel}", установите приложение на образ системы Android {@sdkPlatformVersion}, проверьте его, а затем опубликуйте обновленную версию.

+ +

Вы можете воспользоваться API Android {@sdkPlatformVersion} и для работы со старыми версиями. Для этого добавьте соответствующие данные в код, проверяющий уровень API перед выполнением функций, которые могут не поддерживаться {@code minSdkVersion}. Подробнее о том, как обеспечить совместимость с предыдущими версиями, читайте здесь.

+ +

Сведения об уровнях API представлены в этой статье.

+ +

Важные функциональные изменения

+ +

Если вы уже публиковали приложения для Android, учтите, что изменения в версии 5.0 могут повлиять на их работу.

+ +

Если вы не тестировали свое приложение в новой среде выполнения Android (ART)...

+ +

В версии 4.4 была представлена новая экспериментальная среда выполнения Android (ART). Ее можно было выбирать при необходимости, а по умолчанию использовалось решение Dalvik. Для Android 5.0 ART – среда выполнения по умолчанию.

+ +

Подробнее о новых функциях ART читайте здесь. Вот некоторые из них:

+ + + +

Большинство приложений для Android не потребуют никаких изменений при переходе на ART. Однако некоторые функции, действовавшие в Dalvik, поддерживаться не будут. Подробнее об этом читайте в разделе, который посвящен проверке работы приложения в среде выполнения ART. Будьте особо внимательны в следующих случаях:

+ + + +

Если в приложение нужно добавить уведомления...

+ +

При создании уведомлений учитывайте нововведения в Android 5.0. Подробнее об оповещениях для Android 5.0 и выше читайте в соответствующем руководстве. +

+ +

Концепция Material Design

+

Уведомления выводятся с темным текстом на белом (или очень светлом) фоне. Это хорошо смотрится при использовании новых виджетов с текстурой. Убедитесь, что все ваши уведомления правильно выглядят в новой цветовой схеме. Если они отображаются некорректно, исправьте их:

+ + + +

Звук и вибрация

+

Если в настоящее время вы добавляете звуки и вибрацию в уведомления с помощью классов {@link android.media.Ringtone}, {@link android.media.MediaPlayer} или {@link android.os.Vibrator}, удалите этот код. Тогда система будет правильно обрабатывать уведомления с учетом приоритета. Чтобы добавить звуки и вибрацию, используйте методы {@link android.app.Notification.Builder}.

+ +

Чтобы войти в новый режим приоритета, выберите на устройстве настройку {@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} режим приоритета отключается.

+ +

Раньше в системе 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} будут поддерживаться как для телефонов, так и для планшетов.

+ +

Элементы на экране блокировки

+

По умолчанию в Android 5.0 уведомления показываются на экране блокировки. Однако пользователи могут включить функцию защиты личных данных. В таком случае система будет автоматически редактировать текст уведомлений. Чтобы настроить показ уведомлений, содержащих личные данные, используйте элемент {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+

Если уведомление не содержит личных данных или вы хотите разрешить воспроизведение мультимедиа в нем, вызовите метод {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} и задайте видимость уведомления как {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}. +

+ +

Воспроизведение мультимедиа

+

Если в ваших уведомлениях присутствуют сведения о воспроизведении мультимедиа или передаче данных, рекомендуем использовать новый шаблон {@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} на экране блокировки. Подробнее читайте в разделе Если ваше приложение использует RemoteControlClient.

+ +

Всплывающие уведомления

+

Теперь уведомления могут отображаться в небольшом всплывающем окне, если устройство активно (то есть разблокировано, а экран включен). Они почти аналогичны компактным. Разница только в том, что во всплывающих окнах есть кнопки для выполнения действий. Пользователь может выполнить действие или закрыть уведомление, не покидая приложения.

+ +

Всплывающие уведомления появляются в следующих ситуациях:

+ + + +

Если при таких условиях в вашем приложении будут появляться всплывающие уведомления, убедитесь, что они отображаются корректно.

+ +

Если в приложении используется RemoteControlClient...

+

Класс {@link android.media.RemoteControlClient} теперь не поддерживается. Как можно скорее перейдите на API {@link android.media.session.MediaSession}.

+ +

На экране блокировки в Android 5.0 не отображаются кнопки управления передачей данных для {@link android.media.session.MediaSession} или {@link android.media.RemoteControlClient}. Вместо этого система показывает кнопки управления воспроизведением мультимедиа. Теперь вам проще выбрать их варианты, которые будут удобны как на заблокированном, так и разблокированном устройстве.

+ +

В 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()}.

+ +

Убедитесь, что выбран вариант отображения {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC} и уведомление будет появляться на экране блокировки, даже если включен режим безопасности. Подробнее об уведомлениях на экране блокировки читайте здесь.

+ +

Если ваше приложение работает на платформе Android TV или Wear, внедрите класс {@link android.media.session.MediaSession}. Он поддерживает показ кнопок для управления воспроизведением. Если приложение должно получать информацию о действиях с кнопками на устройствах Android, необходимо также внедрить {@link android.media.session.MediaSession}.

+ +

Если в приложении используется метод getRecentTasks()...

+ +

В Android 5.0 появилась новая функция одновременной работы с документами и процессами (см. ниже). Метод {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} больше не поддерживается. Чтобы обеспечить совместимость со старыми версиями, этот метод по-прежнему возвращает небольшое количество данных. Например, он вызывает собственные задачи приложения и некоторые другие задачи (например, переход на главную страницу). Если в вашем приложении применяется этот метод, замените его на {@link android.app.ActivityManager#getAppTasks() getAppTasks()}.

+ +

Если вы используете Android Native Development Kit (NDK)...

+ +

Android 5.0 теперь поддерживает как 32- так и 64-разрядные системы. Поддержка 64-разрядных систем увеличивает производительность и расширяет пространство адресов. Также при этом повышается скорость работы OpenSSL для криптографии. Кроме того, в новом выпуске используются API NDK для мультимедиа, а также поддерживается OpenGL ES (GLES) 3.1.

+ +

Чтобы воспользоваться поддержкой 64-разрядных систем в Android 5.0, скачайте и установите NDK версии 10c со страницы Android NDK. Подробнее о важных изменениях и исправленных ошибках в NDK читайте в примечаниях к выпуску 10с.

+ +

Если ваше приложение связано с определенным сервисом...

+ +

Метод {@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} теперь требует явного использования {@link android.content.Intent}, а при неявном выполняется исключение. Чтобы обеспечить безопасность приложения, используйте явную цель при запуске или связывании {@link android.app.Service}. Не применяйте фильтры цели для сервиса.

+ +

Если в приложении используется сервис WebView...

+ +

Android 5.0 изменяет функционирование вашего приложения по умолчанию.

+ + +

Пользовательский интерфейс

+ +

Material Design

+ +

В будущей версии Android поддерживается новая концепция Material Design. Вы сможете создавать приложения с обновленным динамичным дизайном и органично меняющимися элементами интерфейса. Поддерживаются следующие функции:

+ + + +

Подробнее о том, как добавить элементы этого дизайна в свое приложение, читайте в разделе Material Design.

+ +

Одновременный просмотр документов и процессов на экране

+ +

В предыдущих выпусках на экране недавно использованных функций могла отображаться только одна задача для каждого приложения. Теперь там могут быть представлены и несколько задач, если вы одновременно работали с несколькими документами. Эта функция обеспечивает многозадачность, позволяя быстро переключаться между отдельными действиями и документами в списке недавно использованных. Одновременно выполняемыми задачами могут быть вкладки, открытые в веб-браузере, документы, одновременные состязания в игре или чаты в социальном приложении. Приложение может управлять задачами с помощью класса {@link android.app.ActivityManager.AppTask}.

+ +

Чтобы вставить логический перерыв, после которого система будет воспринимать действие как новое, используйте {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} при запуске действия с помощью {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}. Также можно выбрать для атрибута элемента <activity> {@code documentLaunchMode} значение {@code "intoExisting"} или {@code "always"} непосредственно в манифесте.

+ +

Чтобы ограничить количество данных на экране, можно задать максимальное число задач из приложения, которые будут там показываться. Для этого укажите для атрибута <application> значение {@link android.R.attr#maxRecents android:maxRecents}. В настоящее время можно указать до 50 задач на пользователя (25 для устройств с небольшим объемом ОЗУ).

+ +

Вы можете настроить сохранение задач на экране недавно использованных даже после перезагрузки. Для управления временем отображения применяется атрибут android:persistableMode. Вы также можете изменить визуальное отображение действия, то есть его цвет, ярлык и значок. Для этого следует вызвать метод {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()}.

+ +

Обновления WebView

+

В Android 5.0 обновлен процесс внедрения {@link android.webkit.WebView} для Chromium M37. Он стал более стабильным и безопасным, ошибки были устранены. Строка агента пользователя, которая по умолчанию использовалась для {@link android.webkit.WebView}, в Android 5.0 содержит номер версии (37.0.0.0).

+ +

В этом выпуске представлен класс {@link android.webkit.PermissionRequest}, с помощью которого приложение обеспечивает {@link android.webkit.WebView} доступ к защищенным ресурсам, таким как камера и микрофон. Это делается с помощью инструментов API, например getUserMedia(). У вашего приложения должны быть все разрешения от Android на доступ к этим ресурсам. Тогда оно сможет передать их элементу {@link android.webkit.WebView}.

+ +

Новый метод onShowFileChooser() позволяет добавить в {@link android.webkit.WebView} поле для ввода, чтобы можно было выбирать файлы (изображения и т. п.) на устройстве Android.

+ +

Также в этом выпуске поддерживаются открытые стандарты WebAudio, WebGL и WebRTC. Подробнее о новых функциях в этом выпуске читайте в разделе WebView для Android.

+ +

Сохранение и отправка данных с экрана

+

Android 5.0 поддерживает функцию сохранения данных с экрана и отправки их другим пользователям. Добавить ее в свое приложение можно с помощью нового API {@link android.media.projection}. Эта функция может быть очень полезной, например в приложениях для видеоконференций.

+ +

Новый метод {@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.content.Intent} и метода {@link android.media.projection.MediaProjectionManager#createScreenCaptureIntent()}.

+ +

Посмотреть, как используется новый API, можно в примере проекта (см. класс {@code MediaProjectionDemo}).

+ +

Уведомления

+ +

Уведомления на экране блокировки

+

На экране блокировки в Android 5.0 могут появляться уведомления. Чтобы при этом в них не отображались персональные данные, достаточно выбрать соответствующую опцию в Настройках.

+ +

Если показ таких сведений запрещен, приложение автоматически выявляет их и скрывает из уведомления. Для настройки уведомлений вызовите {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} и укажите одно из следующих значений:

+ + + +

Если выбрано значение {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE}, вы также можете предоставить отредактированную версию уведомления, не содержащую личных данных. Например, приложение для отправки SMS может показывать уведомление с текстом "У вас 3 новых сообщения", но скрывать содержание и отправителей. Чтобы добавить альтернативное уведомление, сначала создайте замену с помощью {@link android.app.Notification.Builder}. При создании объекта уведомления с личными данными добавьте его замену, используя метод {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}.

+ +

Метаданные уведомлений

+

Android 5.0 использует метаданные, связанные с уведомлениями в приложениях, чтобы сортировать их. Для настройки метаданных вызовите следующие методы в {@link android.app.Notification.Builder} при создании уведомления:

+ + + +

Графика

+ +

Поддержка OpenGL ES версии 3.1

+

Android 5.0 поддерживает интерфейсы Java и OpenGL ES 3.1. Примеры новых функций OpenGL ES 3.1:

+ + + +

Интерфейс Java для OpenGL ES 3.1 на Android обеспечивается посредством элемента {@link android.opengl.GLES31}. При использовании OpenGL ES 3.1 убедитесь, что этот элемент объявлен в файле манифеста с помощью тега {@code } и атрибута {@code android:glEsVersion}. Пример:

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

Подробнее об использовании OpenGL ES (в том числе об определении поддерживаемой версии), читайте в соответствующем руководстве по API.

+ +

Набор расширений для Android

+ +

Помимо OpenGL ES 3.1 в этом выпуске представлен набор расширений с интерфейсами Java и поддержкой продвинутых графических функций. Android воспринимает эти расширения как единый набор. (При наличии расширения {@code ANDROID_extension_pack_es31a} ваше приложение может зарегистрировать все расширения в наборе и включить шейдеры с помощью одного оператора {@code #extension}.)

+ +

Набор расширений поддерживает следующие функции:

+ + + +

Интерфейс Java для набора разрешений поддерживается с помощью {@link android.opengl.GLES31Ext}. В манифесте приложения вы можете объявить, что возможна установка только на устройства с поддержкой набора разрешений. Пример:

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

Мультимедиа

+ +

API для расширенных возможностей камеры

+ +

Android 5.0 поддерживает новый API android.hardware.camera2 для создания качественных фотографий и их последующей обработки. Теперь вы можете получать доступ к камерам в системе с помощью {@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} можно настроить на однократные или многократные снимки.

+ +

Чтобы получать уведомления при создании новых снимков, внедрите обработчик событий {@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}.

+ +

С помощью класса {@link android.hardware.camera2.CameraCharacteristics} приложение может определять, какие свойства камеры доступны на устройстве. Свойства объекта {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} позволяют получать данные о функциональности камеры.

+ + + +

Подробнее об использовании обновленного API камеры см. в примерах {@code Camera2Basic} и {@code Camera2Video} в этом выпуске.

+ +

Воспроизведение аудио

+

В этом выпуске представлены следующие изменения {@link android.media.AudioTrack}:

+ + +

Управление воспроизведением мультимедиа

+

Используйте новые API для мультимедиа и уведомлений, чтобы в интерфейсе системы регистрировалось воспроизведение файлов, а также отображались обложки альбомов. Новые классы {@link android.media.session.MediaSession} и {@link android.media.session.MediaController} упрощают управление воспроизведением в интерфейсе и сервисах.

+ +

Класс {@link android.media.session.MediaSession} теперь используется вместо {@link android.media.RemoteControlClient}. В нем представлен один набор методов обратного вызова для управления передачей и воспроизведением. Если ваше приложение поддерживает воспроизведение мультимедиа и работает на платформе Android TV или Wear, используйте класс {@link android.media.session.MediaSession} для управления передачей данных с помощью тех же методов обратного вызова.

+ +

Новый класс {@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} для отслеживания изменений метаданных и статусов во время сеанса.

+ +

Кроме того, вы можете создавать уведомления с функцией управления воспроизведением. Связь с сессией обеспечивается посредством нового класса {@link android.app.Notification.MediaStyle}.

+ +

Поиск и просмотр мультимедиа

+

В Android 5.0 приложения могут искать контент в библиотеке другого приложения с помощью нового API android.media.browse. Чтобы открыть доступ к медиаконтенту в своем приложении, расширьте класс {@link android.service.media.MediaBrowserService}. При внедрении {@link android.service.media.MediaBrowserService} должен быть обеспечен доступ к {@link android.media.session.MediaSession.Token}, чтобы в приложении мог воспроизводиться медиаконтент, полученный через ваш сервис.

+

Используйте класс {@link android.media.browse.MediaBrowser} для взаимодействия с сервисом браузера для мультимедиа. При создании экземпляра {@link android.media.browse.MediaBrowser} укажите название компонента для {@link android.media.session.MediaSession}. С помощью этого экземпляра браузера ваше приложение сможет подключиться к указанному сервису и получить объект {@link android.media.session.MediaSession.Token} для воспроизведения контента.

+ +

Хранение данных

+ +

Выбор каталогов

+ +

В Android 5.0 расширена инфраструктура обращения к памяти, что позволяет пользователям выбирать целое поддерево каталога. Приложения получают доступ к чтению/записи во всех документах. Пользователю не приходится каждый раз подтверждать это.

+ +

Чтобы выбрать поддерево каталога, создайте и отправьте цель {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE}. Система отображает все экземпляры {@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()}.

+ +

Новый метод {@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} и убедитесь, что провайдер поддерживает нужные вызовы.

+ +

Если вы используете {@link android.provider.DocumentsProvider} и хотите, чтобы можно было выбрать поддерево, внедрите {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()} и добавьте {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD} в {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS}.

+ +

В 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}.

+ +

Беспроводные сети и подключения

+ +

Подключения к нескольким сетям

+

Android 5.0 поддерживает ряд API для работы в нескольких сетях одновременно. Приложение может постоянно искать доступные сети с определенными свойствами, а также подключаться к ним. Эта функция полезна, если ваше приложение работает в специальных сетях, таких как SUPL, MMS или сети с биллингом оператора связи, а также если для отправки данных используется определенный протокол.

+ +

Чтобы приложение регулярно выполняло поиск доступных сетей и подключалось к ним, выполните следующие действия:

+ +
    +
  1. Создайте {@link android.net.ConnectivityManager}.
  2. +
  3. Используйте класс {@link android.net.NetworkRequest.Builder} для создания объекта {@link android.net.NetworkRequest}, укажите свойства сети и тип перехода, необходимый для приложения.
  4. +
  5. Чтобы выполнить поиск подходящих сетей, вызовите {@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()}.
  6. +
+ +

При обнаружении подходящей сети система подключается к ней и отправляет ответ {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Для получения дополнительных сведений о сети можно использовать объект {@link android.net.Network} в ответе. Он же применяется для перенаправления трафика в выбранную сеть.

+ +

Низкоэнергетический Bluetooth

+

В Android версии 4.3 была представлена поддержка низкоэнергетического Bluetooth (Bluetooth LE) как основного способа передачи данных. Устройство на Android 5.0 может быть периферийным с поддержкой Bluetooth низкой мощности. Эта функция позволяет приложениям связываться с устройствами, расположенными неподалеку. Например, ваше приложение может работать как шагомер или отслеживать иные показатели, передавая данные на другое близко расположенное устройство по сети Bluetooth.

+

Новый API {@link android.bluetooth.le} позволяет приложениям передавать рекламу, получать отчеты и устанавливать связь с другими устройствами, поддерживающими Bluetooth LE. Чтобы воспользоваться новыми функциями, добавьте в манифест разрешение {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN}. Скачивая приложение или обновления для него в Google Play, пользователи должны дать разрешение на сбор данных о Bluetooth, управление этой функцией, а также на обмен информацией с устройствами по соседству.

+ +

Чтобы начать передачу рекламы по Bluetooth LE на другие устройства, вызовите {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} и передайте данные о внедрении класса {@link android.bluetooth.le.AdvertiseCallback}. Объект обратного вызова получает отчет об успешном или неуспешном показе рекламы.

+ +

С помощью класса {@link android.bluetooth.le.ScanFilter}, который появился в Android 5.0, ваше приложение сможет искать только определенные типы устройств. Чтобы начать поиск устройств с поддержкой Bluetooth LE, вызовите {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} и передайте список фильтров. При вызове метода также следует внедрить {@link android.bluetooth.le.ScanCallback}, чтобы получать уведомления о найденной рекламе.

+ +

Новые возможности NFC

+

В Android 5.0 реализованы следующие улучшения NFC:

+ + + +

Project Volta

+ +

Помимо новых функций Android 5.0 также отличается улучшенными возможностями для экономии заряда аккумулятора. С помощью новых API и инструментов можно оптимизировать расход энергии для приложения.

+ +

Планирование заданий

+

В Android 5.0 есть API {@link android.app.job.JobScheduler}. Эта новинка позволяет оптимизировать расход энергии за счет асинхронного распределения заданий, которые выполняются не сразу или только в определенных условиях (например, при зарядке устройства). Планирование заданий полезно в следующих случаях:

+ + +

Каждая элементарная операция заключена в объект {@link android.app.job.JobInfo}, который определяет критерии для расписания.

+ +

Чтобы настроить процесс выполнения задачи, используйте класс {@link android.app.job.JobInfo.Builder}. Вы можете указать определенные условия, например:

+ + + +

Например, для выполнения задачи в неограниченной сети можно добавить следующий код:

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

Если питание устройства стабильно (то есть оно подключено к сети более 2 минут, а аккумулятор достаточно заряжен), система будет выполнять все запланированные задания, даже если указанное время еще не наступило.

+ +

Пример использования API {@link android.app.job.JobScheduler} см. в образце {@code JobSchedulerSample} данного выпуска.

+ +

Инструменты для разработчиков (использование батареи)

+ +

Новая команда {@code dumpsys batterystats} позволяет получить интересные статистические данные об использовании аккумуляторов в устройствах (с учетом уникальных идентификаторов пользователей – UID). Статистика включает в себя следующие данные:

+ + + +

Чтобы узнать о разных функциях для вывода конкретных данных, используйте опцию {@code --help}. Например, чтобы получить статистику по энергозатратам для определенного приложения с момента последней зарядки устройства, выполните эту команду: +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

Вы можете воспользоваться инструментом Battery Historian при выводе команды {@code dumpsys}, чтобы создать HTML-визуализацию событий, связанных с расходом энергии и сохраненных в журналах. Это позволит вам обнаружить проблемы, приводящие к низкой энергоэффективности приложения.

+ +

Android для работы и учебы

+

Контролируемые профили

+ +

В Android 5.0 представлены новые функции для использования приложений в корпоративной среде. Администратор устройства может создать отдельный контролируемый профиль для пользователя, у которого есть личный аккаунт. Приложения, связанные с такими профилями, отображаются наряду с прочими в списках недавно использованных, в уведомлениях и на экране запуска.

+ +

Чтобы запустить процесс настройки контролируемых профилей, отправьте {@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE ACTION_PROVISION_MANAGED_PROFILE} в {@link android.content.Intent}. При успешном вызове система вернет ответ {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete(android.content.Context, android.content.Intent) onProfileProvisioningComplete()}. Затем вы сможете вызвать {@link android.app.admin.DevicePolicyManager#setProfileEnabled(android.content.ComponentName) setProfileEnabled()} и включить нужный профиль.

+ +

По умолчанию в контролируемых профилях используется лишь небольшое число приложений. Чтобы установить дополнительные приложения, вызовите {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()}.

+ +

В модулях запуска можно использовать новый класс {@link android.content.pm.LauncherApps}, чтобы получить список возможных действий для текущего пользователя и для всех связанных с ним контролируемых профилей. Контролируемые приложения могут быть отмечены дополнительным значком. Чтобы добавить значок, вызовите {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}.

+ +

Подробнее об использовании новых функций см. в примере внедрения {@code BasicManagedProfile} в данном выпуске.

+ +

Владелец устройства

+

В Android 5.0 можно использовать приложение, которое назначает владельца устройства. Владелец устройства – это администратор устройства, который может создавать и удалять вторичных пользователей, а также менять глобальные настройки. Он использует методы из класса {@link android.app.admin.DevicePolicyManager} для точного управления конфигурацией, безопасностью и приложениями на доступных устройствах. У устройства может быть только один действующий владелец в определенный момент времени.

+ +

Чтобы использовать эту функцию, необходимо с помощью NFC перенести данные из программируемого приложения на устройство, которое ещё не сконфигурировано. При этом передаются те же данные, что и в процессе, который описан в разделе Контролируемые профили.

+ +

Блокировка в приложении

+ +

В Android 5.0 используется новый API для блокировки в приложении. С его помощью можно временно запретить пользователям отменять задачи или получать уведомления. Это может быть полезно, например, если вы разрабатываете образовательные приложения, требующие высокой степени контроля, а также однозадачные или киоск-приложения. При такой блокировке пользователи не смогут просматривать уведомления, открывать другие приложения или переходить на главный экран, пока этот режим не будет отключен.

+ +

Режим блокировки в приложении можно активировать двумя способами:

+ + + +

Если блокировка задач активна, происходит следующее:

+ + + +

Инфраструктура печати

+ +

Обработка PDF как растрового изображения

+

Теперь PDF-документы можно превращать в растровые изображения для печати. Для этого создан новый класс {@link android.graphics.pdf.PdfRenderer}. Необходимо указать атрибут {@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} в растровый формат. Вы также можете настроить дополнительные параметры, если в графический файл необходимо превратить только часть документа (например, для мозаичной обработки и увеличения фрагментов).

+ +

Подробнее об использовании нового API см. в примере {@code PdfRendererBasic}.

+ +

Система

+

Статистика по использованию приложений

+

Новый API {@link android.app.usage} позволяет просматривать историю использования приложений на устройствах Android. При этом вы получаете более подробные данные, чем в случае с устаревшим методом {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()}. Чтобы использовать новый API, необходимо добавить разрешение {@code "android.permission.PACKAGE_USAGE_STATS"} в манифест. Пользователь также должен разрешить доступ к этому приложению в разделе Настройки > Безопасность > Приложения.

+ +

Система собирает данные об использовании отдельных приложений за день, неделю, месяц и год. Максимальные сроки хранения данных в системе:

+ + + +

Для каждого приложения в системе сохраняются следующие данные:

+ + +

Тестирование и доступность

+ +

Новые возможности тестирования и оценки доступности

+

В Android 5.0 реализованы следующие функции для тестирования и оценки доступности:

+ + + +

Редактор способов ввода (IME)

+ +

Упрощенное переключение между языками ввода

+ +

В Android 5.0 пользователям будет проще переключаться между редакторами способов ввода, которые поддерживаются платформой. С помощью одного действия (обычно это нажатие на значок глобуса на электронной клавиатуре) можно будет переключаться между всеми доступными языками. Это обеспечивается посредством метода {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()}.

+ +

Кроме того, теперь инфраструктура проверяет, есть ли в следующем редакторе механизм переключения (то есть поддерживается ли такая функция). Для замены всегда выбирается редактор способов ввода с механизмом переключения. Это обеспечивается посредством метода {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()}. + +

Пример использования обновленного API для переключения способов ввода см. в образце внедрения клавиатуры в данном выпуске. Подробнее о том, как обеспечить переключение между способами, читайте в разделе Создание способов ввода. +

+ +

Объявление манифеста

+ +

Объявляемые обязательные функции

+

В элементе {@code } теперь могут содержаться приведенные ниже значения, а ваше приложение будет устанавливаться только на устройства, обладающие нужными функциями.

+ + + +

Разрешения для пользователей

+ +

В элементе {@code } теперь поддерживается приведенное ниже разрешение, с помощью которого вы сможете обеспечить доступ приложения к определенным API.

+ + diff --git a/docs/html-intl/intl/ru/about/versions/lollipop.jd b/docs/html-intl/intl/ru/about/versions/lollipop.jd new file mode 100644 index 0000000..2f814be --- /dev/null +++ b/docs/html-intl/intl/ru/about/versions/lollipop.jd @@ -0,0 +1,251 @@ +page.title=Android Lollipop + +@jd:body + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +

Представляем вам Android 5.0 Lollipop – самую новую и продвинутую версию операционной системы Android!

+ +

В этой версии реализовано множество новых функций для пользователей и тысячи API для разработчиков. Android теперь используется не только для телефонов, планшетов и носимых устройств, но также для телевизоров и автомобилей.

+ +

Подробнее о новых API для разработчиков см. в соответствующем обзоре. Если же вас интересует информация об Android 5.0 для пользователей, посетите сайт www.android.com.

+ +

Material Design

+ +

В Android 5.0 реализована концепция Material Design. Расширенный набор инструментов в интерфейсе позволяет c легкостью использовать новые возможности в приложениях.

+ + + +

Новый 3D-режим позволяет добавить глубину (ось z), чтобы приподнять объекты над плоскостью и создать реалистичные тени даже при движении.

+ + +

Встроенные переходы действий обеспечивают непрерывное движение, как в анимации. Тема Material добавляет в действия переходы, в том числе возможность использовать общие визуальные элементы в разных действиях.

+ + + +
+
+ +
+
+ Чтобы повторить воспроизведение видео, нажмите на экран устройства +
+
+ + +

Для кнопок, флажков и других элементов управления в приложении можно создать пульсирующую анимацию. + +

Вы также можете определять векторные области рисования в XML и по-разному их анимировать. Векторные области масштабируются без потери разрешения, поэтому они идеально подходят для одноцветных значков в приложениях.

+ +

Новый системный поток обработки RenderThread обеспечивает плавность анимации даже при задержках в основном потоке интерфейса.

+ + +

Оптимизация и эффективность

+ +

Android 5.0 отличается более быстрыми и эффективными вычислениями с плавным интерфейсом.

+ +

Android теперь работает исключительно на базе новой среды выполнения ART, созданной специально для поддержки предварительной компиляции (AOT), динамической компиляции (JIT) и интерпретируемого кода. Эта среда поддерживается архитектурами ARM, x86 и MIPS. Кроме того, она полностью совместима с 64-разрядными системами.

+ +

ART улучшает эффективность приложений и повышает скорость их работы. Оптимизированная очистка памяти сокращает количество и продолжительность пауз между событиями, так что приложение не пропускает кадры. Кроме того, ART динамически корректирует использование памяти, чтобы основные процессы протекали более эффективно.

+ +

Android 5.0 поддерживает 64-разрядные архитектуры, которые используются в NVIDIA Tegra K1 для Nexus 9. Оптимизация расширяет пространство адресов и повышает эффективность определенных вычислений. Приложения, написанные на языке Java, автоматически действуют как 64-разрядные. Никаких модификаций не требуется. Если в приложении используется собственный код, NDK будет поддерживать новые ABI для ARM v8, x86-64 и MIPS-64.

+ +

В Android 5.0 также улучшена синхронизация аудио и видео. Каналы аудио и видео передают более точные временные метки. Благодаря этому улучшается качество работы игровых и видеоприложений.

+ + +

Уведомления

+ +

Уведомления в Android 5.0 стали более заметными и интерактивными, с возможностью настройки.

+ + + +

При желании пользователя на экране блокировки могут отображаться только определенные данные из уведомлений. Также можно и отключить их насовсем, чтобы обеспечить безопасность личных данных.

+ +

Важные сообщения (например, о входящих звонках) отображаются во всплывающих уведомлениях. Это небольшие окна, где пользователь может выполнять действия, не выходя из открытого приложения.

+ +

Теперь в уведомления можно добавить новые метаданные, чтобы собирать информацию о контактах (для рейтинга), категориях и приоритете.

+ +

В новом шаблоне уведомления используются единые средства управления мультимедиа: до 6 кнопок действий, в том числе пользовательские (например, "палец вверх"). Теперь можно обойтись без RemoteViews!

+ + + +

Ваши приложения на большом экране

+ +

Android TV – это полнофункциональная телеплатформа для использования приложений на больших экранах. Она позволяет с легкостью находить контент благодаря персональным рекомендациям и голосовому поиску, а затем просматривать его на телеэкране.

+ +

С Android TV вы можете создавать впечатляющие материалы для игры или приложения. Также эта платформа поддерживает подключение к игровым контроллерам и другим устройствам ввода. Воспользуйтесь эффективной инфраструктурой в библиотеке поддержки версии 17, чтобы создать интерфейс для телеэкранов с диагональю до 3 метров.

+ +

Инфраструктура Android TV Input Framework (TIF) обеспечивает поддержку видеопотоков из таких источников, как HDMI, ТВ-тюнеры и приемники IP-телевидения. Также поддерживается поиск непосредственно на экране и рекомендации по метаданным, полученным TV Input. Для управления несколькими устройствами с помощью единого пульта имеется сервис HDMI-CEC.

+ +

Инфраструктура TV Input Framework поддерживает различные устройства ввода. В ней есть единый интерфейс для поиска и просмотра интересного контента. Используйте эти возможности, чтобы ваш контент стал более доступным для просмотра на телеэкране.

+ + + + + +

Приложения для работы с документами

+ +

В Android 5.0 изменился режим просмотра программ, который раньше назывался "Недавние приложения". Теперь выполнять несколько задач одновременно стало проще.

+ +

Новые API позволяют отображать различные действия в приложении как отдельные документы наряду с прочими недавними процессами.

+ +

Благодаря этому пользователи могут быстро переходить к вашему контенту или сервисам. Например, можно отдельно отображать файлы, матчи в игре или чаты в социальном приложении.

+ + + +

Расширенные функции подключения

+ +

В Android 5.0 добавлены новые API для поддержки одновременных операций в приложениях с использованием низкоэнергетического Bluetooth (BLE). Работает как сканирование (основной режим), так и реклама (дополнительный режим).

+ +

Новые функции для многосетевой работы позволяют приложениям узнавать о свойствах доступных сетей (Wi-Fi, сотовых, с отслеживанием трафика и т. п.). Затем приложение может запросить установку соединения и отреагировать на обрыв связи или другие изменения в сети.

+ +

API NFC позволяет приложениям динамически регистрировать соответствующий идентификатор (AID). Также можно указать предпочитаемый сервис эмуляции карт и создать запись NDEF с текстовыми данными в кодировке UTF-8.

+ + + +

Графика в высоком разрешении

+ +

Поддержка Khronos OpenGL ES 3.1 обеспечивает максимальное качество 2D и 3D-графики в играх и других приложениях.

+ +

OpenGL ES 3.1 поддерживает шейдеры, трафаретные шаблоны, усовершенствованные визуальные эффекты, высококачественное сжатие текстур ETC2/EAC и их обработку, стандартизацию размера текстур и формата буферизации при обработке, а также другие функции.

+ + +
+ +

В игре Rival Knights от Gameloft используется технология ASTC (адаптивное масштабируемое сжатие текстур) из AEP и вычислительные шейдеры из ES 3.1. Это позволяет добавлять эффекты в расширенном динамическом диапазоне (HDR) и детализировать графику.

+
+ +

В Android 5.0 также используется AEP – набор расширений OpenGL ES, который обеспечивает доступ к таким функциям как мозаичные и геометрические шейдеры, сжатие текстур ASTC, посэмпловая интерполяция, затенение и т. п. C AEP вы сможете создать высококачественную графику для разных процессоров.

+ + +

Новые возможности аудио

+ +

Новая функция аудиозахвата обеспечивает ввод звука с малой задержкой. При этом используется новый поток захвата, который блокируется только при чтении, быстрые клиенты с поддержкой собственной частоты, подсчет каналов и битовой глубины, а также нормальные клиенты с повторной выборкой, сменой статуса каналов (выше/ниже) и битовой глубины.

+ +

Многоканальное смешивание аудиопотоков позволяет профессиональным аудиоприложениям использовать до 8 каналов (в том числе 5.1 и 7.1).

+ +

Приложения могут открывать доступ к контенту и получать контент из других источников, а затем воспроизводить его. Контент передается при помощи интерфейса с поддержкой запросов. Он не обязательно должен физически располагаться на устройстве.

+ +

Для преобразования текста в речь в приложениях используются голосовые профили, связанные с конкретными локалями, качеством и временем реакции. В новых API также есть функции проверки ошибок при синтезе речи, синтез сетей, распознавание языка и поддержка резервных сетей.

+ +

Android теперь поддерживает подключение стандартных периферийных устройств через USB. Пользователи могут подключать наушники, динамики, микрофоны и т. п. Android 5.0 также поддерживает аудиокодеки Opus.

+ +

Новые API {@link android.media.session.MediaSession} упрощают управление воспроизведением мультимедиа на разных устройствах.

+ + +

Дополнительные функции камеры и видео

+ +

В Android 5.0 присутствуют совершенно новые API для камеры. Поддерживается съемка в форматах YUV и Bayer RAW, а также управление выдержкой, чувствительностью ISO и длительностью кадра (покадрово). Новый поток видео с полной синхронизацией позволяет делать снимки в формате YUV без сжатия и в полном разрешении, на скорости 30 к/с (на поддерживаемых устройствах).

+ +

Помимо изображений можно сохранять и метаданные, например модели шумов и оптическую информацию с камеры.

+ +

Приложения для передачи видео по сети теперь могут применять высокоэффективное кодирование видео (HEVC) H.265.

+ +

В Android 5.0 также добавлена поддержка туннелирования мультимедиа. Это позволяет обрабатывать контент в сверхвысоком разрешении (4K) и одновременно воспроизводить сжатые аудио- и видеоматериалы.

+ + + +
+ +

Личные и рабочие приложения отображаются в едином формате и имеют значки для быстрой идентификации.

+
+ + +

Android для работы

+ +

Новый процесс создания контролируемых профилей позволяет добавлять защищенные рабочие профили на личном устройстве. Приложения, данные в которых используются рабочим профилем и доступны ИТ-администратору, отмечены на панели запуска соответствующим значком.

+ +

Уведомления для личного и рабочего профилей отображаются в едином формате. Данные для каждого профиля хранятся отдельно, даже если одно и то же приложение используется владельцами разных профилей.

+ +

Для корпоративных устройств ИТ-администраторы могут сразу настроить приложение, определяющее владельца. С его помощью можно установить общие настройки, а затем предоставлять доступ к устройству определенным сотрудникам.

+ + + +

Сохранение и отправка данных с экрана

+ +

Android 5.0 поддерживает функцию сохранения данных с экрана и отправки их пользователям через приложения.

+ +

При наличии пользовательского разрешения приложения могут сохранять данные с экрана в формате видео и транслировать его по сети.

+ + +

Новые типы сенсоров

+ +

В Android 5.0 используется новый сенсор наклона. Это упрощает распознавание действий на устройствах, а также отслеживание сердцебиения человека, который касается устройства.

+ +

Для распознавания специальных действий, таких как жесты активации, выбора и быстрого просмотра, теперь используются новые составные сенсоры.

+ + + +

Chromium WebView

+ +
+ +
+ +

Первоначальный выпуск для Android 5.0 включает версию Chromium для {@link android.webkit.WebView}, созданную на основе Chromium M37, но с поддержкой WebRTC, WebAudio и WebGL.

+ +

Chromium M37 также обеспечивает поддержку всех спецификаций веб-компонентов: Custom Elements, Shadow DOM, HTML Imports и Templates. То есть вы можете использовать Polymer и соответствующие элементы Material Design в WebView без полизаполнения.

+ +

Хотя WebView создается на базе Chromium начиная с Android версии 4.4, в Google Play теперь можно скачать обновление для Chromium.

+ +

Доступны все новые версии. Рекомендуется выполнить обновление, чтобы получить все усовершенствования и исправления для WebView, а также самые новые API для поддержки Android 5.0 и выше.

+ + + +

Специальные возможности и способы ввода

+ +

Новые API специальных возможностей позволяют получать подробные сведения об окнах на экране, с которыми могут взаимодействовать пользователи. Также можно задать стандарты или определенные действия для элементов интерфейса.

+ +

Новые API для редакторов способов ввода обеспечивают быстрое переключение между доступными способами.

+ + + +

Инструменты для создания приложений с экономией энергии

+ +

Новые API для планирования заданий позволяют экономить энергию аккумулятора, откладывая определенные действия до времени зарядки или подключения к сети Wi-Fi.

+ +

Новая команда dumpsys batterystats создает статистику использования аккумулятора, чтобы вы могли проанализировать расход энергии и узнать, как на него влияет ваше приложение. Вы можете просмотреть историю использования аккумулятора, примерный расход энергии на каждого пользователя (по идентификатору) и компонент системы, а также другие данные.

+ + +

Инструмент Battery Historian позволяет визуализировать статистику из dumpsys batterystats, чтобы было проще устранять неполадки. Подробнее читайте на странице https://github.com/google/battery-historian.

diff --git a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd index 9c3dd5c..8e20975 100644 --- a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd +++ b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd @@ -104,10 +104,16 @@ sdk.platform.apiLevel=21 -

API 区别

+

API Differences

    -
  1. API 级别 20 对比 21 »
  2. -
  3. L Developer Preview 对比级别 21 »
  4. +
  5. API level 20 to 21 »
  6. +
  7. L Developer Preview to 21 »
  8. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
@@ -628,4 +634,4 @@ $ adb shell dumpsys batterystats --charged <package-name> \ No newline at end of file + diff --git a/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd new file mode 100644 index 0000000..6b3637b --- /dev/null +++ b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd @@ -0,0 +1,635 @@ +page.title=Android 5.0 API +excludeFromSuggestions=true +sdk.platform.version=5.0 +sdk.platform.apiLevel=21 +@jd:body + + +
+
+ +

本文內容 顯示全部

+ +
    +
  1. 更新您的 API 目標等級
  2. +
  3. 重要的行為模式異動 +
      +
    1. 如果您還未在全新的 Android Runtime (ART) 測試您的應用程式...
    2. +
    3. 如果您的應用程式實作了通知功能...
    4. +
    5. 如果您的應用程式使用了 RemoteControlClient...
    6. +
    7. 如果您的應用程式使用了 getRecentTasks()...
    8. +
    9. 如果您使用 Android Native Development Kit (NDK)...
    10. +
    11. 如果您的應用程式繫結了其他服務...
    12. +
    13. 如果您的應用程式使用了 WebView...
    14. +
    +
  4. +
  5. 使用者介面 +
      +
    1. 實感設計支援
    2. +
    3. 在最近使用項目的螢幕中同時顯示文件和活動
    4. +
    5. WebView 更新
    6. +
    7. 螢幕擷取和分享
    8. +
    +
  6. +
  7. 通知 +
      +
    1. 鎖定螢幕通知
    2. +
    3. 通知中繼資料
    4. +
    +
  8. +
  9. 顯示 +
      +
    1. 支援 OpenGL ES 3.1
    2. +
    3. Android 擴充功能套件
    4. +
    +
  10. +
  11. 媒體 +
      +
    1. 提供進階相機功能的 Camera API
    2. +
    3. 音訊播放
    4. +
    5. 媒體播放控制項
    6. +
    7. 媒體瀏覽
    8. +
    +
  12. +
  13. 儲存空間 +
      +
    1. 目錄選擇
    2. +
    +
  14. +
  15. 無線網路和連線功能 +
      +
    1. 可與多個網路連線
    2. +
    3. 藍牙廣播
    4. +
    5. NFC 改良
    6. +
    +
  16. +
  17. Project Volta +
      +
    1. 排定工作
    2. +
    3. 監控耗電量的開發人員工具 +
    +
  18. +
  19. Android 在工作和教育方面的應用 +
      +
    1. 管理化設定檔建置
    2. +
    3. 裝置擁有者
    4. +
    5. 螢幕固定
    6. +
    +
  20. +
  21. 系統 +
      +
    1. 應用程式使用統計資料
    2. +
    +
  22. +
  23. 列印架構 +
      +
    1. 將 PDF 轉譯為點陣圖
    2. +
    +
  24. +
  25. 測試和協助工具 +
      +
    1. 測試和協助工具改進部分
    2. +
    +
  26. +
  27. IME +
      +
    1. 切換輸入語言更輕鬆
    2. +
    +
  28. +
  29. 資訊清單宣告 +
      +
    1. 可宣告的必要功能
    2. +
    3. 使用者權限
    4. +
    +
  30. +
+ +

API Differences

+
    +
  1. API level 20 to 21 »
  2. +
  3. L Developer Preview to 21 »
  4. +
+ +

See Also

+
    +
  1. Android 5.0 Behavior Changes
  2. +
  3. Android Lollipop Highlights
  4. +
+ +
+
+ +

API 等級:{@sdkPlatformApiLevel}

+ +

Android 5.0 (LOLLIPOP) 為使用者和應用程式開發人員帶來許多全新的功能。本文將為您介紹絕對不容錯過的全新 API。

+ +

如要大致瞭解新平台的主要功能,請參閱 Android Lollipop 重點介紹

+ + +

著手開發

+ +

如要開始打造適用於 Android 5.0 的應用程式,您必須先取得 Android SDK。接著,請使用 SDK Manager 下載 Android 5.0 SDK 平台和系統映像。

+ +

更新您的 API 目標等級

+ +

如要針對搭載 Android {@sdkPlatformVersion} 的裝置進一步最佳化應用程式,請將 {@code targetSdkVersion} 設為 "{@sdkPlatformApiLevel}"、將應用程式安裝在 Android {@sdkPlatformVersion} 系統映像、詳加測試,然後再發佈更新後的應用程式。

+ +

只要在程式碼中新增條件,於執行 {@code minSdkVersion} 不支援的 API 之前檢查系統 API 等級,您就可以使用 Android {@sdkPlatformVersion} API,同時支援舊版本。如要進一步瞭解維持回溯相容性的方法,請參閱支援不同的平台版本

+ +

如要進一步瞭解 API 等級的運作方式,請參閱什麼是 API 等級?

+ +

重要的行為模式異動

+ +

如果您曾經發佈適用於 Android 的應用程式,請注意您的應用程式可能會受到 Android 5.0 功能異動的影響。

+ +

如果您還未在全新的 Android Runtime (ART) 測試您的應用程式...

+ +

4.4 版導入了全新的實驗性 Android Runtime,簡稱 ART。在 4.4 以下版本,ART 是選用項目,預設執行環境還是 Dalvik。在 Android 5.0 中,ART 現在已成為預設執行環境。

+ +

如需 ART 新功能的總覽,請參閱 ART 簡介。以下列出部分主要的新功能:

+ + + +

大部分的 Android 應用程式不需任何變更即可在 ART 中運作。不過,仍有部分可支援 Dalvik 的技術無法在 ART 中運作。如需進一步瞭解最重要的問題,請參閱驗證應用程式在 Android Runtime (ART) 的行為。如果應用程式符合下列情形,請特別留意:

+ + + +

如果您的應用程式實作了通知功能...

+ +

在實作通知功能時,請務必瞭解相關的 Android 5.0 異動部分會造成什麼影響。如要進一步瞭解如何設計適用於 Android 5.0 以上版本的通知功能,請參閱通知功能設計指南。 +

+ +

實感設計樣式

+

為配合新的實感設計 (Material Design) 小工具的風格,通知會以深色文字搭配白色 (或非常淺色) 的背景呈現。請確認所有的通知都符合全新的配色規範。如果通知的配色不符合上述規範,請透過下列方法修正:

+ + + +

音效和震動

+

如果您目前是使用 {@link android.media.Ringtone}、{@link android.media.MediaPlayer} 或 {@link android.os.Vibrator} 類別為通知新增音效和震動功能,請移除這個程式碼,以便系統可以「優先」模式正確呈現通知。然後,請改用 {@link android.app.Notification.Builder} 方法新增音效和震動功能。

+ +

如果將裝置設定為 {@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},裝置則會結束優先模式。

+ +

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} 控制。

+ +

鎖定螢幕可見度

+

根據 Android 5.0 預設設定,通知現在會顯示在使用者的鎖定螢幕。使用者可以選擇隱藏敏感的資訊,如此系統就會自動覆蓋通知顯示的文字。如要自訂具備覆蓋功能的通知,請使用 {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}。

+

如果通知並未包含個人資訊,或者如果您要啟用通知中的媒體播放控制項,請呼叫 {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} 方法,然後將通知可見度等級設為 {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC}。 +

+ +

媒體播放

+

如果您要實作會呈現媒體播放狀態或傳輸控制項的通知,不妨考慮使用全新的 {@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} 物件顯示在鎖定螢幕。詳情參閱如果您的應用程式使用了 RemoteControlClient一節的說明。

+ +

提醒通知

+

當裝置處於使用中狀態 (裝置鎖定但顯示螢幕),通知現在會顯示在小型浮動視窗 (也稱為提醒通知)。提醒通知看起來很像精簡版的通知,只是另外還會顯示動作按鈕。使用者不需要離開目前的應用程式即可操作或關閉提醒通知。

+ +

以下列出會觸發提醒通知的條件:

+ + + +

如果您的應用程式在上述情況實作通知,請確認提醒通知可以正確顯示。

+ +

如果您的應用程式使用了 RemoteControlClient...

+

{@link android.media.RemoteControlClient} 類別現在已淘汰。請儘快改用全新的 {@link android.media.session.MediaSession} API。

+ +

Android 5.0 的鎖定螢幕不會為您的 {@link android.media.session.MediaSession} 或 {@link android.media.RemoteControlClient} 顯示傳輸控制項。但是,您的應用程式可以透過通知在鎖定螢幕提供媒體播放控制項。您的應用程式可因此全權掌控媒體按鈕的呈現方式,無論裝置鎖定與否,使用者也可獲得一致的體驗。

+ +

為達到這個目標,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()} 方法,告知系統這個通知會控制進行中的媒體工作階段。

+ +

請務必將通知的可見度設為 {@link android.app.Notification#VISIBILITY_PUBLIC VISIBILITY_PUBLIC},表示通知內容可顯示在任何鎖定螢幕 (無論是否完成安全設定皆可)。如需詳細資訊,請參閱鎖定螢幕通知

+ +

如果您的應用程式是在 Android TVWear 平台執行,而您想要顯示媒體播放控制項,請實作 {@link android.media.session.MediaSession} 類別。如果您的應用程式需要接收 Android 裝置上的媒體按鈕事件,建議您同時實作 {@link android.media.session.MediaSession}。

+ +

如果您的應用程式使用了 getRecentTasks()...

+ +

Android 5.0 推出了「同時顯示文件和活動工作」的新功能 (請參閱下方的在最近使用項目的螢幕中同時顯示文件和活動),因此我們已淘汰 {@link android.app.ActivityManager#getRecentTasks ActivityManager.getRecentTasks()} 方法,以便提升對使用者隱私的保護強度。為提供回溯相容性,這個功能仍會傳回一小部分資料,包含發出呼叫的應用程式的工作,以及其他非敏感性的工作 (例如主畫面)。如果您的應用程式目前使用這個方法擷取所屬的工作,請改用 {@link android.app.ActivityManager#getAppTasks() getAppTasks()} 擷取這項資訊。

+ +

如果您使用 Android Native Development Kit (NDK)...

+ +

Android 5.0 支援 64 位元的系統。64 位元改良功能可增加地址空間並提升效能,同時仍可完整支援現有的 32 位元應用程式。對於 64 位元系統的支援也可改善 OpenSSL 的加密效能。此外,這個版本也導入了全新的原生媒體 NDK API 和原生 OpenGL ES (GLES) 3.1 支援。

+ +

如要使用 Android 5.0 的 64 位元支援功能,請前往 Android NDK 頁面下載並安裝 NDK Revision 10c。如要瞭解 NDK 的重要異動和錯誤修正資訊,請參閱 Revision 10c 版本資訊

+ +

如果您的應用程式繫結了其他服務...

+ +

{@link android.content.Context#bindService(android.content.Intent, android.content.ServiceConnection, int) Context.bindService()} 方法現在會要求明確指定的 {@link android.content.Intent};如果收到隱式調用請求,則會擲回例外狀況。為確保您的應用程式安全無虞,在啟動或繫結 {@link android.app.Service} 時,請使用明確指定的調用請求,同時請勿針對服務宣告調用請求篩選器。

+ +

如果您的應用程式使用了 WebView...

+ +

Android 5.0 變更了應用程式的預設行為。

+ + +

使用者介面

+ +

實感設計支援

+ +

在即將發行的版本中,我們開始支援新採用的 Android 實感設計 (Material Design) 樣式。您可以使用實感設計機制來開發您的應用程式,為使用者提供充滿動感且流暢的使用者介面元素轉換效果。這項支援包含:

+ + + +

如要進一步瞭解如何為您的應用程式加入實感設計功能,請參閱實感設計一節的介紹。

+ +

在最近使用項目的螢幕中同時顯示文件和活動

+ +

在先前的版本中,對於使用者最近互動的每一個應用程式,最近使用項目的螢幕只會顯示一個工作。現在,您的應用程式會視情況開啟更多工作,協助您掌握文件的同步執行活動。這項功能可提升多工作業效能,因為使用者可在最近使用項目的螢幕中快速切換各個活動和文件,而且在所有應用程式都可享有一致的切換體驗。舉例來說,這類同時執行的工作包含:網路瀏覽器應用程式中同時開啟的分頁、生產力應用程式中的文件、遊戲中同時執行的比賽,或是簡訊應用程式中的通訊活動。您的應用程式可以透過 {@link android.app.ActivityManager.AppTask} 類別·管理工作。

+ +

如要插入邏輯中斷點告知系統將您的活動視為新工作,當您透過 {@link android.app.Activity#startActivity(android.content.Intent) startActivity()} 啟動活動時,請使用 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}。如要獲得這項行為,您也可以在資訊清單中將 <activity> 元素的 {@code documentLaunchMode} 屬性設定為 {@code "intoExisting"} 或 {@code "always"}。

+ +

為避免最近使用項目的螢幕過於擁擠,不妨設定可在這個螢幕中顯示的應用程式工作上限。如要這麼做,請設定 <application> 屬性的 {@link android.R.attr#maxRecents android:maxRecents}。目前的上限是每位使用者最多可以顯示 50 個工作 (RAM 較低的裝置則為 25 個)。

+ +

對於最近使用項目螢幕中的工作,您可以進行設定,讓這些工作在重新開機後持續顯示。如要控制持續顯示行為,請使用 android:persistableMode 屬性。對於最近使用項目螢幕中的活動,您也可以變更視覺屬性,例如活動的顏色、標籤和圖示,只要呼叫 {@link android.app.Activity#setTaskDescription(android.app.ActivityManager.TaskDescription) setTaskDescription()} 方法即可。

+ +

WebView 更新

+

Android 5.0 已將 {@link android.webkit.WebView} 實作更新為 Chromium M37,不僅提升安全性和穩定性,同時也修正了多項錯誤。在 Android 5.0 執行的 {@link android.webkit.WebView} 預設使用者代理程式字串也已更新,目前包含 37.0.0.0 版本資訊。

+ +

這個版本導入了 {@link android.webkit.PermissionRequest} 類別,可讓您的應用程式授予 {@link android.webkit.WebView} 權限,以便透過 getUse Media() 等 Web API 存取受保護的資源 (例如相機和麥克風)。對於這些資源,您的應用程式必須具備適當的 Android 權限,才可將權限授予 {@link android.webkit.WebView}。

+ +

透過全新的 onShowFileChooser() 方法,您現在可以使用 {@link android.webkit.WebView} 中的輸入表單欄位,並啟動檔案選擇器選取 Android 裝置中的圖片和檔案。

+ +

此外,這個版本也新增了 WebAudioWebGLWebRTC 開放標準的支援功能。如要進一步瞭解這個版本中的全新功能,請參閱適用於 Android 的 WebView

+ +

螢幕擷取和分享

+

Android 5.0 可讓您透過 {@link android.media.projection} API,將螢幕擷取和分享功能新增到應用程式。舉例來說,如果您想在視訊會議應用程式中啟用螢幕分享功能,這項功能就可派上用場。

+ +

全新的 {@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},藉此啟動螢幕擷取對話方塊要求使用者的權限。

+ +

如需全新 API 的使用示例,請參閱範例專案中的 {@code MediaProjectionDemo} 類別。

+ +

通知

+ +

鎖定螢幕通知

+

Android 5.0 的鎖定螢幕可顯示通知。透過「設定」,使用者可選擇是否要允許敏感的通知內容顯示在安全的鎖定螢幕。

+ +

當通知內容顯示在安全的鎖定螢幕時,您的應用程式可控制要顯示多少內容。如要控制可見度等級,請呼叫 {@link android.app.Notification.Builder#setVisibility(int) setVisibility()} 並指定下列其中一個值:

+ + + +

當可見度等級為 {@link android.app.Notification#VISIBILITY_PRIVATE VISIBILITY_PRIVATE} 時,您也可以提供覆蓋個人資訊的通知內容。舉例來說,簡訊應用程式可能會顯示「您有 3 則新簡訊」的通知,但是隱藏簡訊內容和寄件者。如要提供這類通知,請先使用 {@link android.app.Notification.Builder} 建立替代通知。當您建立私人通知物件時,請透過 {@link android.app.Notification.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} 方法附加替代通知。

+ +

通知中繼資料

+

Android 5.0 會使用與您應用程式通知相關聯的中繼資料,精確分類各項通知。如要設定中繼資料,當您建構通知時,請在 {@link android.app.Notification.Builder} 呼叫下列方法:

+ + + +

顯示

+ +

支援 OpenGL ES 3.1

+

Android 5.0 新增了 Java 介面和 OpenGL ES 3.1 原生支援。OpenGL ES 3.1 主要的新功能包含:

+ + + +

適用於 Android 版 OpenGL ES 3.1 的 Java 介面是透過 {@link android.opengl.GLES31} 提供。使用 OpenGL ES 3.1 時,請確認您透過 {@code } 標記和 {@code android:glEsVersion} 屬性,在資訊清單檔案中宣告。例如:

+ +
+<manifest>
+    <uses-feature android:glEsVersion="0x00030001" />
+    ...
+</manifest>
+
+ +

如需使用 OpenGL ES 的詳細資訊 (包含在執行時間檢查裝置支援的 OpenGL ES 版本),請參閱 OpenGL ES API 指南

+ +

Android 擴充功能套件

+ +

除了 OpenGL ES 3.1,這個版本還提供包含 Java 介面的擴充功能套件和進階圖型功能的原生支援。Android 會將這些擴充功能視為單一套件 (如果 {@code ANDROID_extension_pack_es31a} 擴充功能存在,您的應用程式就會假設套件中的所有擴充功能都存在,並透過單一 {@code #extension} 陳述式啟用著色語言功能)。

+ +

擴充功能套件支援:

+ + + +

適用於擴充功能的 Java 介面是透過 {@link android.opengl.GLES31Ext} 提供。在您的應用程式資訊清單中,您可以宣告應用程式必須安裝在支援擴充功能的裝置。例如:

+ +
+<manifest>
+    <uses-feature android:name=“android.hardware.opengles.aep”
+        android:required="true" />
+    ...
+</manifest>
+
+ +

媒體

+ +

提供進階相機功能的 Camera API

+ +

Android 5.0 導入了全新的 android.hardware.camera2 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} 設定為拍攝單張相片或連續拍攝多張相片。

+ +

如果希望系統在拍攝新影像時通知您,請實作 {@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} 為您提供影像拍攝中繼資料。

+ +

{@link android.hardware.camera2.CameraCharacteristics} 類別可讓您的應用程式偵測裝置可用的相機功能。物件的 {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL INFO_SUPPORTED_HARDWARE_LEVEL} 屬性代表相機的功能等級。

+ + + +

如要瞭解更新版 Camera API 的使用方法,請參閱這個版本的 {@code Camera2Basic} 和 {@code Camera2Video} 實作示例。

+ +

音訊播放

+

這個版本包括下列與 {@link android.media.AudioTrack} 相關的變更:

+ + +

媒體播放控制項

+

使用全新的通知和媒體 API,即可確保系統使用者介面認得您的媒體播放作業,並可擷取即顯示專輯圖片。現在,只要使用全新的 {@link android.media.session.MediaSession} 和 {@link android.media.session.MediaController}·類別,您即可在使用者介面和服務輕鬆控制媒體播放作業。

+ +

全新的 {@link android.media.session.MediaSession} 類別取代了已淘汰的 {@link android.media.RemoteControlClient} 類別,並提供一組回呼方法處理傳輸控制項和媒體按鈕。如果您的應用程式提供媒體播放功能並可在 Android TVWear 平台執行,請使用 {@link android.media.session.MediaSession}·類別處理採用相同回呼方法的傳輸控制項。

+ +

您現在可以使用全新的 {@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} 物件,以便監聽中繼資料並在該工作階段陳述變更。

+ +

此外,您可以使用全新的 {@link android.app.Notification.MediaStyle} 類別建立功能豐富的通知,允許播放控制項與媒體工作階段連結。

+ +

媒體瀏覽

+

Android 5.0 導入了新功能,可讓應用程式透過 android.media.browse API 瀏覽其他應用程式的媒體內容庫。如要公開您應用程式的媒體內容,請擴展 {@link android.service.media.MediaBrowserService} 類別。實作 {@link android.service.media.MediaBrowserService} 後應可提供 {@link android.media.session.MediaSession.Token} 的存取權,以便應用程式播放透過您的服務提供的媒體內容。

+

如要與媒體瀏覽器服務互動,請使用 {@link android.media.browse.MediaBrowser} 類別。建立 {@link android.media.browse.MediaBrowser} 執行個體時,請指定 {@link android.media.session.MediaSession} 的元件名稱。使用該瀏覽器執行個體時,您的應用程式即可連結到相關的服務並獲得 {@link android.media.session.MediaSession.Token} 物件,以便播放該服務公開的內容。

+ +

儲存空間

+ +

目錄選擇

+ +

Android 5.0 已擴展儲存空間存取架構,現在可讓使用者選取整個目錄子樹狀結構,應用程式不需要使用者逐一確認,即可獲得讀取/寫入其中所有文件的權限。

+ +

如要選取目錄子樹狀結構,請建構並傳送 {@link android.content.Intent#ACTION_OPEN_DOCUMENT_TREE OPEN_DOCUMENT_TREE} 調用請求。系統會顯示所有支援子樹狀結構選取功能的 {@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()} 探索子樹狀結構。

+ +

全新的 {@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} 以確認提供者支援這些呼叫。

+ +

如果您正在實作 {@link android.provider.DocumentsProvider} 且想要支援子樹狀結構選取功能,請實作 {@link android.provider.DocumentsProvider#isChildDocument(java.lang.String, java.lang.String) isChildDocument()},並將 {@link android.provider.DocumentsContract.Root#FLAG_SUPPORTS_IS_CHILD FLAG_SUPPORTS_IS_CHILD} 納入您的 {@link android.provider.DocumentsContract.Root#COLUMN_FLAGS COLUMN_FLAGS}。

+ +

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} 自行掃描新內容。

+ +

無線網路和連線功能

+ +

可與多個網路連線

+

Android 5.0 提供全新的多網路連線 API,可讓您的應用程式動態掃描可用且具備特定功能的網路,進而建立連線。當您的應用程式需要具備特定功能的網路 (例如 SUPL、MMS 或電信代扣結帳網路),或是您想要使用特定類型的傳輸通訊協定傳送資料,這項功能就能派上用場。

+ +

如要從您的應用程式動態選取及連接網路,請按照下列步驟進行:

+ +
    +
  1. 建立 {@link android.net.ConnectivityManager}。
  2. +
  3. 使用 {@link android.net.NetworkRequest.Builder} 類別建立 {@link android.net.NetworkRequest} 物件,然後指定您的應用程式偏好的網路功能和傳輸類型。
  4. +
  5. 如要掃描適用的網路,請呼叫 {@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()} 方法。
  6. +
+ +

當系統偵測到適用網路時,就會自動連線並叫用 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 回呼。您可以使用回呼的 {@link android.net.Network} 物件,以取得網路的額外資訊,或是將流量導向所選的網路。

+ +

藍牙低功耗技術

+

Android 4.3 平台首度導入了藍牙低功耗技術 (Bluetooth LE) 支援功能,讓裝置以主機角色建立連線。在 Android 5.0 中,Android 裝置則可以扮演 Bluetooth LE「周邊裝置」的角色。應用程式可以透過這項功能,輕鬆讓附近的裝置偵測到。舉例來說,您可以打造應用程式,讓裝置化身為計步器或健康監測器,並將資料傳送給另一台 Bluetooth LE 裝置。

+

全新的 {@link android.bluetooth.le} API 可讓您的應用程式播送廣告、掃描回應,以及與附近的 Bluetooth LE 裝置建立連線。如要使用全新的廣告和掃描功能,請在您的資訊清單中新增 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 權限。當使用者從 Play 商店更新或下載您的應用程式時,會看到以下的權限要求提示:「藍牙連線資訊:允許應用程式控制藍牙功能,包括對附近的藍牙裝置播送資訊,或是從附近的藍牙裝置取得資訊。」

+ +

如要開始 Bluetooth LE 廣告功能,以便其他裝置發掘您的應用程式,請呼叫 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} 並傳遞 {@link android.bluetooth.le.AdvertiseCallback} 類別實作。回呼物件會收到廣告作業成功或失敗的報告。

+ +

Android 5.0 導入了 {@link android.bluetooth.le.ScanFilter} 類別,因此您的應用程式可以只掃描偏好的特定裝置類型。如要開始掃描 Bluetooth LE 裝置,請呼叫 {@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback) startScan()} 並傳遞篩選器清單。在方法呼叫中,您也必須提供 {@link android.bluetooth.le.ScanCallback} 實作,以便系統在發現 Bluetooth LE·裝置時向您回報。

+ +

NFC 改良

+

Android 5.0 新增了改良措施,讓 NFC 的用途更廣更靈活。

+ + + +

Project Volta

+ +

除了導入新功能之外,Android 5.0 也很重視如何提升電池電力方面的效能。建議您不妨使用全新的 API 和工具,瞭解應用程式的耗電量並進行最佳化。

+ +

排定工作

+

Android 5.0 提供了全新的 {@link android.app.job.JobScheduler} API,可讓您為系統定義稍後執行的非同步工作或是在特定條件下 (例如裝置充電時) 執行的工作,進而將電池電力最佳化。對於下列情況來說,工作安排功能特別實用:

+ + +

每一個工作單元都封裝在 {@link android.app.job.JobInfo} 物件中,這個物件會指定各項安排條件。

+ +

請使用 {@link android.app.job.JobInfo.Builder} 類別設定應如何執行已排定的工作。您可以排定工作在特定條件下執行,例如:

+ + + +

舉例來說,您可以新增下列程式碼,以便在非計量付費網路執行工作:

+ +
+JobInfo uploadTask = new JobInfo.Builder(mJobId,
+                                         mServiceComponent /* JobService component */)
+        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
+        .build();
+JobScheduler jobScheduler =
+        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+jobScheduler.schedule(uploadTask);
+
+ +

如果裝置具備穩定的電力 (也就是裝置已接上電源超過 2 分鐘,而且電池處於健康狀態),即使排定工作的期限還沒到,系統也會執行任何準備就緒的排定工作。

+ +

如要查看 {@link android.app.job.JobScheduler} API 的使用示例,請參閱這個版本中的 {@code JobSchedulerSample} 實作示例。

+ +

監控耗電量的開發人員工具

+ +

全新的 {@code dumpsys batterystats} 指令會產生值得您注意的裝置耗電量統計資料,並依照不重複使用者 ID (UID) 排列。統計資料包含:

+ + + +

如要瞭解對輸出結果進行自訂的各種選項,請使用 {@code --help} 選項。例如,如要列出特定應用程式套件自裝置上次充電後的耗電量統計資訊,請執行下列指令: +

+$ adb shell dumpsys batterystats --charged <package-name>
+
+ +

您可以對 {@code dumpsys} 指令的輸出使用 Battery Historian 工具,利用紀錄中與電力相關的事件產生 HTML 圖示。這項資訊可讓您更輕鬆地掌握及診斷任何與電池相關的問題。

+ +

Android 在工作和教育方面的應用

+

管理化設定檔建置

+ +

Android 5.0 提供了新功能,可讓您在企業環境內執行應用程式。如果使用者擁有現有的個人帳戶,則裝置管理員可以啟動管理化設定檔建置流程,將共存但獨立的「管理化設定檔」新增到裝置中。與管理化設定檔相關聯的應用程式將與非管理化應用程式一起出現在使用者的啟動器、最近使用項目的螢幕以及通知中。

+ +

如要啟動管理化設定檔建置流程,請在 {@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()} 以啟用這個管理化設定檔。

+ +

在預設情況下,管理化設定檔中只會啟用一部分的應用程式。只要呼叫 {@link android.app.admin.DevicePolicyManager#enableSystemApp(android.content.ComponentName, android.content.Intent) enableSystemApp()},您就可以在受管理的設定檔安裝額外的應用程式。

+ +

如果您在開發啟動器應用程式,不妨使用全新的 {@link android.content.pm.LauncherApps} 類別,取得目前使用者和任何關聯的受管理設定檔的可啟動活動清單。只要在可編輯的圖示上附加工作徽章,您的啟動器便能讓管理化應用程式變得更加顯目。如要擷取附帶徽章的圖示,請呼叫 {@link android.content.pm.PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle) getUserBadgedIcon()}。

+ +

如要查看這項新功能的使用方式,請參閱這個版本的 {@code BasicManagedProfile} 實作示例。

+ +

裝置擁有者

+

Android 5.0 導入了部署裝置擁有者應用程式的功能。與一般裝置管理員不同,「裝置擁有者」另外具備在裝置上建立及移除次要使用者,以及配置全域設定的能力。您的裝置擁有者應用程式可以使用 {@link android.app.admin.DevicePolicyManager} 類別中的方法,針對受管理的裝置的設定、安全性和應用程式進行精細的控制。無論在任何時候,每部裝置都只能具備一個有效的裝置擁有者。

+ +

如要部署並啟用裝置擁有者,您必須在裝置尚未進行設定建置時,先透過 NFC 將程式設計應用程式的資料傳輸到裝置中。這項資料傳輸作業所傳送的資訊,與受管理的設定檔建置中描述的建置調用請求所傳送的資訊相同。

+ +

螢幕固定

+ +

Android 5.0 導入了全新的螢幕固定 API,可讓您暫時防止使用者離開您的工作或受到通知干擾。舉例來說,如果您正在開發可在 Android 或單一用途或 Kiosk 應用程式上支援高風險評估需求的教育應用程式,則可以使用這個功能。您的應用程式啟用了螢幕固定之後,使用者將無法看到通知、存取其他應用程式或返回主畫面,直到您的應用程式退出這個模式為止。

+ +

您可透過兩種方法啟用螢幕固定:

+ + + +

當工作鎖定處於有效狀態時,就會發生下列行為:

+ + + +

列印架構

+ +

將 PDF 轉譯為點陣圖

+

您現在可以使用新的 {@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} 轉變為點陣圖。如果您只希望將文件的一部分轉變為點陣圖圖片 (例如,想要實作圖塊轉譯以放大文件),還可以設定其他參數。

+ +

如需瞭解全新 API 的使用示例,請參閱 {@code PdfRendererBasic} 示例。

+ +

系統

+

應用程式使用統計資料

+

透過全新的 {@link android.app.usage} API,您現在可以存取 Android 裝置上的應用程式使用紀錄。與已淘汰的 {@link android.app.ActivityManager#getRecentTasks(int, int) getRecentTasks()} 方法相比,這個 API 提供了更詳細的使用資訊。如要使用這個 API,您必須先在資訊清單中宣告 {@code "android.permission.PACKAGE_USAGE_STATS"} 權限。如要存取使用紀錄,使用者還必須依序點擊 [設定] > [安全性] > [應用程式],啟用對這個應用程式的存取權限。

+ +

系統將以每個應用程式為單位收集使用資料,並依照每天、每週、每月和每年的時間間隔彙總資料。系統對於這些資料的最長保留期限分別為:

+ + + +

至於每個應用程式,系統會記錄下列資料:

+ + +

測試和協助工具

+ +

測試和協助工具改進部分

+

Android 5.0 新支援了下列測試和協助工具:

+ + + +

IME

+ +

切換輸入語言更輕鬆

+ +

從 Android 5.0 開始,使用者可以更輕鬆地在平台支援的所有輸入法編輯器 (IME) 之間進行切換。當您執行指定的切換操作時 (通常是輕觸軟鍵盤上的地球圖示),將會依序看到所有 IME。這項行為變更是由 {@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod(android.os.IBinder) shouldOfferSwitchingToNextInputMethod()} 方法實作。

+ +

此外,這個架構現在還會檢查下一個 IME 是否包含切換機制 (並同時確認這個 IME 是否支援切換到下一個 IME 的功能)。具備切換機制的 IME 不會切換到沒有切換機制的 IME。這項行為變更是由 {@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod(android.os.IBinder, boolean) switchToNextInputMethod()} 方法實作。 + +

如要查看更新版 IME 切換 API 的使用示例,請參閱這個版本中更新的軟鍵盤實作示例。如要進一步瞭解實作 IME 切換機制的方法,請參閱建立輸入法。 +

+ +

資訊清單宣告

+ +

可宣告的必要功能

+

{@code } 元素現在支援下列各值,有助您確保應用程式只會安裝在提供應用程式所需功能的裝置上。

+ + + +

使用者權限

+ +

{@code } 元素現在支援下列權限,以便宣告您的應用程式存取特定 API 時所需的權限。

+ + diff --git a/docs/html-intl/intl/zh-tw/about/versions/lollipop.jd b/docs/html-intl/intl/zh-tw/about/versions/lollipop.jd new file mode 100644 index 0000000..d05e5db --- /dev/null +++ b/docs/html-intl/intl/zh-tw/about/versions/lollipop.jd @@ -0,0 +1,254 @@ +page.title=Android Lollipop + +@jd:body + + + + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +

歡迎使用 Android 5.0 Lollipop,這是目前為止規模最大、功能最強的 Android 版本!

+ +

這個版本不僅為使用者提供了許多新功能,也為開發人員提供了數以千計的全新 API。Android 的應用領域也因此從手機、平板電腦、穿戴式裝置,進一步擴展到電視和汽車。

+ +

如要深入瞭解全新的開發人員 API,請參閱 Android 5.0 API 總覽。如需適合一般消費者閱讀的 Android 5.0 相關資訊,請前往 www.android.com

+ +

實感設計

+ +

Android 5.0 將實感設計功能 (Material Design) 導入到 Android 中,並為您提供了更加完善的使用者介面工具套件,讓您輕鬆將全新的設計模式整合到應用程式中。

+ + + +

全新 3D 檢視模式可讓您設定 z-level,讓元素高過檢視階層並投射即時陰影,即使元素移動時也沒問題。

+ + +

透過內建活動轉換效果的優美動畫,帶領使用者體驗流暢的狀態切換畫面。實感主題可為您的活動新增轉換效果,包括在各個活動中使用共用視覺化元素的功能。

+ + + +
+
+ +
+
+ 如要播放影片,請按一下裝置螢幕 +
+
+ + +

您可以為按鈕、核取方塊和應用程式中的其他觸控控制項套用波紋動畫。 + +

您也能以 XML 定義向量圖形可繪項目,並透過多種方式套用動畫效果。向量圖形可繪項目縮放時不會失真,因此最適合用於應用程式內的單色圖示。

+ +

RenderThread 是全新的系統管理執行緒,即使主要使用者介面執行緒中發生延遲,仍可確保動畫流暢播放。

+ + +

效能導向

+ +

Android 5.0 為您提供更快、更流暢且更強大的運算體驗。

+ +

Android 現在只會在全新 ART Runtime 上執行。ART 完全從零打造,可混合支援預先 (AOT) 編譯、準時 (JIT) 編譯和直譯程式碼。ART 受到 ARM、x86 和 MIPS 架構支援 ,並且完全與 64 位元相容。

+ +

ART 可提升應用程式的效能和回應靈敏度。有效率的垃圾資訊收集作業可減少垃圾收集事件的暫停次數和持續時間。正因為垂直同步時段內的垃圾資訊收集事件,您的應用程式才不會忽略影格。如果需要在前景使用,ART 還會動態移動記憶體將效能最佳化。

+ +

Android 5.0 導入了對 64 位元架構的平台支援 (Nexus 9 的 NVIDIA Tegra K1 使用該架構)。針對特定的運算工作負載,最佳化作業可提供更大的位址空間和改進的效能。以 Java 語言編寫的應用程式可自動做為 64 位元應用程式執行,完全不需要任何修改。如果您的應用程式使用原生程式碼,請注意我們已擴展 NDK,現在可支援適用於 ARM v8、x86-64 和 MIPS-64 的全新 ABI。

+ +

延續對於流暢效能的重視,Android 5.0 提供了改進的音訊/視訊同步功能。我們已校準音訊和圖形管道,可以提供更準確的時間戳記,讓影片應用程式和遊戲顯示流暢同步的影音內容。

+ + +

通知

+ +

在 Android 5.0 中,通知變得更明顯可見、更容易存取,同時也更容易設定。

+ + + +

對於鎖定畫面上所顯示的通知詳細資訊,使用者可以視需要自行調整。使用者可選擇在安全的鎖定畫面上不顯示任何內容、顯示部分內容,或者顯示所有內容。

+ +

重要的通知提醒 (例如來電) 將顯示在提醒通知中。提醒通知是一個小型的浮動視窗,使用者不需要離開目前的應用程式即可回應或關閉提醒通知。

+ +

您現在可以在通知中新增全新中繼資料,以便收集相關聯的聯絡人 (用於排名)、類別和優先級。

+ +

此外,我們也提供了全新的媒體通知範本,目的是讓通知的媒體控制項保持一致,最多不超過 6 個操作按鈕 (包括「豎起拇指」之類的自訂控制項),從此再也不需要 RemoteViews!

+ + + +

您的應用程式躍上大螢幕

+ +

Android TV 提供了完整的電視平台,讓您的應用程式輕鬆躍上大螢幕。Android TV 的設計概念就是圍繞著簡化的主螢幕體驗向外延伸,讓使用者透過量身打造的推薦和語音搜尋,輕鬆發掘新奇內容。

+ +

透過 Android TV,您現在不但可以為應用程式或遊戲內容營造寬廣且鮮明的體驗,還可以支援與遊戲控制器和其他輸入裝置進行互動的功能。為協助您針對電視打造擁有劇院級效果且在 7 公尺外依然清晰可見的使用者介面,Android 在 v17 支援程式庫中提供了一個 Leanback 使用者介面架構

+ +

Android TV 輸入架構 (TIF) 允許電視應用程式處理 HDMI 輸入端、電視協調器、IPTV 接收器等來源的影片串流。透過 TV 輸入架構發佈的中繼資料,還可提供直播電視搜尋和推薦功能,並且包括一項 HDMI-CEC 控制服務,可讓使用者透過一個遙控器操控多個裝置。

+ +

TV 輸入架構可存取廣泛的直播電視輸入來源,並將它們彙集在單一使用者介面中,讓使用者瀏覽、查看及觀賞精彩內容。如果希望您的內容更容易在電視裝置上使用,不妨為您的內容建構電視輸入服務。

+ + + + + +

文件導向的應用程式

+ +

Android 5.0 導入了重新設計的「概覽」空間 (之前稱為「最近使用的項目」),用途更廣而且非常適合多工作業。

+ +

透過全新的 API,您可將應用程式中的活動當做獨立的文件,與其他最近使用項目的螢幕一起顯示。

+ +

您可以運用同時顯示多份文件的功能,讓使用者即時存取更多內容或服務。例如,您可以運用同時顯示多份文件的功能,呈現生產力應用程式中的檔案、遊戲中的玩家比賽,或者是即時通訊應用程式中的通訊內容。

+ + + +

進階連線功能

+ +

Android 5.0 增加了全新 API,可讓應用程式透過藍牙低功耗技術 (BLE) 執行並行操作,因此可同時掃描 (中央模式) 和廣告 (週邊模式)。

+ +

透過全新的多網路功能,應用程式可查詢具備特定功能的可用網路,例如 Wi-Fi 網路、行動數據網路或是按傳輸量計費網路,以及這些網路是否提供了特定的網路功能。之後,應用程式就可以要求連線,並對連線中斷或其他網路變動做出回應。

+ +

NFC API 現在不但可讓應用程式動態註冊 NFC 應用程式 ID (AID),還可根據目前為有效狀態的服務設定偏好的卡片模擬服務,並且建立包含 UTF-8 文字資料的 NDEF 紀錄。

+ + + +

高效能圖形運算機制

+ +

在受支援的裝置上,Khronos OpenGL ES 3.1 現在可為遊戲和其他應用程式提供最高效能的 2D 和 3D 圖形功能。

+ +

OpenGL ES 3.1 新增了運算著色器、型染紋理、加速的視覺效果、高品質 ETC2/EAC 紋理壓縮、進階紋理轉譯、標準化紋理大小和轉譯緩衝區格式等功能。

+ + +
+ +

Gameloft 開發的《決鬥騎士》採用 AEP 的 ASTC (自動調整可縮放紋理壓縮) 和 ES 3.1 中的運算著色器,完美呈現了 HDR (高動態範圍) 泛光效果和更多圖形細節。

+
+ +

此外,Android 5.0 也導入了 Android 擴充功能套件 (AEP)。這組 OpenGL ES 擴充功能可讓您存取下列功能:曲面細分著色器、幾何圖形著色器、ASTC 紋理壓縮、取樣差補和著色,以及其他進階轉譯功能。有了 AEP,您的應用程式便能支援多種 GPU,有效提高圖形運算效率。

+ + +

更強大的音訊功能

+ +

全新的音訊擷取設計提供了低延遲音訊輸入功能。這項新設計包括:永遠不會被封鎖的快速擷取執行緒 (讀取期間除外);採用原生採樣速率、聲道數量和位元深度的快速擷取用戶端;以及可提供重新採樣、上/下聲道混合以及上/下位元深度的一般擷取用戶端。

+ +

多聲道音訊串流混音可讓專業的音訊應用程式混合多達八個聲道,包括 5.1 和 7.1 聲道在內。

+ +

應用程式現在可以公開媒體內容,並可瀏覽其他應用程式的媒體,然後請求播放。由於內容是透過具有查詢功能的介面公開,因此不需要存在於裝置上。

+ +

透過與特定地區設定、品質和延遲等級相關聯的語音設定檔,應用程式可以精確掌控文字轉語音合成功能。新的 API 同時提升了對合成錯誤檢查、網路合成、語言搜尋和網路替代的支援能力。

+ +

Android 現在包括對標準 USB 音訊週邊裝置的支援,可讓使用者連接 USB 耳機、喇叭、麥克風和其他高效能數位週邊裝置。Android 5.0 還增加了對 Opus 音訊轉碼器的支援。

+ +

用於控制媒體播放功能的全新 {@link android.media.session.MediaSession} API,現在可讓您輕鬆在不同的螢幕和其他控制器之間提供一致的媒體控制項。

+ + +

改良的相機和影片 >>

+ +

Android 5.0 導入了全新的相機 API,可讓您擷取原始格式 (例如 YUV 和 Bayer RAW),並以影格為單位對參數 (例如曝光時間、ISO 感光度和影格持續時間) 進行控制。透過全新的完全同步相機管道,您可在受支援的裝置上以每秒 30 影格的速率擷取未壓縮的全解析度 YUV 圖片。

+ +

除了圖片之外,您還可透過相機擷取雜訊模型和光學資訊等中繼資料。

+ +

透過網路傳送影片串流的應用程式現在可以利用 H.265 高效率影片編碼 (HEVC),獲得影片資料的最佳編碼和解碼效能。

+ +

Android 5.0 也新增對多媒體隧道服務的支援,以便針對超高解析度 (4K) 內容提供最佳體驗,並能將壓縮的音訊和影片資料一起播放。

+ + + +
+ +

使用者的個人應用程式和工作應用程式都會顯示在同一個檢視畫面。工作應用程式都附有徽章,方便您輕鬆識別。

+
+ + +

Android 在工作方面的應用

+ +

為了在企業環境中實現「帶自己的行動裝置來上班」運動,我們新增了受管理的設定檔建置程序,可在裝置上建立安全的工作設定檔。在啟動器中,如果應用程式附帶「工作」徽章,表示該應用程式和資料是由 IT 管理員在工作設定檔內管理的。

+ +

個人設定檔和工作設定檔的通知都會顯示在同一個檢視畫面。每個設定檔的資料彼此獨立,安全無虞。即使兩個設定檔使用同一個應用程式,也不會造成安全上的顧慮。

+ +

對於公司擁有的裝置,IT 管理員可以著手處理新裝置並為其設定裝置擁有者。完成後,雇主就可以發放已安裝裝置擁有者應用程式的裝置,而這些裝置都可以設置全域的裝置設定。

+ + + +

螢幕擷取和分享

+ +

Android 5.0 可讓您在應用程式中新增螢幕擷取和分享功能。

+ +

如果具有相關使用者權限,您就可以擷取螢幕上未設定安全防護的影片,並視需要選擇透過網路傳送。

+ + +

全新的感應器類型

+ +

在 Android 5.0 中,全新的傾斜偵測感應器可有效提升受支援裝置上的活動識別準確度,心率感應器則可回報觸摸裝置的使用者目前的心跳速率。

+ +

全新的互動複合感應器現在可用來偵測特殊互動,例如「喚醒」手勢、「拿取」手勢和「掃視」手勢。

+ + + +

Chromium WebView

+ +
+ +
+ +

Android 5.0 最初版本包含以 Chromium M37 版為基礎的 Chromium for {@link android.webkit.WebView},藉此增加了 WebRTCWebAudioWebGL 支援功能。

+ +

Chromium M37 也包含對於所有 Web Components 規格 (例如 Custom Elements、Shadow DOM、HTML Imports 和 Templates) 的原生支援。這表示您不需要 Polyfill,即可在 WebView 中使用 Polymer 和相關的實感設計元素

+ +

雖然自 Android 4.4 以來,WebView 都是以 Chromium 為基礎,但您現在可以從 Google Play 更新 Chromium 層。

+ +

Chromium 新版本推出時,使用者便可以透過 Google Play 進行更新,讓 WebView 能夠取得最新的增強功能,並修正相關錯誤。這表示開發人員能夠讓使用 WebView 的應用程式 (Android 5.0 版以上) 取得最新的 Web API,同時修正各項錯誤。

+ + + +

協助工具和輸入功能

+ +

對於視力正常的使用者在畫面上互動的視窗,現在只要使用全新的協助工具 API,即可擷取這些視窗的屬性詳細資訊。全新的協助工具 API 也可為使用者介面元素定義標準或自訂的輸入操作。

+ +

透過全新輸入法編輯器 (IME) API,使用者可以直接從目前的輸入法迅速切換到其他 IME。

+ + + +

用於打造低耗電應用程式的工具

+ +

全新的排定工作 API 可讓您為系統定義延後執行的工作或是在特定條件下 (例如裝置充電或連接到 Wi-Fi 時) 執行的工作,進而將電池電力最佳化。

+ +

全新的 dumpsys batterystats 指令會產生耗電量統計資料,您可以使用這項統計資料瞭解整個系統的用電情況,並掌握您的應用程式對裝置電池的影響。您可以查看電力事件、每個 UID 和系統元件的大致用電量等紀錄資訊。

+ + +

Battery Historian 這項新工具可以將 dumpsys batterystats 的統計資料轉換為圖示,以便進行與電力相關的偵錯作業。您可以在 https://github.com/google/battery-historian 找到這項工具。

-- cgit v1.1