Android KitKat

Android 4.4 en teléfonos y tablets

Bienvenido a Android 4.4 KitKat.

Android KitKat ofrece todas las funciones más innovadoras, atractivas y útiles de Android a más dispositivos, en cualquier parte.

En este documento, se ofrece un panorama general de las novedades para desarrolladores.

Obtén más información sobre KitKat para consumidores en www.android.com.

Android para todos

Android 4.4 está diseñado para ejecutarse rápido, sin problemas y con capacidad de respuesta en un rango de dispositivos mucho más amplio que nunca, incluso en millones de dispositivos de nivel de entrada de todo el mundo con tan solo 512 MB de RAM.

KitKat optimiza todos los componentes principales para reducir el uso de la memoria y presenta nuevas API y herramientas para ayudarte a crear aplicaciones innovadoras, responsivas y eficientes en cuanto a la memoria.

Los OEM que compilan la nueva generación de dispositivos Android pueden aprovechar las recomendaciones y opciones orientadas para ejecutar Android 4.4 de manera eficiente, incluso en dispositivos con poca memoria. El ajuste de caché de código JIT de Dalvik, la combinación de la misma página de kernel (KSM), el cambio a zRAM y otras optimizaciones ayudan a administrar la memoria. Las nuevas opciones de configuración permiten a los OEM ajustar los niveles de memoria insuficiente para los procesos, establecer tamaños de caché de gráficos, controlar la recuperación de memoria y mucho más.

En Android, los cambios en el sistema mejoran la administración de la memoria y reducen el uso de memoria. Los procesos principales del sistema están recortados para usar menos montón y ahora protegen de manera más intensa la memoria del sistema contra las apps que consumen grandes cantidades de RAM. Cuando se inician varios servicios a la vez (por ejemplo, cuando cambia la conectividad de red), Android ahora lanza los servicios en serie, en grupos pequeños, para evitar picos de demanda de memoria.

Para los desarrolladores, Android 4.4 te ayuda a ofrecer apps que sean eficientes y responsivas en todos los dispositivos. Una nueva API, ActivityManager.isLowRamDevice(), te permite ajustar el comportamiento de tu app para que coincida con la configuración de memoria del dispositivo. Puedes modificar o inhabilitar las funciones de memoria grande según sea necesario, según los casos prácticos que desees admitir en dispositivos de nivel de entrada. Obtén más información sobre cómo optimizar tus apps para dispositivos con poca memoria aquí.

Las nuevas herramientas también te brindan estadísticas valiosas sobre el uso de memoria de tu app. La herramienta procstats detalla el uso de la memoria en el tiempo, con los tiempos de ejecución y la huella de memoria para las apps en primer plano y los servicios en segundo plano. También está disponible una vista en el dispositivo como nueva opción para desarrolladores. Se mejoró la herramienta meminfo para facilitar la detección de tendencias y problemas de memoria, y se revela la sobrecarga de memoria adicional que antes no se podía visualizar.

Nuevas capacidades de NFC a través de la emulación de tarjeta de host

Android 4.4 presenta una nueva compatibilidad de plataforma para transacciones seguras basadas en NFC mediante la emulación de tarjeta de host (HCE) para pagos, programas de lealtad, acceso con tarjetas, pases de transporte público y otros servicios personalizados. Con la HCE, cualquier app en un dispositivo Android puede emular una tarjeta inteligente NFC, lo que permite a los usuarios iniciar transacciones con una app de su preferencia, sin necesidad de un elemento seguro (SE) aprovisionado en el dispositivo. Las apps también pueden usar un nuevo modo de lectura para actuar como lectores de tarjetas HCE y otras transacciones basadas en NFC.

Símbolo de pago sin contacto

La HCE de Android emula las tarjetas inteligentes basadas en ISO/IEC 7816 que usan el protocolo ISO/IEC 14443-4 (ISO-DEP) sin contacto para la transmisión. Muchos sistemas usan estas tarjetas en la actualidad, incluida la infraestructura de pago NFC EMVCO existente. Android usa identificadores de aplicación (AID) según se define en la norma ISO/IEC 7816-4 como base para enrutar las transacciones a las aplicaciones para Android correctas.

Las apps declaran los AID que admiten en sus archivos de manifiesto, junto con un identificador de categoría que indica el tipo de compatibilidad disponible (por ejemplo, "pagos"). Cuando varias apps admiten el mismo AID en la misma categoría, Android muestra un diálogo que permite al usuario elegir qué app utilizar.

Cuando el usuario presiona para pagar en una terminal de punto de venta, el sistema extrae el AID preferido y dirige la transacción a la aplicación correcta. La app lee los datos de la transacción y puede usar cualquier servicio local o basado en la red para verificar y, luego, completar la transacción.

La HCE de Android requiere la presencia de un controlador NFC en el dispositivo. La compatibilidad con HCE ya está ampliamente disponible en la mayoría de los controladores NFC, que ofrecen compatibilidad dinámica para transacciones con HCE y SE. Los dispositivos Android 4.4 compatibles con NFC incluirán la función Tocar y pagar para realizar pagos sencillos mediante HCE.

Framework de impresión

Las apps de Android ahora pueden imprimir cualquier tipo de contenido a través de Wi-Fi o servicios alojados en la nube, como Google Cloud Print. En las apps habilitadas para impresión, los usuarios pueden descubrir las impresoras disponibles, cambiar el tamaño del papel, elegir páginas específicas para imprimir e imprimir casi cualquier tipo de documento, imagen o archivo.

Android 4.4 presenta compatibilidad con plataformas nativas para la impresión, junto con API para administrarlas y agregar nuevos tipos de compatibilidad con impresoras. La plataforma proporciona un administrador de impresiones que media entre las apps que solicitan impresiones y los servicios de impresión instalados que controlan las solicitudes de impresión. El administrador de impresiones proporciona servicios compartidos y una IU del sistema para impresiones, lo que brinda a los usuarios un control coherente sobre las impresiones desde cualquier app. También garantiza la seguridad del contenido a medida que se pasa por los procesos, desde una app hasta un servicio de impresión.

Dispositivo móvil en orientación horizontal que muestra funciones de compatibilidad con impresoras

Puedes agregar compatibilidad de impresión a tus apps o desarrollar servicios de impresión para admitir tipos específicos de impresoras.

Los fabricantes de impresoras pueden usar nuevas APIs para desarrollar sus propios servicios de impresión: componentes conectables que agregan servicios y lógica específicos del proveedor para comunicarse con tipos específicos de impresoras. Pueden compilar servicios de impresión y distribuirlos a través de Google Play, lo que facilita que los usuarios los encuentren e instalen en sus dispositivos. Al igual que con otras apps, puedes actualizar los servicios de impresión de manera inalámbrica en cualquier momento.

Las apps cliente pueden usar nuevas APIs para agregar capacidades de impresión a sus apps con cambios mínimos de código. En la mayoría de los casos, deberías agregar una acción de impresión a la barra de acciones y una IU para elegir los elementos que deseas imprimir. También puedes implementar las API para crear trabajos de impresión, consultar el administrador de impresiones para obtener el estado y cancelar trabajos. Esto te permite imprimir casi cualquier tipo de contenido, desde imágenes y documentos locales hasta datos de red o una vista renderizada en un lienzo.

Para lograr una compatibilidad más amplia, Android usa PDF como formato de archivo principal para las impresiones. Antes de la impresión, tu app debe generar una versión del contenido en PDF correctamente paginada. Para mayor comodidad, la API de impresión proporciona clases auxiliares nativas y de WebView que te permiten crear archivos PDF con las APIs de dibujo estándar de Android. Si tu app sabe cómo dibujar el contenido, puede crear rápidamente un PDF para imprimir.

La mayoría de los dispositivos con Android 4.4 incluirán Google Cloud Print preinstalado como servicio de impresión, además de varias apps de Google que admiten impresiones, incluidas Chrome, Drive, Gallery y QuickOffice.

Framework de acceso a almacenamiento

Un nuevo framework de acceso al almacenamiento permite a los usuarios explorar y abrir documentos, imágenes y otros archivos en todos sus proveedores preferidos de almacenamiento de documentos. Una IU estándar y fácil de usar permite a los usuarios explorar archivos y accesos recientes de manera coherente en todas las apps y proveedores.

Dispositivo móvil que muestra una barra lateral abierta en el nuevo framework de acceso al almacenamiento Dispositivo móvil que muestra servicios de Box integrados en el nuevo framework de acceso al almacenamiento

Box y otros proveedores integraron sus servicios en el marco de trabajo de acceso al almacenamiento, lo que brinda a los usuarios un acceso fácil a sus documentos desde apps del sistema.

Los servicios de almacenamiento local o en la nube pueden participar en este ecosistema mediante la implementación de una nueva clase de proveedor de documentos que encapsule sus servicios. La clase de proveedor incluye todas las APIs necesarias para registrar al proveedor en el sistema y administrar la navegación, la lectura y la escritura de documentos en el proveedor. El proveedor de documentos puede brindar a los usuarios acceso a cualquier dato remoto o local que se pueda representar como archivo, desde texto, fotos y fondos de pantalla hasta videos, audio y mucho más.

Si creas un proveedor de documentos para un servicio local o en la nube, puedes entregárselo a los usuarios como parte de tu app para Android existente. Después de descargar e instalar la app, los usuarios tendrán acceso instantáneo al servicio desde cualquier app que participe en el framework. Esto puede ayudarte a ganar exposición y participación de los usuarios, ya que encontrarán tus servicios con mayor facilidad.

Si desarrollas una app cliente que administra archivos o documentos, puedes integrarla con el framework de acceso al almacenamiento con solo usar los nuevos intents CREATE_DOCUMENT o OPEN_DOCUMENT para abrir o crear archivos. El sistema muestra automáticamente la IU estándar para explorar documentos, incluidos todos los proveedores de documentos disponibles.

Puedes integrar tu app cliente una vez para todos los proveedores, sin ningún código específico de proveedor. A medida que los usuarios agreguen o quiten proveedores, continuarán teniendo acceso a sus servicios preferidos desde tu app, sin que se necesiten cambios ni actualizaciones en el código.

El marco de trabajo de acceso al almacenamiento está integrado con el intent GET_CONTENT existente, por lo que los usuarios también tienen acceso a todo su contenido y fuentes de datos anteriores desde la nueva IU del sistema para navegar. Las apps pueden seguir usando GET_CONTENT para permitir que los usuarios importen datos. El framework de acceso al almacenamiento y la IU del sistema para la navegación permiten que los usuarios encuentren e importen sus datos desde una variedad más amplia de fuentes con mayor facilidad.

La mayoría de los dispositivos que ejecutan Android 4.4 incluirán Google Drive y almacenamiento local preintegrados como proveedores de documentos. Además, las apps de Google que funcionan con archivos usan el nuevo framework.

Sensores de bajo consumo

Procesamiento de sensores por lotes

Android 4.4 presenta compatibilidad de plataforma con el procesamiento de sensores de hardware por lotes, una nueva optimización que puede reducir drásticamente la energía consumida por las actividades de sensores en curso.

Con el procesamiento por lotes de sensores, Android funciona con el hardware del dispositivo para recopilar y entregar eventos de sensores de manera eficiente en lotes, en lugar de hacerlo de forma individual a medida que se detectan. De esta manera, el procesador de la aplicación del dispositivo permanece en un estado inactivo de bajo consumo hasta que se entregan los lotes. Puedes solicitar eventos en lotes de cualquier sensor mediante un objeto de escucha de eventos estándar y puedes controlar el intervalo en el que recibes lotes. También puedes solicitar la entrega inmediata de eventos entre ciclos de lotes.

El procesamiento de sensores por lotes es ideal para casos de uso de bajo consumo y larga duración como entrenamiento, seguimiento de ubicación, supervisión y más. Puede hacer que tu app sea más eficiente y te permite hacer un seguimiento de los eventos de sensores de forma continua, incluso cuando la pantalla está apagada y el sistema suspendido.

Actualmente, el procesamiento de sensores por lotes está disponible en Nexus 5. Estamos trabajando con nuestros socios de chipset para llevarlo a más dispositivos lo antes posible.

Un dispositivo móvil que muestra la compatibilidad con el nuevo detector de pasos Dispositivo móvil que muestra la nueva asistencia para el contador de pasos

Moves y Runtastic Pedometer usan el detector de pasos de hardware para ofrecer servicios de larga duración y de baja energía.

Detector y contador de pasos

Android 4.4 también agrega compatibilidad de plataforma con dos nuevos sensores compuestos (detector y contador de pasos), que permiten que tu app realice un seguimiento de los pasos cuando el usuario camina, corre o sube las escaleras. Estos nuevos sensores se implementan en el hardware para lograr un bajo consumo de energía.

El detector de pasos analiza la entrada del acelerómetro para reconocer el momento en que el usuario realiza un paso y, luego, activa un evento con cada paso. El contador de pasos realiza un seguimiento de la cantidad total de pasos desde el último reinicio del dispositivo y activa un evento con cada cambio en el recuento de pasos. Debido a que la administración de sensores y lógica está integrada en la plataforma y el hardware subyacente, no es necesario que mantengas tus propios algoritmos de detección en la app.

Los sensores del detector y el contador de pasos están disponibles en el Nexus 5. Estamos trabajando con nuestros socios de chipset para llevarlos a nuevos dispositivos lo antes posible.

Proveedor de SMS

Si desarrollas una app de mensajería que usa SMS o MMS, ahora puedes usar un proveedor de SMS compartidos y nuevas APIs para administrar el almacenamiento y la recuperación de mensajes de tu app. El nuevo proveedor de SMS y las APIs definen un modelo de interacción estandarizado para todas las apps que manejan mensajes SMS o MMS.

Junto con el nuevo proveedor y las nuevas API, Android 4.4 presenta nuevas semánticas para recibir mensajes y escribir en el proveedor. Cuando se recibe un mensaje, el sistema lo enruta directamente a la app de mensajería predeterminada del usuario con el intent SMS_DELIVER nuevo. Otras apps aún pueden escuchar mensajes entrantes con el intent SMS_RECEIVED. Además, el sistema ahora permite que solo la app predeterminada escriba datos de mensajes al proveedor, aunque otras apps pueden leerlos en cualquier momento. Las apps que no tienen la configuración predeterminada del usuario aún pueden enviar mensajes; el sistema se encarga de escribir esos mensajes para el proveedor en nombre de la app, de modo que los usuarios puedan verlos en la app predeterminada.

El proveedor y la semántica nuevos ayudan a mejorar la experiencia del usuario cuando se instalan varias apps de mensajería, y te ayudan a compilar nuevas funciones de mensajería con API totalmente compatibles y compatibles con versiones futuras.

Nuevas formas de compilar apps fabulosas

Dispositivo móvil que muestra la nueva función del modo envolvente

Un nuevo modo envolvente permite que las apps usen cada píxel de la pantalla para mostrar contenido y capturar eventos táctiles.

Modo envolvente de pantalla completa

Ahora las apps pueden usar cada píxel de la pantalla del dispositivo para mostrar el contenido y capturar eventos táctiles. Android 4.4 agrega un nuevo modo envolvente de pantalla completa que te permite crear IU sin márgenes que llegan de un extremo a otro en teléfonos y tablets, y oculta toda la IU del sistema, como la barra de estado y la barra de navegación. Es ideal para contenido visual enriquecido, como fotos, videos, mapas, libros y juegos.

En el nuevo modo, la IU del sistema permanece oculta, incluso mientras los usuarios interactúan con tu app o juego. Puedes capturar eventos táctiles desde cualquier parte de la pantalla, incluso áreas que, de otro modo, estarían ocupadas por las barras del sistema. Esto te brinda una excelente manera de crear una IU más grande, enriquecida y envolvente en tu app o juego, y también reducir la distracción visual.

Para garantizar que los usuarios siempre tengan un acceso fácil y coherente a la IU del sistema desde el modo envolvente de pantalla completa, Android 4.4 admite un nuevo gesto: en el modo envolvente, un deslizamiento en el borde desde la parte superior o inferior de la pantalla ahora muestra la IU del sistema.

Para volver al modo envolvente, los usuarios pueden tocar la pantalla fuera de los límites de la barra o esperar un período breve hasta que las barras se oculten automáticamente. Para ofrecer una experiencia del usuario coherente, el nuevo gesto también funciona con los métodos anteriores de ocultar la barra de estado.

Framework de transiciones para escenas animadas

La mayoría de las apps estructuran sus flujos en torno a varios estados clave de la IU que exponen diferentes acciones. Muchas apps también usan animación para ayudar a los usuarios a comprender su progreso en esos estados y las acciones disponibles en cada uno. Para facilitar la creación de animaciones de alta calidad en tu app, Android 4.4 presenta un nuevo framework de transiciones.

El framework de transiciones te permite definir escenas (en general, jerarquías de vistas y transiciones) que describen cómo animar o transformar las escenas cuando el usuario entra en ellas o sale de ellas. Puedes usar varios tipos de transición predefinidos para animar tus escenas según propiedades específicas, como los límites de diseño o la visibilidad. También hay un tipo de transición automática que atenúa, mueve y cambia el tamaño de las vistas durante un cambio de escena. Además, puedes definir transiciones personalizadas que animen las propiedades más importantes para tu app e incorporar tus propios estilos de animación si es necesario.

Con el framework de transiciones, también puedes animar los cambios en tu IU sobre la marcha, sin necesidad de definir escenas. Por ejemplo, puedes realizar una serie de cambios en una jerarquía de vistas y, luego, hacer que TransitionManager ejecute automáticamente una transición retrasada en esos cambios.

Una vez que hayas configurado las transiciones, será sencillo invocarlas desde tu app. Por ejemplo, puedes llamar a un solo método para comenzar una transición, realizar varios cambios en tu jerarquía de vistas y, en el siguiente fotograma, las animaciones comenzarán automáticamente con los cambios que especificaste.

IU de sistema translúcida

Las apps pueden usar nuevos estilos de ventana para solicitar barras de sistema translúcidas.

Para obtener un control personalizado de las transiciones que se ejecutan entre escenas específicas en el flujo de tu aplicación, puedes usar TransitionManager. TransitionManager te permite definir la relación entre escenas y las transiciones que se ejecutan para cambios de escena específicos.

Estilo de IU de sistema translúcida

Para aprovechar al máximo tu contenido, ahora puedes usar nuevos temas y estilos de ventana a fin de solicitar una IU del sistema translúcida, incluidas la barra de estado y la de navegación. Para garantizar la legibilidad de los botones de la barra de navegación o la información de la barra de estado, se muestran gradientes sutiles detrás de las barras del sistema. Un caso de uso típico sería una app que debe mostrarse a través de un fondo de pantalla.

Acceso mejorado a notificaciones

Los servicios de objetos de escucha de notificaciones ahora pueden ver más información sobre las notificaciones entrantes que se construyeron con las APIs del compilador de notificaciones. Los servicios de escucha pueden acceder a las acciones de una notificación, así como a nuevos campos adicionales (texto, ícono, imagen, progreso, cronómetro y muchos más) a fin de extraer información más limpia sobre la notificación y presentarla de otra manera.

Logotipo de Chromium WebView

WebView basado en Chromium

Android 4.4 incluye una implementación completamente nueva de WebView basada en Chromium. El nuevo componente WebView basado en Chromium te brinda los estándares de compatibilidad, rendimiento y compatibilidad más recientes para compilar y mostrar contenido basado en la Web.

Este componente también ofrece una amplia compatibilidad con HTML5, CSS3 y JavaScript. Es compatible con la mayoría de las funciones HTML5 disponibles en Chrome para Android 30. También incluye una versión actualizada del motor de JavaScript (V8) que ofrece un rendimiento de JavaScript considerablemente mejorado.

Además, el nuevo Chromium WebView admite la depuración remota mediante las herramientas para desarrolladores de Chrome. Por ejemplo, puedes usar las Herramientas para desarrolladores de Chrome en tu máquina de desarrollo para inspeccionar, depurar y analizar tu contenido de WebView en directo en un dispositivo móvil.

El nuevo componente WebView basado en Chromium se incluye en todos los dispositivos compatibles que ejecutan Android 4.4 y versiones posteriores. Puedes aprovechar el nuevo WebView de inmediato, con modificaciones mínimas en las apps y el contenido existentes. En la mayoría de los casos, tu contenido se migrará a la nueva implementación sin problemas.

Nuevas capacidades multimedia

Grabación de pantalla

Ahora es fácil crear videos de alta calidad de tu app directamente desde tu dispositivo Android. Android 4.4 agrega compatibilidad con la grabación de pantalla y proporciona una utilidad de grabación de pantalla que te permite iniciar y detener la grabación en un dispositivo que está conectado a tu entorno de SDK de Android a través de USB. Es una excelente forma nueva de crear instructivos y explicaciones para tu app, materiales de prueba, videos de marketing y mucho más.

Con la utilidad de grabación de pantalla, puedes capturar videos del contenido de la pantalla del dispositivo y almacenarlo como un archivo MP4. Puedes grabar en cualquier resolución y tasa de bits compatibles con el dispositivo que desees, y el resultado conservará la relación de aspecto de la pantalla. De forma predeterminada, la utilidad selecciona una resolución igual o cercana a la resolución de pantalla del dispositivo en la orientación actual. Cuando termines de grabar, puedes compartir el video directamente desde tu dispositivo o transferir el archivo MP4 a tu computadora host para posproducción.

Si la app reproduce video o cualquier otro contenido protegido que no quieras que capture la grabadora de pantalla, puedes usar SurfaceView.setSecure() para marcar el contenido como seguro.

Puedes acceder a la grabación de pantalla mediante la herramienta adb incluida en el SDK de Android, utilizando el comando adb shell screenrecord. También puedes iniciarla a través de logcat en Android Studio.

Cambio de resolución mediante reproducción adaptativa

Android 4.4 ofrece compatibilidad formal para la reproducción adaptable en el marco de trabajo multimedia de Android. La reproducción adaptable es una función opcional de los decodificadores de video para MPEG-DASH y otros formatos que permite cambiar la resolución sin problemas durante la reproducción. El cliente puede comenzar a transmitir los fotogramas de video de entrada del decodificador con una resolución nueva, y la resolución de los búferes de salida cambia automáticamente, sin generar una brecha importante.

El cambio de resolución en Android 4.4 permite que las apps de música ofrezcan una experiencia de video en streaming significativamente mejor. Las apps pueden comprobar la compatibilidad con la reproducción adaptable durante el tiempo de ejecución mediante las APIs existentes e implementar el cambio de resolución con las nuevas APIs que se introdujeron en Android 4.4.

Encriptación común para DASH

Android ahora admite la encriptación común (CENC) para MPEG-DASH, lo que proporciona un esquema DRM multiplataforma estándar para administrar la protección de contenido. Las apps pueden aprovechar la CENC a través del framework DRM modular y las APIs de la plataforma de Android para admitir DASH.

Transmisión en vivo HTTP

Android 4.4 actualiza la compatibilidad de HTTP Live Streaming (HLS) de la plataforma a un superconjunto de la versión 7 de la especificación de HLS (versión 4 del protocolo). Consulta el borrador de IETF para obtener más detalles.

Tunelización de audio a DSP

Para la reproducción de audio de alto rendimiento y bajo consumo, Android 4.4 agrega compatibilidad de plataforma con la tunelización de audio a un procesador de señales digitales (DSP) en el chipset del dispositivo. Con la tunelización, los efectos de decodificación y salida de audio se descargan a la DSP, lo que activa el procesador de la aplicación con menos frecuencia y usa menos batería.

La tunelización de audio puede mejorar considerablemente la duración de batería en casos de uso, como escuchar música con auriculares con la pantalla apagada. Por ejemplo, con la tunelización de audio, Nexus 5 ofrece un tiempo total de reproducción de audio fuera de la red de hasta 60 horas, lo que representa un aumento de más del 50% en comparación con el audio no tunelizado.

Las aplicaciones multimedia pueden aprovechar la tunelización de audio en dispositivos compatibles sin necesidad de modificar el código. El sistema aplica la tunelización para optimizar la reproducción de audio siempre que esté disponible en el dispositivo.

Visualizador en el que se muestra el efecto de audio del amplificador de volumen.

Visualización de cómo el efecto LoudnessEnhancer puede hacer más audible el contenido de voz.

Para la tunelización de audio se requiere compatibilidad en el hardware del dispositivo. Actualmente, la tunelización de audio está disponible en Nexus 5. Estamos trabajando con nuestros socios de conjuntos de chips para que esté disponible en más dispositivos lo antes posible.

Monitorización de audio

Las apps pueden usar nuevas herramientas de supervisión en el efecto Visual para obtener actualizaciones sobre los niveles máximos y de RMS de cualquier audio que se esté reproduciendo en el dispositivo. Por ejemplo, puedes usar esta función de forma creativa en visualizadores de música o implementar la medición de reproducción en un reproductor multimedia.

Amplificador de volumen

Las aplicaciones de reproducción multimedia pueden aumentar el volumen del contenido hablado mediante el nuevo efecto LoudnessEnhancer, que actúa como compresor con constantes de tiempo que se ajustan específicamente para el habla.

Marcas de tiempo de audio para sincronización AV mejorada

El framework de audio ahora puede informar marcas de tiempo de presentación de la HAL de salida de audio a las aplicaciones, para una mejor sincronización de audio y video. Las marcas de tiempo de audio permiten que tu app determine cuándo se presentará (o se presentó) al usuario un fotograma de audio específico fuera del dispositivo. Puedes usar la información de la marca de tiempo para sincronizar el audio con los fotogramas de video de manera más precisa.

Wi-Fi CERTIFIED Miracast™

Los dispositivos Android 4.4 ahora pueden recibir la certificación de la especificación Wi-Fi Display de Wi-Fi Alliance como compatibles con Miracast. A fin de facilitar las pruebas, la nueva opción para desarrolladores de pantallas inalámbricas expone controles y ajustes de configuración avanzados para la certificación de pantalla inalámbrica. Puedes acceder a la opción en Configuración > Opciones para desarrolladores > Certificación de pantalla inalámbrica. Nexus 5 es un dispositivo de pantalla inalámbrica con certificación Miracast.

Procesamiento de RenderScript

Gráfico de optimizaciones de Renderscipt

Comparativas de rendimiento para Android 4.4 en relación con Android 4.3, ejecutadas en los mismos dispositivos (Nexus 7 y Nexus 10).

Mejoras continuas del rendimiento

Cuando tus apps usen RenderScript, se beneficiarán del ajuste de rendimiento continuo en el entorno de ejecución de RenderScript, sin necesidad de una recompilación. En el gráfico de la derecha, se muestran mejoras de rendimiento en Android 4.4 en dos chipsets populares.

Aceleración de GPU

Cualquier app que use RenderScript en un dispositivo compatible se beneficia de la aceleración de GPU, sin cambios en el código ni recompilación. Desde que en Nexus 10 se presentó por primera vez la aceleración de GPU de RenderScript, varios otros socios de hardware agregaron compatibilidad.

Ahora, con Android 4.4, la aceleración de GPU está disponible en Nexus 5, así como en Nexus 4, Nexus 7 (2013) y Nexus 10. Estamos trabajando con nuestros socios para llevarla a más dispositivos lo antes posible.

RenderScript en el Android NDK

Ahora puedes aprovechar RenderScript directamente desde tu código nativo. Una nueva API de C++ en el kit de desarrollo nativo (NDK) de Android te permite acceder a la misma funcionalidad de RenderScript disponible a través de las API de framework, incluidas las funciones intrínsecas de secuencias de comandos, los kernels personalizados y mucho más.

Si tienes que manejar tareas grandes y de alto rendimiento en el código nativo, puedes realizarlas con RenderScript e integrarlas a tu código nativo. RenderScript ofrece un gran rendimiento en una amplia variedad de dispositivos, con compatibilidad automática para CPUs, GPU y otros procesadores de varios núcleos.

Cuando compilas una app que usa RenderScript a través del NDK, puedes distribuirla a cualquier dispositivo con Android 2.2 o versiones posteriores, al igual que con la biblioteca de compatibilidad de RenderScript disponible para las APIs del framework.

Gráficos

GLES2.0 SurfaceFlinger

Android 4.4 actualiza su SurfaceFlinger de OpenGL ES 1.0 a OpenGL ES 2.0.

Compatibilidad con el nuevo compositor de hardware para visualizaciones virtuales

La versión más reciente de Android Hardware Composer, HWComposer 1.3, admite la composición de hardware de una pantalla virtual además de la pantalla principal externa (p.ej., HDMI), y mejoró la interoperabilidad con OpenGL ES.

Nuevos tipos de conectividad

Nuevos perfiles de Bluetooth

Compatibilidad con Android 4.4 con dos perfiles de Bluetooth nuevos para permitir que las apps admitan un rango más amplio de interacciones multimedia y de bajo consumo. Bluetooth HID sobre GATT (HOGP) brinda a las apps un vínculo de baja latencia con dispositivos periféricos de bajo consumo, como mouse, joysticks y teclados. Bluetooth MAP permite que tus apps intercambien mensajes con un dispositivo cercano, por ejemplo, una terminal automotriz para manos libres, o bien otro dispositivo móvil. Como extensión de Bluetooth AVRCP 1.3, ahora los usuarios pueden establecer el volumen absoluto del sistema desde sus dispositivos Bluetooth.

La compatibilidad de plataforma con HOGP, MAP y AVRCP se basa en la pila Bluetooth Bluedroid presentada por Google y Broadcom en Android 4.2. La asistencia está disponible de inmediato en dispositivos Nexus y otros dispositivos compatibles con Android que ofrecen capacidades de Bluetooth compatibles.

Dispositivos IR Blaster

Android 4.4 presenta compatibilidad de plataforma con plaquetas IR integrados, junto con una nueva API y un servicio del sistema que te permiten crear apps para aprovecharlos.

Con la nueva API, puedes compilar apps que permitan a los usuarios controlar de forma remota TVs, sintonizadores, interruptores y otros dispositivos electrónicos cercanos. La API permite que tu app verifique si el teléfono o la tablet tienen un emisor infrarrojo, consultar las frecuencias de los operadores y, luego, enviar señales infrarrojas.

Como la API es estándar en los dispositivos Android que ejecutan Android 4.4 o versiones posteriores, tu app puede admitir la mayor variedad de proveedores posible sin escribir código de integración personalizado.

Compatibilidad con Wi-Fi TDLS

Android 4.4 presenta una manera sencilla de transmitir contenido multimedia y otros datos más rápido entre dispositivos que ya se encuentran en la misma red Wi-Fi mediante la compatibilidad con la configuración de vínculos directos por túnel (TDLS) de Wi-Fi.

Accesibilidad

Configuración de todo el sistema para subtítulos opcionales

Android 4.4 ahora admite una mejor experiencia de accesibilidad en las apps porque agrega preferencias de subtítulos en todo el sistema. Los usuarios pueden ir a Configuración > Accesibilidad > Subtítulos para configurar preferencias globales de subtítulos, como si se mostrarán subtítulos y qué idioma, tamaño del texto y estilo de texto usar.

Las apps que usan video ahora pueden acceder a la configuración de subtítulos del usuario y ajustar la presentación para que satisfaga sus preferencias. Una nueva API de administrador de subtítulos te permite verificar y supervisar las preferencias de subtítulos del usuario. El administrador de subtítulos te proporciona el estado de subtítulos preferido del usuario, así como la configuración regional, el factor de escala y el estilo de texto preferidos. El estilo de texto incluye colores de primer y segundo plano, propiedades de bordes y tipo de letra.

Dispositivo móvil con orientación horizontal y muestra subtítulos con las preferencias de subtítulos de todo el sistema

Las apps ahora pueden consultar las preferencias de subtítulos de todo el sistema del usuario. En la configuración, se muestra un ejemplo del estilo de visualización esperado.

Además, las apps que usan VideoView pueden usar una API nueva para pasar una transmisión de subtítulos junto con una transmisión de video por Internet para el procesamiento. El sistema administra automáticamente la visualización de los subtítulos en los fotogramas de video según la configuración del usuario para todo el sistema. Actualmente, VideoView admite la visualización automática de subtítulos solo en formato WebVTT.

Todas las apps que muestran subtítulos deben asegurarse de revisar las preferencias de subtítulos del usuario para todo el sistema y procesar los subtítulos con la mayor precisión posible según esas preferencias. Para obtener más estadísticas sobre cómo deberían verse las combinaciones específicas de parámetros de configuración, puedes obtener una vista previa de los subtítulos en diferentes idiomas, tamaños y estilos en la app de Configuración.

Las Enhanced Accessibility API

Android 4.4 extiende las APIs de accesibilidad para admitir una descripción semántica y estructural más precisa y una observación de los elementos en pantalla. Con las nuevas APIs, los desarrolladores pueden mejorar la calidad de los comentarios accesibles proporcionando servicios de accesibilidad con más información sobre los elementos en pantalla.

En los nodos de accesibilidad, los desarrolladores ahora pueden determinar si un nodo es una ventana emergente, obtener su tipo de entrada y mucho más. También puedes usar nuevas APIs para trabajar con nodos que contienen información en forma de cuadrícula, como listas y tablas. Por ejemplo, ahora puedes especificar nuevas acciones admitidas, información de recopilación, modos de regiones activas y mucho más.

Los nuevos eventos de accesibilidad permiten a los desarrolladores seguir más de cerca los cambios que ocurren en el contenido de la ventana, y ahora pueden escuchar los cambios en el modo de exploración táctil del dispositivo.

Compatibilidad con usuarios internacionales

Duplicación de elementos de diseño para configuraciones regionales RTL

Si tu app está orientada a usuarios que usan alfabetos de derecha a izquierda, puedes usar una nueva API para declarar que un elemento de diseño se debe duplicar automáticamente cuando la configuración regional del usuario incluye un idioma de derecha a izquierda.

La declaración de duplicación automática de un elemento de diseño te ayuda a evitar la duplicación de elementos en tu app y reduce el tamaño de tu APK. Cuando tienes elementos de diseño reutilizables para las presentaciones de izquierda a derecha y de derecha a izquierda, puedes declarar las versiones predeterminadas como duplicadas automáticamente y, luego, omitir esos elementos de los recursos de derecha a izquierda.

La opción Forzar diseño der. a izq. facilita probar la localización de tu app.

Puedes declarar varios tipos de elementos de diseño para que se dupliquen automáticamente en el código de tu aplicación, como mapa de bits, nine-patch, capa, lista de estado y otros elementos de diseño. También puedes declarar un elemento de diseño para que se duplique automáticamente en tus archivos de recursos usando un atributo nuevo.

Forzar diseño RTL

Para facilitar la prueba y depuración de problemas de duplicación de diseño sin cambiar a un idioma de derecha a izquierda, Android incluye una nueva opción para desarrolladores que permite forzar la dirección del diseño de derecha a izquierda en todas las apps.

La opción Force RTL layout cambia el dispositivo al diseño de derecha a izquierda para todas las configuraciones regionales y muestra texto en tu idioma actual. De esta manera, puedes detectar problemas de diseño en tu app, sin tener que mostrarla en un idioma de derecha a izquierda. Puedes acceder a la opción en Configuración > Opciones para desarrolladores > Forzar diseño der. a izq.

Mejoras de seguridad

SELinux (modo de cumplimiento)

Android 4.4 actualiza su configuración de SELinux de "permisivo" a "forzar". Esto significa que se bloquearán los posibles incumplimientos de políticas dentro de un dominio SELinux que tenga una política de aplicación.

Algoritmos criptográficos mejorados

Android mejoró su seguridad aún más mediante el agregado de compatibilidad con dos algoritmos criptográficos más. Se agregó compatibilidad con el algoritmo de firma digital de curva elíptica (ECDSA) al proveedor de almacenes de claves para mejorar la seguridad de la firma digital, aplicable a situaciones como la firma de una aplicación o una conexión de datos. La función de derivación de claves Scrypt se implementa para proteger las claves criptográficas que se usan en la encriptación de todo el disco.

Otras mejoras

En dispositivos de varios usuarios, las VPN ahora se aplican por usuario. Esto puede permitir que un usuario enrute todo el tráfico de red a través de una VPN sin afectar a otros usuarios en el dispositivo. Además, Android ahora admite FORTIFY_SOURCE de nivel 2, y todo el código se compila con esas protecciones. Se mejoró FORTIFY_SOURCE para que funcione con Clang.

Herramientas para analizar el uso de la memoria

Procstats

Una nueva herramienta llamada procstats te ayuda a analizar los recursos de memoria que usa tu app, así como los recursos que usan otras apps y servicios que se ejecutan en el sistema.

Procstats realiza un seguimiento de cómo se ejecutan las apps a lo largo del tiempo y proporciona datos sobre la duración de las ejecuciones y el uso de la memoria para ayudar a determinar la eficacia del rendimiento. Esto es muy importante para las apps que inician servicios que se ejecutan en segundo plano, ya que te permite supervisar cuánto tiempo se ejecutan y cuánta RAM consumen mientras lo hacen. Procstats también recopilará datos para las aplicaciones en primer plano sobre el uso de la memoria a lo largo del tiempo para determinar el perfil de memoria general de la app.

Procstats puede ayudarte a identificar los servicios en segundo plano que inicia tu app. Puedes hacer un seguimiento de cuánto tiempo se ejecutan esos servicios y cuánta RAM usan. Procstats también te permite generar perfiles de tu app mientras está en primer plano usando el uso de memoria con el tiempo para determinar el perfil de memoria general.

La nueva herramienta procstats te permite verificar el uso de memoria de apps y servicios a lo largo del tiempo.

La herramienta mejorada meminfo te permite ver detalles del uso de la memoria de una app.

Puedes acceder a procstats desde la herramienta adb incluida en el SDK de Android, adb shell dumpsys procstats. Además, para la generación de perfiles en el dispositivo, consulta la opción Process Stats para desarrolladores a continuación.

Creación de perfiles y estado de memoria en el dispositivo

Android 4.4 incluye una nueva opción para desarrolladores que facilita el análisis del perfil de memoria de tu app mientras se ejecuta en cualquier dispositivo o emulador. Resulta muy útil obtener una vista del uso de memoria y el rendimiento de tu app en dispositivos con poca memoria RAM. Puedes acceder a la opción en Configuración > Opciones para desarrolladores > Estadísticas de proceso.

Dispositivos móviles que muestran la nueva opción Process Stats Información sobre el uso en dispositivos móviles en la nueva opción Process Stats

Las estadísticas de procesos son una forma conveniente de comprobar el uso de memoria de tu app. Podrás ver cómo se compara tu app con otras y acercar datos específicos de la app o sus servicios en segundo plano.

La opción Process Stats te muestra una variedad de métricas de alto nivel sobre el uso de memoria de tu app, según los datos recopilados con el nuevo servicio procstats. En la pantalla principal, puedes ver un resumen del estado de la memoria del sistema. El verde indica un uso relativo de RAM bajo, el amarillo indica un uso moderado y el rojo un uso alto (crítico).

Debajo del resumen, hay una lista que incluye la carga de memoria del sistema de cada app. Para cada app, la barra azul indica la carga de memoria calculada relativa (tiempo de ejecución x avg_pss) de su proceso, y un porcentaje indica la cantidad relativa de tiempo empleado en segundo plano. Puedes filtrar la lista para mostrar solo los procesos en primer plano, en segundo plano o en caché, y puedes incluir o excluir procesos del sistema. También puedes cambiar la duración de los datos recopilados a 3, 6, 12 o 24 horas, y puedes incluir o excluir la memoria uss.

Para ver con más detalle el uso de memoria de una app específica por separado, presiona la app. Para cada app, ahora podrás ver un resumen de la memoria consumida y el porcentaje del intervalo de recolección en el que se ejecutó la app. También puedes ver el uso promedio y máximo durante el período de recopilación, debajo de los servicios de la app y el porcentaje de tiempo que han estado ejecutándose.

Analizar tu app con los datos de Process Stats puede revelar problemas y sugerir posibles optimizaciones para ella. Por ejemplo, si tu app se ejecuta más tiempo de lo que debería o usa demasiada memoria durante un período, es posible que haya errores en tu código que puedes resolver para mejorar su rendimiento, en especial cuando se ejecuta en un dispositivo con poca memoria RAM.