Android KitKat

Android 4.4 en teléfonos y tablets

Bienvenido a Android 4.4 KitKat.

Gracias a Android KitKat, se puede disfrutar de todas las funciones más innovadoras, fabulosas y útiles de Android en 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 de manera receptiva en una variedad de dispositivos mucho más amplia; se incluyen millones de dispositivos de nivel de entrada de todo el mundo con capacidades de hasta solo 512 MB de memoria RAM.

KitKat optimiza cada componente principal para reducir el uso de memoria e introduce nuevas API y herramientas a fin de ayudarte a crear aplicaciones innovadoras, receptivas u eficientes en términos de uso de la memoria.

Los OEM que creen la próxima generación de dispositivos Android pueden aprovechar las recomendaciones y opciones orientadas para ejecutar Android 4.4 de manera eficaz, incluso en dispositivos de memoria reducida. El ajuste de caché de código JIT de Dalvik, la fusión de la misma página de kernel (KSM), el intercambio a zRAM y otras optimizaciones ayudan a administrar la memoria. Las nuevas opciones de configuración permiten que los OEM optimicen niveles de memoria insuficiente para los procesos, configuren tamaños de caché de gráficos y controlen la recuperación de memoria, entre otras posibilidades.

En Android en sí, los cambios del sistema mejoran la administración de la memoria y reducen la superficie de memoria. Los procesos principales del sistema se optimizan para recurrir a menos montones y ahora protegen de manera más incisiva la memoria del sistema ante aplicaciones que consumen grandes cantidades de memoria RAM. Cuando se inician varios servicios al mismo tiempo (por ejemplo, cuando cambia la conectividad de la red), Android ahora ejecuta los servicios en serie y en grupos reducidos para evitar picos máximos de demanda de memoria.

Para los desarrolladores, Android 4.4 ayuda a ofrecer apps que funcionen con eficacia y receptividad 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 funciones con gran consumo de memoria conforme sea necesario, según el caso de uso para el cual desees brindar respaldo en dispositivos de nivel de entrada. Obtén más información sobre cómo optimizar tus apps para dispositivos de memoria reducida aquí.

Las nuevas herramientas también te brindan información valiosa sobre el uso de memoria de tu app. La herramienta procstats proporciona información detallada sobre el uso de la memoria con el paso del tiempo, con tiempos de ejecución y superficie de memoria para las apps en primer plano y los servicios en segundo plano. Otra opción nueva disponible para desarrolladores es la vista en el dispositivo. La herramienta meminfo se ha mejorado para que sea más simple detectar tendencias y problemas de memoria, y expone 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 con transacciones basadas en NFC seguras por medio de la emulación de tarjeta de host (HCE) para pagos, programas de fidelidad, acceso con tarjeta, pases de transporte y otros servicios personalizados. Con la HCE, cualquier aplicación en un dispositivo Android puede emular una tarjeta NFC inteligente, lo cual permite que los usuarios inicien transacciones con una app de su preferencia, sin necesidad de contar con un elemento seguro (SE) aprovisionado en el dispositivo. Las apps también pueden usar un nuevo modo de lector para funcionar como lectores de tarjetas HCE y otras transacciones basadas en NFC.

Gracias a la HCE de Android, se emulan tarjetas inteligentes basadas en ISO/IEC 7816 que usan el protocolo ISO/IEC 14443-4 (ISO-DEP) sin contacto para la transmisión. En la actualidad, estas tarjetas se usan en muchos sistemas; entre estos se incluye EMVCO, la infraestructura de pago NFC actual. Android usa identificadores de aplicaciones (AID) tal como se define en la norma ISO/IEC 7816-4 como base para dirigir las transacciones hacia las aplicaciones de 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”). En los casos en los cuales varias apps admiten el mismo AID en la misma categoría, Android muestra un cuadro de diálogo que permite al usuario elegir la app que usará.

Cuando el usuario usa la función de presionar para pagar en una terminal de punto de venta, el sistema extrae el AID preferido y dirige la transacción hacia la aplicación correcta. La app lee los datos de la transacción y puede usar cualquier servicio basado en la red o local 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 se encuentra ampliamente disponible en la mayoría de los controladores NFC, que ofrecen compatibilidad dinámica para transacciones HCE y SE. En los dispositivos con Android 4.4 que admiten NFC se incluirá la función de presionar y pagar para realizar pagos simples utilizando 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 que se imprimirán e imprimir casi cualquier clase de documento, imagen o archivo.

Android 4.4 presenta compatibilidad de plataforma nativa para impresiones, junto con API para administrarlas y agregar compatibilidad con nuevos tipos de impresoras. La plataforma ofrece un administrador de impresiones que media entre las apps que solicitan impresiones y los servicios de impresión instalados con los cuales se manejan las solicitudes para esta tarea. El administrador de impresiones ofrece servicios compartidos y una IU de sistema para imprimir, lo cual brinda a los usuarios un control uniforme sobre las impresiones desde cualquier app. También garantiza la seguridad del contenido a medida que atraviesa los diferentes procesos, desde una app hasta un servicio de impresión.

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

Los fabricantes de impresoras pueden usar nuevas API para desarrollar sus propios servicios de impresión; es decir, componentes acoplables 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 cual facilita para los usuarios la descarga e instalación de estos en sus dispositivos. Como sucede con otras apps, puedes actualizar los servicios de impresión de manera inalámbrica en cualquier momento.

Las apps cliente pueden usar las nuevas API para agregar capacidades de impresión a sus apps con mínimas modificaciones en el código. En la mayoría de los casos, se agrega una acción de impresión a la barra de acciones y una IU para elegir los elementos que desees imprimir. También se implementa API para crear trabajos de impresión, realizar consultas en el administrador de impresiones acerca del estado y cancelar trabajos. Con esto, puedes imprimir casi cualquier tipo de contenido, desde imágenes y documentos locales hasta datos de red o una vista representada sobre un elemento canvas.

Para ofrecer la máxima compatibilidad, Android usa el formato de archivo PDF como el principal para las impresiones. Antes de la impresión, la app debe generar una versión del contenido en PDF correctamente paginada. Para una mayor comodidad, la API de impresión ofrece clases auxiliares nativas y WebView para que puedas crear archivos PDF usando API de dibujo estándares de Android. Si tu app sabe cómo trazar el contenido, puede crear rápidamente un PDF para imprimirlo.

En la mayoría de los dispositivos con Android 4.4 instalado se incluirá Google Cloud Print instalado previamente 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

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

Box y otros proveedores han integrado sus servicios al framework de acceso a almacenamiento. Esto permite que los usuarios accedan de manera sencilla a sus documentos desde apps en el sistema.

Los servicios de almacenamiento local o en la nube pueden se parte de 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 API necesarias para registrar al proveedor en el sistema y administrar la búsqueda, la lectura y la escritura de documentos del proveedor. El proveedor de documentos puede ofrecer a los usuarios acceso a cualquier dato remoto o local que pueda representarse como archivo, desde texto, fotos y fondos de pantalla hasta videos, audio y otros elementos.

Si creas un proveedor de documentos para un servicio local o en la nube, puedes ofrecérselo a los usuarios como parte de tu app de Android actual. Después de descargar e instalar la app, los usuarios tendrán acceso inmediato al servicio desde cualquier app que se integre al framework. Esto puede ayudarte a adquirir exposición y aumentar la captación de usuarios, ya que pueden encontrar los servicios de forma más simple.

Si desarrollas una app cliente que permita administrar archivos o documentos, puedes integrarla con el framework de acceso a almacenamiento simplemente usando los nuevos intents CREATE_DOCUMENT o OPEN_DOCUMENT para abrir o crear archivos; el sistema automáticamente muestra la IU estándar para buscar documentos, incluidos todos los proveedores de documentos disponibles.

Puedes integrar tu cliente una sola vez para todos los proveedores sin necesidad de contar con un código específico del proveedor. A medida que los usuarios agreguen o quiten proveedores, continuarán teniendo acceso a sus servicios preferidos desde tu app, sin necesidad de implementar modificaciones ni actualizaciones en tu código.

El framework de acceso a almacenamiento está integrado con la intent existente GET_CONTENT, por lo cual los usuarios también tienen acceso a todas sus fuentes de datos y contenido anteriores desde la nueva IU de sistema para realizar búsquedas. Las apps pueden continuar usando GET_CONTENT para permitir que los usuarios importen datos. El framework de acceso a almacenamiento y la IU de sistema para búsquedas permiten que los usuarios busquen e importen datos desde una variedad más amplia de fuentes con mayor facilidad.

En la mayoría de los dispositivos con Android 4.4 instalado se incluirá Google Drive y almacenamiento local integrados previamente como proveedores de documentos, y las apps de Google que trabajan con archivos también usan el nuevo framework.

Sensores de bajo consumo

Procesamiento de sensores por lotes

En Android 4.4 se introduce compatibilidad de plataforma con el procesamiento de sensores de hardware por lotes, una nueva optimización que puede reducir considerablemente la potencia consumida por las actividades de sensores en curso.

Mediante el procesamiento de sensores por lotes, Android funciona con el hardware del dispositivo para recopilar y transferir de manera eficaz eventos de sensores en lotes, en lugar de informar los hallazgos de manera individual cuando se detectan. De esta manera, el procesador de la aplicación del dispositivo permanece en un estado inactivo de bajo consumo hasta que se envían los lotes. Puedes solicitar eventos procesados por lotes de cualquier sensor usando un receptor de eventos estándar, y puedes controlar el intervalo según el cual recibes los lotes. Además, puedes solicitar la transmisión inmediata de los eventos entre ciclos de lotes.

El procesamiento de sensores por lotes es ideal para casos de uso de bajo consumo y larga ejecución; por ejemplo, aplicaciones para ejercicios físicos, rastreo de ubicación, monitorización y más. Gracias a esto, tu app puede ser más eficaz y puedes hacer un seguimiento de los eventos de sensores de forma continua, incluso cuando la pantalla está apagada y el sistema suspendido.

Esta función está actualmente disponible en Nexus 5, y estamos trabajando con nuestros socios productores de chipsets para poder disfrutarla en más dispositivos lo más pronto posible.

Moves y Runtastic Pedometer usan el detector de pasos de hardware para ofrecer servicios de larga ejecución y bajo consumo.

Detector y contador de pasos

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

El detector de pasos analiza las entradas del acelerómetro para reconocer el momento en el cual 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 la última vez en que se reinició el dispositivo y activa un evento con cada modificación en el conteo de pasos. Debido a que la administración de la lógica y del sensor está integrada en la plataforma y en el hardware subyacente, no necesitas mantener tus propios algoritmos de detección en tu app.

Los sensores del detector y el contador de pasos están disponibles en Nexus 5, y estamos trabajando con nuestros socios productores de chipsets para poder incorporarlos a nuevos dispositivos cuanto antes.

Proveedor de SMS

Si desarrollas una app de mensajería que use SMS o MMS, ahora podrás usar un proveedor de SMS compartido y API nuevas para administrar el almacenamiento y la recuperación de los mensajes de la app. Gracias a las API y al proveedor de SMS nuevos, se define un modelo de interacción estandarizado para todas las apps que manejan mensajes de SMS o MMS.

Además de las API y del proveedor nuevos, En Android 4.4 se introduce una nueva semántica para recibir mensajes y escribir al proveedor. Cuando se recibe un mensaje, el sistema lo envía directamente a la app de mensajería predeterminada del usuario usando el nuevo intent SMS_DELIVER . Otras apps aún pueden recibir los mensajes entrantes usando la intent SMS_RECEIVED . Además, el sistema ahora permite que únicamente la app predeterminada escriba datos de mensajes al proveedor, si bien otras apps pueden leerlos en cualquier momento. Las apps que no pertenecen a la configuración predeterminada del usuario aún pueden enviar mensajes: el sistema administra la escritura de esos mensajes para el proveedor en representación de la app, de modo que los usuarios puedan verlos en la app predeterminada.

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

Nuevas formas de compilar apps fabulosas

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

Modo envolvente de pantalla completa

Ahora tus apps pueden usar cada píxel de la pantalla del dispositivo para exponer el contenido y capturar eventos táctiles. En Android 4.4 se agrega un nuevo modo envolvente de pantalla completa que te permite crear IU sin bordes que abarquen de un extremo a otro en teléfonos y tablets; esto permite ocultar toda la IU del sistema, como la barra de estado y la barra de navegación. Este modo es ideal para contenido altamente visual, como fotos, videos, mapas, libros y juegos.

En el nuevo modo, la IU del sistema permanece oculta, incluso cuando los usuarios interactúan con tu app o juego. Puedes capturar los eventos táctiles en cualquier lugar de la pantalla; incluso en áreas que, de otra manera, estarían ocupadas por las barras del sistema. De esta manera, puedes crear una IU más amplia, completa e inmersiva en tu app o juego, y también reducir la distracción visual.

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

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

Framework de transiciones para escenas animadas

En la mayoría de las apps el flujo se estructura en base a varios estados de IU claves que exponen diferentes acciones. En muchas apps también se usa la animación para que los usuarios comprendan el avance que pueden lograr en esos estados y las acciones disponibles en cada uno. Para que sea más simple crear animaciones de alta calidad en tu app, en Android 4.4 se presenta un nuevo framework de transiciones.

Este te permite definir escenas (comúnmente jerarquías de vista y transiciones) que describen la forma de animar o transformar las escenas cuando el usuario ingresa en ellas o las abandona. 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 y mueve las vistas, y también modifica su tamaño, 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 en el momento, 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 demorada en esos cambios.

Una vez que configures las transiciones, será sencillo invocarlas desde tu app. Por ejemplo, puedes llamar a un solo método para iniciar una transición, realizar varias modificaciones en la jerarquía de vistas; en el fotograma que siga, las animaciones comenzarán automáticamente a animar los cambios que hayas especificado.

IU de sistema translúcida

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

Para lograr un control personalizado de las transiciones que se ejecutan entre escenas específicas del 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 el contenido, ahora puedes usar nuevos temas y estilos de ventana a fin de solicitar una IU de sistema translúcida, incluidas la barra de estado y la de navegación. A fin de garantizar la legibilidad de la información de la barra de estado o de los botones de la barra de navegación, 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 recepción de notificaciones ahora pueden detectar más información sobre las notificaciones entrantes construidas con las API del generador de notificaciones. Los servicios de recepción pueden acceder a las acciones de una notificación, como también a nuevos campos adicionales (texto, ícono, progreso, cronómetro y muchos otros) para extraer información más depurada sobre la notificación y presentar dicha información de una manera diferente.

WebView basado en Chromium

En Android 4.4 se incluye una implementación completamente nueva de WebView basada en Chromium. El nuevo componente WebView basado en Chromium te brinda lo último en cumplimiento de estándares, rendimiento y compatibilidad para compilar y mostrar tu contenido basado en la Web.

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

A su vez, este nuevo componente es compatible con la depuración remota a través de Chrome DevTools. Por ejemplo, puedes usar Chrome DevTools en tu equipo de desarrollo para inspeccionar, depurar y analizar el 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 tengan Android 4.4 y versiones posteriores. Puedes aprovechar este nuevo componente de inmediato y con mínimas modificaciones en apps y 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 simple crear un video de alta calidad de tu app directamente desde tu dispositivo Android. En Android 4.4 se agrega compatibilidad con la grabación de pantalla y se ofrece 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 Android SDK mediante USB. Es una excelente nueva forma de crear recorridos e instructivos para tu app, materiales de prueba, videos de marketing y más.

Con la utilidad de grabación de pantalla, puedes capturar un video del contenido de la pantalla de tu dispositivo y almacenarlo en este como archivo MP4. Puedes grabar el video con cualquier resolución y tasa de bits compatible con el dispositivo que desees, y el resultando mantiene la relación de aspecto de la pantalla. Según la configuración predeterminada, la utilidad selecciona una resolución igual o similar a la resolución de pantalla del dispositivo en la orientación actual. Al finalizar la grabación, puedes compartir el video directamente desde tu dispositivo o transferir el archivo MP4 a tu equipo host para tareas de posproducción.

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

Puedes acceder a la grabación de pantalla a través de la herramienta adb incluida en Android SDK, con el comando adb shell screenrecord. También puedes ejecutarla a través del panel DDMS en Android Studio.

Cambio de resolución mediante reproducción adaptativa

En Android 4.4 se ofrece compatibilidad formal para reproducción adaptativa en el framework multimedia de Android. La reproducción adaptativa es una función opcional de los decodificadores de video para MPEG-DASH y otros formatos que permite realizar cambios de 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 un salto importante.

El cambio de resolución en Android 4.4 permite que las apps multimedia ofrezcan una experiencia de video en streaming considerablemente mejor. Las apps pueden verificar la compatibilidad de reproducción adaptativa durante el tiempo de ejecución usando las API existentes e implementar el cambio de resolución usando las nuevas API presentadas en Android 4.4.

Encriptación común para DASH

Android ahora admite la encriptación común (CENC) para MPEG-DASH, lo cual ofrece un esquema DRM multiplataforma estándar para la administración de la protección del contenido. Las apps pueden aprovechar la CENC por medio de las API de la plataforma y del framework DRM modular de Android para admitir DASH.

Transmisión en vivo HTTP

En Android 4.4 se actualiza la compatibilidad de transmisión HTTP en directo (HLS) de la plataforma a un superconjunto de la versión 7 de la especificación HLS (versión 4 del protocolo). Consulta el borrador del IETF para obtener detalles.

Tunelización de audio a DSP

Para una reproducción de audio de bajo consumo y alto rendimiento, en Android 4.4 se agrega compatibilidad de plataforma con la tunelización de audio a un procesador de señal digital (DSP) en el chipset del dispositivo. Gracias a la tunelización, los efectos de decodificación y salida de audio se descargan al DSP, lo cual permite activar el procesador de la aplicación con menor frecuencia y lograr un menor consumo de la batería.

Mediante la tunelización de audio, se puede mejorar considerablemente el rendimiento de la batería en casos de uso como el de quien escucha música con auriculares y la pantalla apagada. Por ejemplo, con la tunelización de audio, Nexus 5 ofrece un tiempo de reproducción de audio total fuera de la red de hasta 60 horas, lo cual representa un aumento de más del 50% con respecto al audio no tunelizado.

Las aplicaciones multimedia pueden aprovechar la tunelización de audio en dispositivos compatibles sin la 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 en la que se muestra la forma en que el efecto de LoudnessEnhancer puede hacer más audible el contenido hablado.

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 y estamos trabajando con nuestros socios productores de chipsets para poder disfrutar de esta función en más dispositivos lo más pronto posible.

Monitorización de audio

Las apps pueden usar nuevas herramientas de monitorización en el efecto Visualizer para obtener actualizaciones sobre los niveles máximos y de RMS de cualquier audio cuya reproducción esté en curso en el dispositivo. Por ejemplo, podrías usar esta función de manera creativa en los 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 por medio del 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 la 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ó) una trama de audio específica al usuario sin depender del dispositivo. Puedes usar la información de la marca de tiempo para sincronizar el audio con los fotogramas de video de forma más precisa.

Wi-Fi CERTIFIED Miracast™

Los dispositivos con Android 4.4 ahora pueden contar con certificación de compatibilidad con Miracast conforme a la especificación Wi-Fi Display de Wi-Fi Alliance. A fin de facilitar las pruebas, una nueva opción de desarrolladores para pantallas inalámbricas expone configuraciones y controles de configuración avanzados para esta certificación. Puedes acceder a la opción en Settings > Developer options > Wireless display certification. Nexus 5 es un dispositivo de pantalla inalámbrica con certificación de Miracast.

Procesamiento de RenderScript

Gráfico de optimizaciones de Renderscipt

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

Mejoras de rendimiento continuas

Cuando tus apps usen RenderScript, se beneficiarán con el ajuste de rendimiento continuo en el propio tiempo de ejecución de RenderScript, sin necesidad de una recompilación. En el gráfico de la derecha, se muestran aumentos 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 con la aceleración de la GPU, sin modificaciones 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 han agregado compatibilidad.

Ahora con Android 4.4, la aceleración de GPU se encuentra disponible en Nexus 5, y también en Nexus 4, 7 (2013) y 10, y estamos trabajando con nuestros socios para poder disfrutar de esta función en más dispositivos lo más pronto posible.

RenderScript en el Android NDK

Ahora puedes disfrutar de RenderScript directamente desde tu código nativo. Una nueva C++ API 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, incluidos los eventos intrínsecos de secuencias de comandos y los kernels personalizados, entre otros elementos.

Si debes administrar tareas prolongadas y de alto rendimiento en el código nativo, puedes llevarlas a cabo usando RenderScript e integrarlas a tu código nativo. RenderScript ofrece un excelente rendimiento en una amplia variedad de dispositivos, con compatibilidad automática para CPU, 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, como sucede con la biblioteca de compatibilidad de RenderScript disponible para las API de framework.

Gráficos

GLES2.0 SurfaceFlinger

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

Compatibilidad con el nuevo compositor de hardware para visualizaciones virtuales

La última versión del compositor de hardware de Android, HWComposer 1.3, admite la composición de hardware de una visualización virtual además de la visualización principal y externa (p. ej., HDMI), y ha mejorado la interoperabilidad de OpenGL ES.

Nuevos tipos de conectividad

Nuevos perfiles de Bluetooth

Android 4.4 ofrece compatibilidad con dos perfiles de Bluetooth nuevos para que las apps admitan una variedad más amplia de interacciones multimedia y de bajo consumo. El perfil Bluetooth HID sobre GATT (HOGP) ofrece a las apps un enlace de baja latencia a dispositivos periféricos de bajo consumo, como dispositivos de mouse, joysticks y teclados. El perfil Bluetooth MAP permite que las apps intercambien mensajes con un dispositivo cercano; por ejemplo, una terminal automotriz para manos libres u otro dispositivo móvil. Como extensión de Bluetooth AVRCP 1.3, los usuarios ahora pueden configurar el volumen absoluto del sistema desde los dispositivos Bluetooth.

La compatibilidad de plataforma con HOGP, MAP y AVRCP está diseñada sobre la base de la pila Bluetooth Bluedroid presentada por Google y Broadcom en Android 4.2. La compatibilidad está disponible de inmediato en los dispositivos Nexus y otros dispositivos compatibles con Android que ofrecen capacidades de Bluetooth compatibles.

Dispositivos IR Blaster

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

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

Debido a que la API forma parte de la estructura estándar en todos los dispositivos con Android 4.4 o versiones posteriores, tu app puede admitir la más amplia gama posible de proveedores sin la necesidad de escribir un código de integración personalizado.

Compatibilidad con Wi-Fi TDLS

Android 4.4 presenta una forma simple de transmitir contenido multimedia y otros datos más rápido entre dispositivos que ya se encuentren en la misma red Wi-Fi mediante la compatibilidad con la tecnología Wi-Fi Tunneled Direct Link Setup (TDLS).

Accesibilidad

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

Android 4.4 ahora admite una mejor experiencia de accesibilidad en diferentes apps agregando preferencias en todo el sistema para subtítulos. Los usuarios pueden dirigirse a Settings > Accessibility > Captions para configurar preferencias globales de subtitulado; por ejemplo, si se mostrarán subtítulos y el idioma, el tamaño del texto y el estilo textual que se usarán.

Las apps que usan video ahora pueden acceder a la configuración de subtítulos del usuario y ajustar la presentación de modo que se adecue con las preferencias del usuario. Una nueva API de administrador de subtítulos te permite revisar y controlar las preferencias de subtítulos del usuario. El administrador de subtítulos te ofrece el estado de subtítulos preferido del usuario, como también las preferencias de configuración regional, factor de escala y estilo textual. El estilo textual incluye los colores de primer y segundo plano, las propiedades de bordes y el tipo de letra.

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

Además, las apps que usan VideoView pueden emplear una nueva API para enviar una secuencia de subtitulado junto con una transmisión de video por Internet para la representación. El sistema automáticamente administra la visualización de los subtítulos en fotogramas de video según la configuración del usuario para todo el sistema. Actualmente, VideoView es compatible con la visualización automática de subtítulos en formato WebVTT únicamente.

Todas las apps que presentan subtítulos deben asegurarse de verificar las preferencias de subtítulos que eligió el usuario para todo el sistema y representar los subtítulos con la mayor precisión posible según dichas preferencias. Para obtener más información sobre cómo deberían verse las combinaciones de configuraciones específicas, puedes obtener una vista previa de los subtítulos en diferentes idiomas, tamaños y estilos en la app Settings.

Las Enhanced Accessibility API

Android 4.4 se extienden las API de accesibilidad para admitir una descripción semántica y estructural más precisa y una observación de los elementos de la pantalla. Con las nuevas API, los desarrolladores pueden mejorar la calidad de los comentarios accesibles mediante 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 un elemento emergente y obtener su tipo de entrada, entre otros aspectos. Además, puedes usar nuevas API para trabajar con nodos que contienen información en forma de cuadrícula, como listas y tablas. Por ejemplo, ahora puedes especificar nuevas acciones compatibles, información recopilada y modos de regiones activas, entre otras opciones.

Los nuevos eventos de accesibilidad permiten a los desarrolladores seguir más de cerca los cambios que tienen lugar en el contenido de la ventana, y ahora pueden recibir 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 secuencias de comandos de derecha a izquierda (RTL), 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 RTL.

La declaración de duplicación automática de un elemento de diseño te permite evitar la duplicación de recursos 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 (LTR) y RTL, puedes declarar que las versiones predeterminadas se dupliquen automáticamente y luego omitir esos elementos de diseño de los recursos RTL.

La opción Force RTL layout simplifica el procedimiento de prueba de 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; por ejemplo, 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 los archivos de recursos usando un nuevo atributo.

Diseño RTL forzoso

A fin de facilitar la prueba y depuración de problemas de duplicación de diseño sin realizar un cambio a un idioma RTL, Android incluye una nueva opción de desarrolladores para forzar la orientación del diseño RTL en todas las apps.

Con la opción Force RTL layout, el dispositivo comienza a usar el diseño RTL para todas las configuraciones regionales y muestra el texto en tu idioma actual. De esta manera, puedes detectar problemas de diseño en tu app, sin necesidad de mostrar la app en un idioma RTL. Puedes acceder a la opción en Settings > Developer options > Force RTL layout direction.

Mejoras de seguridad

SELinux (modo de cumplimiento)

Android 4.4 se actualiza la configuración SELinux de “permisivo” a “cumplimiento”. Esto significa que se bloquearán los posibles incumplimientos de políticas dentro de un dominio SELinux que tenga una política de cumplimiento.

Algoritmos criptográficos mejorados

Android mejoró su seguridad aun más mediante el agregado de compatibilidad con dos algoritmos criptográficos más. Se agregó compatibilidad con el algoritmo de firma digital con curvas elípticas (ECDSA) al proveedor de Keystore y, de esta manera, se mejoró la seguridad de las firmas digitales, 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 implementó para proteger las claves criptográficas empleadas para la encriptación de todo el disco.

Otras mejoras

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

Herramientas para analizar el uso de la memoria

Procstats

La nueva herramienta denominada procstats te ayuda a analizar los recursos de memoria que usa tu app, como también los recursos que usan otras apps y otros servicios que se ejecutan en el sistema.

Procstats realiza un seguimiento de cómo se ejecutan las apps con el paso del tiempo, lo cual ofrece datos sobre la duración de la ejecución y el uso de la memoria para determinar la eficacia del rendimiento de esas aplicaciones. Esto es muy importante para las apps que inician servicios que se ejecutan en segundo plano, ya que te permite controlar el tiempo durante el cual se ejecutan estos y cuánta memoria RAM ocupan. Con Procstats, también se recopilan datos para aplicaciones en primer plano relacionados con el uso de 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 iniciados por tu app. Puedes realizar un seguimiento del tiempo de ejecución de esos servicios y de la cantidad de memoria RAM que usan en ese período. Procstats también te permite perfilar tu app mientras esta se ejecuta en primer plano recurriendo a la información sobre el uso de la memoria a lo largo del tiempo, para determinar el perfil de memoria general.

La nueva herramienta procstats te permite controlar el uso de la memoria de las apps y los servicios con el paso del tiempo.

La herramienta mejorada meminfo te permite acceder a información detallada sobre el uso de la memoria para una app.

Puedes acceder a procstats desde la herramienta adb incluida en Android SDK, adb shell dumpsys procstats. Además, para la creación de un perfil 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 se incluye una nueva opción para desarrolladores a fin de que sea más simple analizar el perfil de memoria de tu app mientras esta se ejecuta en cualquier dispositivo o emulador. Resulta especialmente útil para ver la manera en que tu app usa la memoria y su rendimiento en dispositivos con poca memoria RAM. Puedes acceder a la opción en Settings > Developer options > Process stats

Process stats es una forma práctica de controlar el uso de memoria de tu app. Puedes comparar tu app con otras y obtener datos específicos más detallados sobre esta o los servicios que ejecuta 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 datos recopilados mediante el nuevo servicio procstats. En la pantalla principal, puedes ver un resumen del estado de la memoria del sistema. El color verde indica un uso de memoria RAM reducido durante una cantidad relativa de tiempo. El color amarillo indica un uso moderado y el rojo un uso alto (crítico).

Debajo del resumen aparece una lista en la cual figura la carga de memoria del sistema para cada app. Para cada app, la barra azul indica la carga de memoria computada relativa (tiempo de ejecución x avg_pss) de su proceso y el porcentaje indica la cantidad relativa de tiempo destinado a servicios en segundo plano. Puedes filtrar la lista para visualizar únicamente los procesos en primer y segundo plano o almacenados en caché, y puedes incluir o excluir procesos del sistema. También puedes modificar la duración de la recolección de datos a 3, 6, 12 o 24 horas, e incluir o excluir la memoria uss.

Para obtener datos más detallados sobre el uso de memoria de una app específica por separado, presiona la app. Para cada app, ahora puedes 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 observar el uso máximo y promedio durante el período de recolección y, a continuación, los servicios de la app y el porcentaje de tiempo de ejecución de dichos servicios.

Gracias al análisis de tu app por medio de los datos de Process Stats se pueden detectar problemas y sugerir posibles optimizaciones para tu app. Por ejemplo, si tu app se ejecuta durante demasiado tiempo o usa demasiada memoria durante un plazo determinado, es posible que haya errores en el código que puedas resolver para mejorar el rendimiento de esta, en especial cuando se ejecuta en un dispositivo con poca memoria RAM.