page.title=Información general de la API page.keywords=preview,sdk,compatibility page.tags=previewresources, androidm sdk.platform.apiLevel=22-mnc page.image=images/cards/card-api-overview_16-9_2x.png @jd:body

Contenido del documento mostrar más

  1. Vinculación de la aplicación
  2. Copia de seguridad automática para aplicaciones
  3. Autenticación
    1. Autenticación por huellas dactilares
    2. Confirmar credencial
  4. Compartir de forma directa
  5. Interacciones de voz
  6. Asistencia de API
  7. Notificaciones
  8. Soporte del lápiz Bluetooth
  9. Exploración mejorada de Bluetooth de bajo consumo
  10. Soporte de Hotspot 2.0 versión 1
  11. Modo de pantalla 4K
  12. ColorStateLists para poder aplicar temas
  13. Características de audio
  14. Características de video
  15. Características de la cámara
    1. API para luz de flash
    2. Reprocesamiento de la cámara
  16. Características de Android for Work

Diferencias de las API

  1. Nivel de API 22 para la versión preliminar de Android M »

M Developer Preview le brinda una perspectiva avanzada de la próxima versión de la plataforma Android, que ofrece nuevas características para usuarios y desarrolladores de aplicaciones. En este documento, se brinda una introducción sobre las API más distinguidas.

M Developer Preview está destinado a usuarios desarrolladores principiantes y evaluadores. Si le interesa influenciar la dirección del marco de trabajo de Android, pruebe M Developer Preview y envíenos sus comentarios.

Advertencia: No publique las aplicaciones que utilizan M Developer Preview en la tienda de Google Play.

Nota: Este documento, a menudo, hace referencia a clases y métodos que aún no cuentan con materiales de referencia disponibles en developer.android.com. Estos elementos de API tienen el formato {@code code style} en este documento (sin hipervínculos). Para obtener la documentación preliminar de la API para estos elementos, descargue la referencia de la versión preliminar.

Importantes cambios en los comportamientos

Si publicó anteriormente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por los cambios en la plataforma.

Consulte la sección Cambios en los comportamientos para obtener información detallada.

Vinculación de la aplicación

Esta versión preliminar mejora el sistema de intentos de Android al proporcionar una vinculación más sólida de la aplicación. Esta característica le permite asociar una aplicación con un dominio web propio. Según esta asociación, la plataforma puede determinar la aplicación predeterminada que se debe utilizar para controlar un vínculo web en particular y omitir el paso de pedirles a los usuarios que seleccionen una aplicación. Para aprender a implementar esta característica, consulte la sección Vinculación de la aplicación.

Copia de seguridad automática para aplicaciones

Ahora, el sistema realiza restauraciones y copias de seguridad de datos completas y automáticas para las aplicaciones. Este comportamiento se habilita de forma predeterminada para las aplicaciones que tienen como destino la versión preliminar de Android M; usted no necesita agregar ningún código adicional. Si los usuarios eliminan sus cuentas de Google, también se eliminarán sus datos de copias de seguridad. Para obtener información sobre cómo funciona esta característica y cómo configurar qué elementos incluir en la copia de seguridad del sistema de archivo, consulte la sección Copia de seguridad automática para aplicaciones.

Autenticación

Esta versión preliminar ofrece nuevas API para permitirle autenticar usuarios al usar escaneos de huellas dactilares en los dispositivos compatibles y verificar cuán reciente es la última autenticación del usuario al utilizar un mecanismo de desbloqueo de dispositivos (como una contraseña de pantalla de bloqueo). Use estas API junto con el sistema Android Keystore.

Autenticación por huellas dactilares

Para autenticar usuarios mediante el escaneo de huellas dactilares, obtenga una instancia de la nueva clase {@code android.hardware.fingerprint.FingerprintManager} y llame al método {@code FingerprintManager.authenticate()}. Su aplicación se debe ejecutar en un dispositivo compatible con un sensor de huellas dactilares. Debe implementar la interfaz de usuario para el flujo de autenticación por huellas dactilares en su aplicación y debe utilizar el ícono de huella dactilar estándar de Android en la UI. El ícono de huella dactilar de Android ({@code c_fp_40px.png}) se incluye en la aplicación de muestra. Si está desarrollando múltiples aplicaciones que utilizan la autenticación por huellas dactilares, tenga en cuenta que cada aplicación debe autenticar la huella dactilar del usuario de manera independiente.

Para utilizar esta característica en su aplicación, primero agregue el permiso {@code USE_FINGERPRINT} en su manifiesto.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

Para ver cómo una aplicación implementa la autenticación por huellas dactilares, consulte la sección Ejemplo de diálogo de huella dactilar.

Si está evaluando esta característica, siga estos pasos:

  1. Instale la Revisión de herramientas del SDK de Android versión 24.3, si todavía no la instaló.
  2. Registre una huella dactilar nueva en el emulador; para hacerlo, vaya a Settings > Security > Fingerprint, luego siga las instrucciones de registro.
  3. Use un emulador para emular eventos táctiles de huellas dactilares con el siguiente comando. Utilice el mismo comando para emular eventos táctiles de huellas dactilares en la pantalla de bloqueo o en su aplicación.
    adb -e emu finger touch <finger_id>
    

    En Windows, posiblemente tenga que ejecutar {@code telnet 127.0.0.1 <emulator-id>} seguido de {@code finger touch <finger_id>}.

Confirmar credencial

Su aplicación puede autenticar usuarios según el tiempo que haya pasado desde que desbloquearon su dispositivo por última vez. Esta característica evita que los usuarios tengan que recordar contraseñas adicionales específicas de la aplicación y elimina la necesidad de que usted tenga que implementar su propia interfaz de usuario de autenticación. Su aplicación debe utilizar esta característica junto con una implementación de clave pública o secreta para la autenticación del usuario.

Para definir la duración del tiempo de espera en el que se puede volver a usar la misma clave después de que un usuario se haya autenticado correctamente, llame al nuevo método {@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} cuando configure {@link javax.crypto.KeyGenerator} o {@link java.security.KeyPairGenerator}. Esta característica actualmente funciona para operaciones criptográficas simétricas.

Evite mostrar el diálogo de nueva autenticación de forma excesiva: sus aplicaciones deben intentar utilizar el objeto criptográfico primero y, si se agota el tiempo de espera, deben usar el método {@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} para volver a autenticar el usuario dentro de su aplicación.

Para ver cómo la aplicación implementa esta característica, consulte la sección Ejemplo de cómo confirmar la credencial.

Compartir de forma directa

Esta versión preliminar le proporciona API para que la acción de compartir sea intuitiva y rápida para los usuarios. Ahora, puede definir destinos para compartir de forma directa que inician una actividad específica en su aplicación. Estos destinos para compartir de forma directa se exponen a los usuarios a través del menú Share. Esta característica les permite a los usuarios compartir contenido con los destinos, como contactos, dentro de otras aplicaciones. Por ejemplo, el destino para compartir de forma directa podría iniciar una actividad en otra aplicación de red social, lo que le permite al usuario compartir contenido directamente con una comunidad o un amigo específicos de esa aplicación.

Para habilitar destinos para compartir de forma directa, debe definir una clase que extienda el {@code android.service.}
Clase {@code chooser.ChooserTargetService}. Declare su {@code ChooserTargetService} en el manifiesto. En esa declaración, especifique el permiso {@code BIND_CHOOSER_TARGET_SERVICE} y un filtro de intento con la acción {@code SERVICE_INTERFACE}.

El ejemplo a continuación muestra de qué manera podría declarar {@code ChooserTargetService} en su manifiesto.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Para cada actividad que desee exponer a {@code ChooserTargetService}, agregue un elemento {@code <meta-data>} con el nombre {@code "android.service.chooser.chooser_target_service"} en el manifiesto de su aplicación.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

Interacciones de voz

Esta versión preliminar proporciona una nueva API de interacción de voz que, junto con las acciones de voz, le permite compilar experiencias de conversaciones de voz en sus aplicaciones. Llame al método {@code android.app.Activity.isVoiceInteraction()} para determinar si su actividad se inició en respuesta a una acción de voz. De ser así, su aplicación puede utilizar la clase {@code android.app.VoiceInteractor} para solicitar una confirmación de voz por parte del usuario, realizar una selección de una lista de opciones y mucho más. Para obtener más información sobre cómo implementar acciones de voz, consulte el sitio para desarrolladores de acciones de voz.

Asistencia de API

Esta versión preliminar ofrece una nueva manera para que los usuarios interactúen con sus aplicaciones a través de un asistente. Si desea utilizar esta característica, el usuario debe habilitar el asistente para utilizar el contexto actual. Una vez habilitado, para invocar al asistente dentro de cualquier aplicación, el usuario debe mantener presionado el botón Home.

Su aplicación puede optar por no compartir el contexto actual con el asistente al configurar la marca {@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Además del conjunto de información estándar que la plataforma le pasa al asistente, su aplicación puede compartir información adicional usando la nueva clase {@code android.app.Activity.AssistContent}.

Para proporcionarle al asistente contexto adicional desde su aplicación, siga estos pasos:

  1. Implemente la interfaz {@link android.app.Application.OnProvideAssistDataListener}.
  2. Registre esta escucha usando {@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.
  3. Para proporcionar información contextual específica de la actividad, invalide la devolución de llamada {@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()} y, opcionalmente, la nueva devolución de llamada {@code Activity.onProvideAssistContent()}.

Notificaciones

Esta versión preliminar agrega los siguientes cambios de API para las notificaciones:

Compatibilidad del lápiz Bluetooth

Esta versión preliminar ofrece soporte mejorado para las entradas de usuarios que utilizan un lápiz Bluetooth. Los usuarios pueden sincronizar y conectar un lápiz Bluetooth compatible con su teléfono o tablet. Mientras está conectado, la información de posición de la pantalla táctil se fusiona con la información de los botones y la presión del lápiz para proporcionar una mayor variedad de expresiones que al utilizar la pantalla táctil solamente. Su aplicación puede obedecer cuando se presiona el botón del lápiz y cuando se realizan acciones secundarias al registrar las nuevas devoluciones de llamadas {@code View.onStylusButtonPressListener} y {@code GestureDetector.OnStylusButtonPressListener} en su actividad.

Utilice las constantes y los métodos {@link android.view.MotionEvent} para detectar las interacciones del botón del lápiz:

Exploración mejorada de Bluetooth de bajo consumo

Si su aplicación realiza exploraciones de Bluetooth de bajo consumo, puede utilizar el nuevo método {@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar que usted desea que las devoluciones de llamadas se notifiquen solo cuando se encuentre por primera vez un paquete de anuncio que coincida con el conjunto {@link android.bluetooth.le.ScanFilter} y cuando no se vea durante un período determinado. Este enfoque de exploración es más eficaz en cuanto al consumo de energía que la que se proporciona en la versión anterior de la plataforma.

Soporte de Hotspot 2.0 versión 1

Esta versión preliminar agrega soporte para la especificación de Hotspot 2.0 versión 1 en los dispositivos Nexus 6 y Nexus 9. Para proveer credenciales de Hotspot 2.0 en su aplicación, use los métodos nuevos de la clase {@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} y {@code setRealm()}. En el objeto {@link android.net.wifi.WifiConfiguration}, puede configurar los campos {@link android.net.wifi.WifiConfiguration#FQDN} y {@code providerFriendlyName}. La nueva propiedad {@code ScanResult.PasspointNetwork} indica si una red detectada representa un punto de acceso de Hotspot 2.0.

Modo de pantalla 4K

Ahora, la plataforma permite que las aplicaciones soliciten que la resolución de pantalla se actualice a una representación 4K en el hardware compatible. Para consultar la resolución física actual, use las nuevas API {@code android.view.Display.Mode}. Si la UI se establece en una resolución lógica más baja y se aumenta a una resolución física más alta, tenga en cuenta que la resolución física que devuelve el método {@code Display.Mode.getPhysicalWidth()} puede ser diferente de la resolución lógica informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.

Puede pedirle al sistema que cambie la resolución física en su aplicación mientras se ejecuta y, para ello, debe configurar la propiedad {@code WindowManager.LayoutParams.preferredDisplayModeId} de la ventana de su aplicación. Esta característica resulta útil si desea cambiar a la resolución de pantalla 4K. Mientras se encuentra en el modo de pantalla 4K, la UI se continúa representando en la resolución original (como 1080p) y se aumenta a 4K, pero los objetos {@link android.view.SurfaceView} pueden mostrar contenido en la resolución nativa.

ColorStateLists para poder aplicar temas

Ahora, los atributos de tema se admiten en {@link android.content.res.ColorStateList} para los dispositivos que ejecutan la versión preliminar de Android M. Los métodos {@link android.content.res.Resources#getColorStateList(int) getColorStateList()} y {@link android.content.res.Resources#getColor(int) getColor()} se dejaron de usar. Si desea llamar a estas API, en su lugar, llame a los métodos nuevos {@code Context.getColorStateList()} o {@code Context.getColor()}. Estos métodos también se encuentran disponibles en la biblioteca AppCompat v4 vía {@link android.support.v4.content.ContextCompat}.

Características de audio

Esta versión preliminar agrega mejoras al procesamiento de audio en Android, lo que incluye lo siguiente:

Características de video

Esta versión preliminar agrega nuevas capacidades a las API de procesamiento de video, entre ellas, las siguientes:

Características de la cámara

Esta versión preliminar incluye las siguientes API nuevas para acceder a la luz de flash de la cámara y para el reprocesamiento de imágenes de la cámara:

API para luz de flash

Si un dispositivo de cámara cuenta con una unidad de flash, puede llamar al método {@code CameraManager.setTorchMode()} para activar o desactivar el modo linterna de una unidad de flash sin abrir el dispositivo de cámara. La aplicación no tiene propiedad exclusiva de la unidad de flash ni del dispositivo de cámara. El modo linterna se desactiva y deja de estar disponible cuando la cámara no se encuentra disponible o cuando otros recursos de la cámara que mantienen la linterna encendida dejan de estar disponibles. Otras aplicaciones también pueden llamar a {@code setTorchMode()} para desactivar el modo linterna. Cuando se cierra la última aplicación que activó el modo linterna, este modo se desactiva.

Si desea registrar una devolución de llamada para recibir una notificación sobre el estado del modo linterna, llame al método {@code CameraManager.registerTorchCallback()}. La primera vez que se registra la devolución de llamada, se llama inmediatamente con el estado del modo linterna de todos los dispositivos de cámara que se conocen actualmente y que tengan una unidad de flash. Si el modo linterna se activa o desactiva correctamente, se invoca al método {@code CameraManager.TorchCallback.onTorchModeChanged()}.

API de reprocesamiento

La API {@link android.hardware.camera2 Camera2} se extiende para admitir el reprocesamiento de imágenes privadas de formato opaco y YUV. Su aplicación determina si las capacidades de reprocesamiento se encuentran disponibles vía {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Si un dispositivo admite el reprocesamiento, usted puede crear una sesión de captura de cámara reprocesable llamando a {@code CameraDevice.createReprocessableCaptureSession()} y puede crear solicitudes para el reprocesamiento de búferes de entrada.

Utilice la clase {@code ImageWriter} para conectar el flujo del búfer de entrada a la entrada de reprocesamiento de la cámara. Para obtener un búfer vacío, siga el modelo de programación que se indica a continuación:

  1. Llame al método {@code ImageWriter.dequeueInputImage()}.
  2. Complete los datos en el búfer de entrada.
  3. Envíe el búfer a la cámara llamando al método {@code ImageWriter.queueInputImage()}.

Si está utilizando un objeto {@code ImageWriter} junto con una imagen {@code android.graphics.ImageFormat.PRIVATE}, su aplicación no puede acceder a los datos de la imagen de forma directa. En cambio, pase la imagen {@code ImageFormat.PRIVATE} directamente a {@code ImageWriter} llamando al método {@code ImageWriter.queueInputImage()} sin ninguna copia del búfer.

La clase {@code ImageReader} ahora admite secuencias de imagen de formato {@code android.graphics.ImageFormat.PRIVATE}. Este soporte le permite que su aplicación mantenga una cola de imagen circular de imágenes de salida {@code ImageReader}, seleccione una o más imágenes y las envíe a {@code ImageWriter} para el reprocesamiento de la cámara.

Características de Android for Work

Esta versión preliminar incluye las siguientes API nuevas para Android for Work:

Para obtener una vista detallada de todos los cambios de la API en M Developer Preview, consulte el Informe de diferencias de las API.