Bienvenido a Android 4.4 KitKat.
Android KitKat ofrece 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 de forma rápida, fluida y responsiva en una gama mucho más amplia de dispositivos que nunca antes, incluidos millones de dispositivos de entrada en todo el mundo que tienen tan solo 512 MB de RAM.
KitKat optimiza todos los componentes principales para reducir el uso de memoria y presenta nuevas APIs y herramientas para ayudarte a crear aplicaciones innovadoras, responsivas y eficientes en el uso de la memoria.
Los OEMs que compilan la próxima generación de dispositivos Android pueden aprovechar las recomendaciones y opciones segmentadas para ejecutar Android 4.4 de manera eficiente, incluso en dispositivos con poca memoria. La optimización de la caché de código JIT de Dalvik, la combinación de páginas del kernel (KSM), el intercambio a zRAM y otras optimizaciones ayudan a administrar la memoria. Las nuevas opciones de configuración permiten a los OEMs ajustar los niveles de falta de memoria 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 todo el sistema mejoran la administración de la memoria y reducen su huella. Los procesos principales del sistema se recortan para usar menos montón y ahora protegen de forma más agresiva la memoria del sistema de 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 inicia los servicios de forma serial, en grupos pequeños, para evitar las demandas máximas de memoria.
Para los desarrolladores, Android 4.4 te ayuda a publicar apps 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 de uso que quieras admitir en dispositivos de nivel básico. Obtén más información para 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 a lo largo del tiempo, con tiempos de ejecución y espacio en memoria para apps en primer plano y servicios en segundo plano. También hay disponible una vista en el dispositivo como una nueva opción para desarrolladores. La herramienta meminfo se mejoró para facilitar la detección de tendencias y problemas de memoria, y revela una sobrecarga de memoria adicional que no era visible anteriormente.
Nuevas capacidades de NFC a través de la emulación de tarjeta de host
Android 4.4 presenta una nueva compatibilidad de la plataforma con transacciones seguras basadas en NFC a través de la emulación de tarjetas de host (HCE) para pagos, programas de lealtad, acceso a 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 presionar para iniciar transacciones con la app que elijan. No se necesita un elemento seguro (SE) aprovisionado en el dispositivo. Las apps también pueden usar un nuevo modo de lector para actuar como lectores de tarjetas HCE y otras transacciones basadas en NFC.
La HCE de Android emula 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 de EMVCO existente. Android usa identificadores de aplicación (AID) como se define en ISO/IEC 7816-4 como base para enrutar transacciones a las aplicaciones para Android correctas.
Las apps declaran los AIDs 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 que varias apps admiten el mismo AID en la misma categoría, Android muestra un diálogo que permite al usuario elegir qué app usar.
Cuando el usuario presiona para pagar en una terminal de punto de venta, el sistema extrae el AID preferido y enruta 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 verificarla y, luego, completarla.
La HCE de Android requiere la presencia de un controlador NFC en el dispositivo. La compatibilidad con HCE ya está disponible en la mayoría de los controladores NFC, que ofrecen compatibilidad dinámica para transacciones HCE y SE. Los dispositivos Android 4.4 compatibles con NFC incluirán la función de pago sin contacto para realizar pagos fáciles con HCE.
Framework de impresión
Las apps para 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 compatibles con la impresión, los usuarios pueden descubrir las impresoras disponibles, cambiar los tamaños de papel, elegir páginas específicas para imprimir y, además, imprimir casi cualquier tipo de documento, imagen o archivo.
Android 4.4 presenta compatibilidad con la plataforma nativa para la impresión, junto con APIs para administrar la impresión y agregar nuevos tipos de compatibilidad con impresoras. La plataforma proporciona un administrador de impresión 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 la impresión, lo que les brinda a los usuarios un control coherente sobre la impresión desde cualquier app. El administrador de impresiones también garantiza la seguridad del contenido a medida que se pasa a través de los procesos, de una app a un servicio de impresión.
Los fabricantes de impresoras pueden usar nuevas APIs para desarrollar sus propios servicios de impresión: componentes conectables que agregan lógica y servicios 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 y los instalen en sus dispositivos. Al igual que con otras apps, puedes actualizar los servicios de impresión de forma 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 en el código. En la mayoría de los casos, agregarías una acción de impresión a la barra de acciones y una IU para elegir los elementos que se imprimirán. También implementarías APIs para crear trabajos de impresión, consultar el estado del administrador de impresión 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 obtener la mayor compatibilidad, Android usa PDF como su formato de archivo principal para la impresión. Antes de imprimir, la app debe generar una versión PDF del contenido con paginación adecuada. Para mayor comodidad, la API de impresión proporciona clases auxiliares nativas y de WebView para permitirte crear archivos PDF con APIs de dibujo estándar de Android. Si tu app sabe cómo dibujar el contenido, puede crear un PDF rápidamente para imprimirlo.
La mayoría de los dispositivos con Android 4.4 incluirán Google Cloud Print preinstalado como servicio de impresión, así como varias apps de Google que admiten la impresión, como Chrome, Drive, Galería y QuickOffice.
Framework de acceso a almacenamiento
Un nuevo framework de acceso al almacenamiento facilita a los usuarios navegar y abrir documentos, imágenes y otros archivos en todos sus proveedores de almacenamiento de documentos preferidos. Una IU estándar y fácil de usar les permite explorar archivos y accesos recientes de manera coherente en apps y proveedores.
Los servicios de almacenamiento local o en la nube pueden participar en este ecosistema implementando una nueva clase de proveedor de documentos que encapsule sus servicios. La clase de proveedor incluye todas las APIs necesarias para registrar el proveedor con el sistema y administrar la navegación, la lectura y la escritura de documentos en el proveedor. El proveedor de documentos puede brindarles a los usuarios acceso a cualquier dato remoto o local que se pueda representar como archivos, desde texto, fotos y fondos de pantalla hasta video, audio y mucho más.
Si compilas un proveedor de documentos para un servicio local o en la nube, puedes entregarlo 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 a tu servicio desde cualquier app que participe en el framework. Esto puede ayudarte a obtener exposición y participación de los usuarios, ya que estos 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 del proveedor. A medida que los usuarios agreguen o quiten proveedores, seguirán teniendo acceso a sus servicios preferidos desde tu app, sin necesidad de cambios ni actualizaciones en tu código.
El framework de acceso al almacenamiento está integrado en 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 la navegación. Las apps pueden seguir usando GET_CONTENT como una forma de permitir que los usuarios importen datos. El framework de acceso al almacenamiento y la IU del sistema para la navegación facilitan a los usuarios encontrar e importar sus datos desde una variedad más amplia de fuentes.
La mayoría de los dispositivos que ejecutan Android 4.4 incluirán Google Drive y el almacenamiento local preintegrados como proveedores de documentos, y las apps de Google que funcionan con archivos también usan el nuevo framework.
Sensores de bajo consumo
Procesamiento de sensores por lotes
Android 4.4 presenta compatibilidad de la plataforma con el procesamiento por lotes de sensores de hardware, una nueva optimización que puede reducir de forma significativa la energía que consumen las actividades de los 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. Esto permite que el procesador de aplicaciones del dispositivo permanezca en un estado inactivo de bajo consumo hasta que se entreguen los lotes. Puedes solicitar eventos por lotes de cualquier sensor con un objeto de escucha de eventos estándar y controlar el intervalo en el que recibes los lotes. También puedes solicitar la entrega inmediata de eventos entre ciclos por lotes.
El procesamiento por lotes de sensores es ideal para casos de uso de bajo consumo y larga duración, como el fitness, el seguimiento de ubicación, la supervisión y mucho más. Puede hacer que tu app sea más eficiente y te permite hacer un seguimiento de los eventos del sensor de forma continua, incluso mientras la pantalla está apagada y el sistema está inactivo.
Actualmente, el procesamiento por lotes de sensores está disponible en Nexus 5, y estamos trabajando con nuestros socios de chipsets para llevarlo a más dispositivos lo antes posible.
Detector y contador de pasos
Android 4.4 también agrega compatibilidad de la plataforma con dos nuevos sensores compuestos: el detector de pasos y el contador de pasos, que permiten que tu app realice un seguimiento de los pasos cuando el usuario camina, corre o sube escaleras. Estos nuevos sensores se implementan en hardware para un bajo consumo de energía.
El detector de pasos analiza la entrada del acelerómetro para reconocer cuándo el usuario dio 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 lógica y la administración de sensores están integradas en la plataforma y el hardware subyacente, no es necesario que mantengas tus propios algoritmos de detección en la app.
El detector de pasos y los sensores de contador están disponibles en el Nexus 5, y estamos trabajando con nuestros socios de conjuntos de chips para llevarlos a los dispositivos nuevos 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 compartido y APIs nuevas para administrar el almacenamiento y la recuperación de mensajes de tu app. El nuevo proveedor y las APIs de SMS definen un modelo de interacción estandarizado para todas las apps que controlan mensajes SMS o MMS.
Junto con el nuevo proveedor y las APIs, 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 nuevo intent SMS_DELIVER. Otras apps pueden detectar mensajes entrantes con el intent SMS_RECEIVED. Además, el sistema ahora solo permite que la app predeterminada escriba datos de mensajes en el proveedor, aunque otras apps pueden leer en cualquier momento. Las apps que no son las predeterminadas del usuario también pueden enviar mensajes. El sistema se encarga de escribir esos mensajes en el proveedor en nombre de la app, de modo que los usuarios puedan verlos en la app predeterminada.
El nuevo proveedor y la semántica 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 APIs compatibles con versiones anteriores y totalmente compatibles.
Nuevas formas de compilar apps fabulosas
Modo envolvente de pantalla completa
Ahora tus apps pueden usar cada píxel de la pantalla del dispositivo para mostrar tu contenido y capturar eventos táctiles. Android 4.4 agrega un nuevo modo envolvente de pantalla completa que te permite crear IUs de borde a borde en teléfonos y tablets, y ocultar 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 de tacto desde cualquier parte de la pantalla, incluso en áreas que, de otro modo, ocuparían las barras del sistema. Esto te brinda una excelente manera de crear una IU más grande, más rica y más envolvente en tu app o juego, y también reducir la distracción visual.
Para garantizar que los usuarios siempre tengan 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 lateral desde la parte superior o inferior de la pantalla ahora revela 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 para que las barras se oculten automáticamente. Para lograr una experiencia del usuario coherente, el nuevo gesto también funciona con los métodos anteriores para 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 a través de 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 marco de trabajo de transiciones.
El framework de transiciones te permite definir escenas, por lo general, jerarquías de vistas y transiciones, que describen cómo animar o transformar las escenas cuando el usuario ingresa o sale de ellas. Puedes usar varios tipos de transiciones predefinidos para animar tus escenas en función de propiedades específicas, como los límites de diseño o la visibilidad. También hay un tipo de transición automática que desvanece, mueve y cambia el tamaño de las vistas automáticamente durante un cambio de escena. Además, puedes definir transiciones personalizadas que animen las propiedades que más te interesan para tu app y puedes conectar 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 diferida 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 la jerarquía de vistas y, en el siguiente fotograma, comenzarán automáticamente las animaciones que animarán los cambios que especificaste.
Para tener un control personalizado sobre 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 las escenas y las transiciones que se ejecutan para cambios de escenas específicos.
Estilo de IU de sistema translúcida
Para obtener el mayor impacto de tu contenido, ahora puedes usar nuevos temas y estilos de ventana para solicitar una IU del sistema translúcida, incluida la barra de estado y la barra 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 necesita mostrarse en un fondo de pantalla.
Acceso mejorado a notificaciones
Los servicios de escucha de notificaciones ahora pueden ver más información sobre las notificaciones entrantes que se compilaron con las APIs del compilador de notificaciones. Los servicios de objetos 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 otros) para extraer información más clara sobre la notificación y presentarla de otra manera.
WebView basado en Chromium
Android 4.4 incluye una implementación completamente nueva de WebView basada en Chromium. La nueva WebView de Chromium te brinda la compatibilidad, el rendimiento y la compatibilidad con estándares más recientes para compilar y mostrar tu contenido web.
Este componente también ofrece una amplia compatibilidad con HTML5, CSS3 y JavaScript. Admite la mayoría de las funciones de HTML5 disponibles en Chrome para Android 30. También incluye una versión actualizada del motor de JavaScript (V8) que mejora de forma significativa el rendimiento de JavaScript.
Además, el nuevo WebView de Chromium admite la depuración remota con 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 el contenido de WebView en vivo en un dispositivo móvil.
El nuevo Chromium WebView se incluye en todos los dispositivos compatibles que ejecutan Android 4.4 y versiones posteriores. Puedes aprovechar el nuevo WebView de inmediato y con modificaciones mínimas en las apps y el contenido existentes. En la mayoría de los casos, tu contenido se migrará a la implementación nueva 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 conectado a tu entorno de SDK de Android por USB. Es una excelente forma nueva de crear recorridos y instructivos para tu app, probar materiales, 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 almacenarlos como archivos MP4 en el dispositivo. Puedes grabar en cualquier resolución y tasa de bits compatibles con el dispositivo que desees, y el resultado conserva 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 la 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 la computadora host para la postproducción.
Si tu app reproduce videos o algún otro contenido protegido que no quieres que grabe 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 el SDK de Android con el comando adb shell screenrecord. También puedes iniciarlo a través de logcat en Android Studio.
Cambio de resolución mediante reproducción adaptativa
Android 4.4 incluye compatibilidad formal con la reproducción adaptable en el framework de medios de Android. La reproducción adaptativa 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 alimentar los fotogramas de video de entrada del decodificador de una resolución nueva, y la resolución de los búferes de salida cambia automáticamente y sin una brecha significativa.
El cambio de resolución en Android 4.4 permite que las apps de contenido multimedia ofrezcan una experiencia de transmisión de video mucho mejor. Las apps pueden verificar la compatibilidad con la reproducción adaptativa durante el tiempo de ejecución con las APIs existentes y, además, 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 de DRM estándar y multiplataforma para administrar la protección del contenido. Las apps pueden aprovechar la CENC a través del framework de DRM modular de Android y las APIs de la plataforma para admitir DASH.
Transmisión en vivo HTTP
Android 4.4 actualiza la compatibilidad de la plataforma con HTTP Live Streaming (HLS) a un superconjunto de la versión 7 de la especificación de HLS (versión 4 del protocolo). Consulta el borrador del IETF para obtener más información.
Tunelización de audio a DSP
Para la reproducción de audio de alto rendimiento y menor consumo de energía, Android 4.4 agrega compatibilidad de la plataforma con el tunelización de audio a un procesador de señal digital (DSP) en el chipset del dispositivo. Con el tunelización, la decodificación de audio y los efectos de salida se transfieren al DSP, lo que activa el procesador de la aplicación con menos frecuencia y consume menos batería.
El tunelización de audio puede mejorar de forma significativa 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, el Nexus 5 ofrece un tiempo total de reproducción de audio fuera de la red de hasta 60 horas, un aumento de más del 50% en comparación con el audio sin tunelización.
Las aplicaciones multimedia pueden aprovechar el tunelización de audio en dispositivos compatibles sin necesidad de modificar el código. El sistema aplica el tunelización para optimizar la reproducción de audio siempre que esté disponible en el dispositivo.
Para la tunelización de audio se requiere compatibilidad en el hardware del dispositivo. Actualmente, el tunelización de audio está disponible en Nexus 5, y estamos trabajando con nuestros socios de chipsets 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 Visualizer para obtener actualizaciones sobre los niveles máximos y RMS de cualquier audio que se esté reproduciendo en el dispositivo. Por ejemplo, puedes usarlo de forma creativa en visualizadores de música o para implementar la medición de reproducción en un reproductor multimedia.
Amplificador de volumen
Las aplicaciones de reproducción multimedia pueden aumentar la intensidad del contenido hablado con el nuevo efecto LoudnessEnhancer, que actúa como compresor con constantes de tiempo ajustadas específicamente para la voz.
Marcas de tiempo de audio para sincronización AV mejorada
El framework de audio ahora puede informar marcas de tiempo de presentación desde el HAL de salida de audio a las aplicaciones para lograr 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 con mayor precisión el audio con los fotogramas de video.
Wi-Fi CERTIFIED Miracast™
Los dispositivos Android 4.4 ahora pueden obtener la certificación de la especificación de Pantalla Wi-Fi de Wi-Fi Alliance como compatibles con Miracast. Para ayudar con las pruebas, una nueva opción para desarrolladores de pantalla inalámbrica expone controles y parámetros 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. El Nexus 5 es un dispositivo de pantalla inalámbrica con certificación Miracast.
Procesamiento de RenderScript
Mejoras continuas del rendimiento
Cuando tus apps usen RenderScript, se beneficiarán de la optimización continua del rendimiento en el tiempo de ejecución de RenderScript, sin necesidad de recompilación. El gráfico de la derecha muestra los 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 de la aceleración de GPU sin cambios de código ni recompilación. Desde que el Nexus 10 debutó con la aceleración de GPU de RenderScript, varios otros socios de hardware agregaron compatibilidad.
Ahora, con Android 4.4, la aceleración de la GPU está disponible en el Nexus 5, así como en el Nexus 4, el Nexus 7 (2013) y el 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 APIs del framework, incluidas las funciones intrínsecas de secuencias de comandos, los kernels personalizados y mucho más.
Si tienes tareas grandes y de alto rendimiento que controlar en código nativo, puedes realizarlas con RenderScript y, luego, integrarlas con tu código nativo. RenderScript ofrece un gran rendimiento en una amplia variedad de dispositivos, con compatibilidad automática para CPUs, GPUs 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 de OpenGL ES.
Nuevos tipos de conectividad
Nuevos perfiles de Bluetooth
Android 4.4 admite dos perfiles Bluetooth nuevos para permitir que las apps admitan una gama más amplia de interacciones multimedia y de bajo consumo. Bluetooth HID sobre GATT (HOGP) les brinda a las apps una vinculación de baja latencia con dispositivos periféricos de bajo consumo, como mouse, joysticks y teclados. El MAP de Bluetooth permite que tus apps intercambien mensajes con un dispositivo cercano, por ejemplo, una terminal automotriz para el uso de manos libres o cualquier otro dispositivo móvil. Como extensión de Bluetooth AVRCP 1.3, los usuarios ahora pueden establecer el volumen absoluto en el sistema desde sus dispositivos Bluetooth.
La compatibilidad de plataforma con HOGP, MAP y AVRCP se basa en la pila Bluetooth Bluedroid que presentaron 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 presenta compatibilidad de la plataforma con controles remotos por infrarrojos 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 tiene un emisor de infrarrojos, consulte sus frecuencias portadoras y, luego, envíe señales infrarrojas.
Debido a que la API es estándar en todos los dispositivos Android que ejecutan Android 4.4 o versiones posteriores, tu app puede admitir la gama más amplia posible de proveedores sin escribir código de integración personalizado.
Compatibilidad con Wi-Fi TDLS
Android 4.4 presenta una forma fluida de transmitir contenido multimedia y otros datos más rápido entre dispositivos que ya están en la misma red Wi-Fi, ya que admite la configuración de vínculo directo con túnel Wi-Fi (TDLS).
Accesibilidad
Configuración de todo el sistema para subtítulos opcionales
Android 4.4 ahora admite una mejor experiencia de accesibilidad en todas las apps, ya que agrega preferencias del sistema para los subtítulos. Los usuarios pueden ir a Configuración > Accesibilidad > Subtítulos para establecer preferencias de subtítulos globales, como si se muestran subtítulos y qué idioma, tamaño de texto y estilo de texto usar.
Las apps que usan videos ahora pueden acceder a la configuración de subtítulos del usuario y ajustar la presentación para satisfacer 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 escalamiento y el estilo de texto preferidos. El estilo de texto incluye colores de primer y segundo plano, propiedades de borde y tipo de letra.
Además, las apps que usan VideoView pueden usar una nueva API para pasar una transmisión de subtítulos junto con una transmisión de video para la renderización. El sistema controla automáticamente la visualización de los subtítulos en los fotogramas de video según la configuración del usuario en todo el sistema. Actualmente, VideoView solo admite la visualización automática de subtítulos en formato WebVTT.
Todas las apps que muestran subtítulos deben asegurarse de verificar las preferencias de subtítulos del usuario en todo el sistema y renderizar los subtítulos lo más cerca posible de esas preferencias. Para obtener más información sobre cómo se deben ver las combinaciones específicas de parámetros de configuración, puedes ver una vista previa de los subtítulos en diferentes idiomas, tamaños y estilos directamente en la app de Configuración.
Las Enhanced Accessibility API
Android 4.4 extiende las APIs de accesibilidad para admitir una descripción estructural y semántica más precisa y la observación de elementos en pantalla. Con las nuevas APIs, los desarrolladores pueden mejorar la calidad de los comentarios accesibles proporcionando a los servicios de accesibilidad 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 APIs nuevas para trabajar con nodos que contienen información similar a una cuadrícula, como listas y tablas. Por ejemplo, ahora puedes especificar nuevas acciones admitidas, información de la colección, modos de región en vivo y mucho más.
Los nuevos eventos de accesibilidad permiten a los desarrolladores seguir más de cerca los cambios que se producen en el contenido de la ventana y ahora pueden detectar 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 se orienta a usuarios que usan secuencias de comandos de RTL, puedes usar una nueva API para declarar que un elemento de diseño debe duplicarse automáticamente cuando la configuración regional del usuario incluye un idioma RTL.
Declarar un elemento de diseño como reflejado automáticamente te ayuda a evitar la duplicación de recursos en tu app y reduce el tamaño de tu APK. Cuando tienes elementos de diseño que se pueden volver a usar para presentaciones de LTR y RTL, puedes declarar las versiones predeterminadas como duplicadas automáticamente y, luego, omitir esos elementos de diseño de tus recursos de RTL.
Puedes declarar varios tipos de elementos de diseño como reflejados automáticamente en el código de tu aplicación, como bitmap, nueve parches, capa, lista de estados y otros elementos de diseño. También puedes declarar un elemento de diseño como reflejado automáticamente en tus archivos de recursos con un atributo nuevo.
Diseño RTL forzoso
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 para forzar la dirección de diseño de derecha a izquierda en todas las apps.
La opción Forzar diseño de derecha a izquierda cambia el dispositivo al diseño de derecha a izquierda para todas las configuraciones regionales y muestra el texto en tu idioma actual. Esto puede ayudarte a encontrar problemas de diseño en tu app, sin tener que mostrarla en un idioma RTL. 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 "permisiva" a "forzosa". 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 forzosa.
Algoritmos criptográficos mejorados
Android mejoró aún más su seguridad agregando compatibilidad con dos algoritmos criptográficos más. Se agregó compatibilidad con el algoritmo de firma digital de curva elíptica (ECDSA) al proveedor del almacén de claves, lo que mejora 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 de Scrypt se implementa para proteger las claves criptográficas que se usan para la encriptación de disco completo.
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 el nivel 2 de FORTIFY_SOURCE, 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 con el tiempo y proporciona datos sobre sus duraciones de ejecución y el uso de la memoria para ayudar a determinar qué tan eficientemente se desempeñan. Esto es más importante para las apps que inician servicios que se ejecutan en segundo plano, ya que te permite supervisar durante cuánto tiempo se ejecutan y cuánta RAM usan mientras lo hacen. Procstats también recopilará datos para 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 siguen ejecutándose esos servicios y cuánta RAM usan mientras lo hacen. Procstats también te permite generar perfiles de tu app mientras está en primer plano, usando su uso de memoria a lo largo del tiempo para determinar su perfil de memoria general.
Puedes acceder a procstats desde la herramienta adb incluida en el SDK de Android, adb shell dumpsys procstats. Además, para obtener información sobre la generación de perfiles en el dispositivo, consulta la opción para desarrolladores de Estadísticas de procesos 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. Es especialmente útil obtener una vista de cómo tu app usa la memoria y funciona en dispositivos con poca RAM. Puedes acceder a la opción en Configuración > Opciones para desarrolladores > Estadísticas de procesos.
La opción Process Stats 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 color verde indica la cantidad relativa de tiempo que se pasó con un uso bajo de la RAM, el amarillo indica un uso moderado de la RAM y el rojo indica un uso alto (crítico) de la RAM.
Debajo del resumen, se muestra una lista que resume la carga de memoria de cada app en el sistema. Para cada app, una barra azul indica la carga de memoria calculada (runtime x avg_pss) de su proceso, y un número de porcentaje indica la cantidad relativa de tiempo que se pasó en segundo plano. Puedes filtrar la lista para mostrar solo procesos en primer o 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 de uss.
Para analizar con mayor detalle el uso de memoria de una app específica de forma aislada, presiónala. Para cada app, ahora puedes ver un resumen de la memoria consumida y el porcentaje del intervalo de recopilación que se ejecutó la app. También puedes ver el uso promedio y máximo durante el período de recopilación, y debajo de los servicios de la app y el porcentaje de tiempo que se ejecutaron.
El análisis de tu app con los datos de las estadísticas de procesos puede revelar problemas y sugerir posibles optimizaciones para tu app. Por ejemplo, si tu app se ejecuta más tiempo del debido o usa demasiada memoria durante un período, es posible que haya errores en el código que puedas resolver para mejorar el rendimiento de la app, en especial cuando se ejecuta en un dispositivo con poca RAM.