![Android 4.4 en teléfonos y tablets](https://developer.android.google.cn/static/images/kk-devices.png?authuser=7&hl=es)
Bienvenido a Android 4.4 KitKat.
Android KitKat ofrece 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 se diseñó para ejecutarse con rapidez, fluidez y respuesta en una gama de dispositivos mucho más amplia que nunca, incluidos millones de dispositivos básicos de todo el mundo con tan solo 512 MB de RAM.
KitKat optimiza todos los componentes principales para reducir el uso de memoria y presenta nuevas APIs y herramientas que te ayudan a crear aplicaciones innovadoras, responsivas y con uso eficiente de la memoria.
Los OEM que crean 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 fusión de la misma página del 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 los tamaños de la 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 cortados para que usen menos montón y ahora protegen de manera más intensa la memoria del sistema de las apps que consumen grandes cantidades de RAM. Cuando se inician varios servicios al mismo tiempo (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 ayuda a ofrecer apps que sean eficientes y responsivas en todos los dispositivos. La 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 de memoria grande según sea necesario, según los casos prácticos que desees admitir en dispositivos de nivel básico. 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 información útil sobre el uso de memoria de tu app. La herramienta procstats detalla el uso de la memoria a lo largo del 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 una nueva opción para desarrolladores. Se mejoró la herramienta meminfo para facilitar la detección de tendencias y problemas de memoria, y revela una sobrecarga de memoria adicional que no era visible antes.
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 a través de la emulación de tarjeta 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, sin necesidad de un elemento seguro (SE) aprovisionado en el dispositivo. Las apps también pueden usar un nuevo Modo de lectura para que actúen como lectores de tarjetas HCE y otras transacciones basadas en NFC.
![Símbolo de pago sin contacto](https://developer.android.google.cn/static/images/kk-contactless-card.png?authuser=7&hl=es)
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. En la actualidad, muchos sistemas usan estas tarjetas, incluida la infraestructura de pagos EMVCO existente mediante NFC. Android usa identificadores de aplicaciones (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"). 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 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 HCE y SE. Los dispositivos Android 4.4 compatibles con NFC incluirán la función Pagar sin contacto para realizar pagos sencillos mediante 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 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 nativa con plataformas de impresión, junto con API para administrarlas y agregar compatibilidad con nuevos tipos de impresoras. La plataforma proporciona un administrador de impresión que media entre las apps que solicitan impresión 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. Además, garantiza la seguridad del contenido a medida que pasa por los procesos, desde una app hasta un servicio de impresión.
![Dispositivo móvil en orientación horizontal que muestra las funciones de compatibilidad con impresoras](https://developer.android.google.cn/static/images/kk-print-land-n5.jpg?authuser=7&hl=es)
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 en el código. En la mayoría de los casos, agregarás una acción de impresión a la barra de acciones y una IU para elegir los elementos que desees imprimir. También puedes implementar APIs para crear trabajos de impresión, consultar el estado del administrador de impresiones 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 su formato de archivo principal para las impresiones. Antes de la impresión, tu app debe generar una versión del contenido en formato PDF correctamente paginada. Para mayor comodidad, la API de impresión ofrece clases auxiliares nativas y de WebView para que puedas 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 que ejecutan Android 4.4 incluirán Google Cloud Print preinstalado como servicio de impresión, así como 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 facilita a los usuarios explorar y abrir documentos, imágenes y otros archivos en todos sus proveedores preferidos. Una IU estándar y fácil de usar les permite a los usuarios explorar archivos y accesos recientes de forma coherente en todas las apps y los proveedores.
![Dispositivo móvil que muestra una barra lateral abierta en el nuevo framework de acceso al almacenamiento](https://developer.android.google.cn/static/images/kk-saf2-n5.jpg?authuser=7&hl=es)
![Un dispositivo móvil que muestra los servicios de Box integrados en el nuevo framework de acceso al almacenamiento](https://developer.android.google.cn/static/images/kk-saf1-n5.jpg?authuser=7&hl=es)
Box y otros proveedores integraron sus servicios en el framework de acceso al almacenamiento, lo que les brinda a los usuarios acceso fácil a sus documentos desde apps en todo el 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 otorgar 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 compilas 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 a tu servicio desde cualquier app que participe en el framework. Esto puede ayudarte a ganar exposición y atraer a los usuarios, ya que los usuarios 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, seguirán teniendo acceso a sus servicios preferidos desde tu app, sin que se realicen cambios o actualizaciones en tu 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 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 permiten que los usuarios encuentren e importen sus datos desde un rango más amplio de fuentes con mayor facilidad.
La mayoría de los dispositivos con Android 4.4 incluirán Google Drive y el almacenamiento local preintegrados como proveedores de documentos. Las apps de Google que funcionan con archivos también usarán el nuevo marco de trabajo.
Sensores de bajo consumo
Procesamiento de sensores por lotes
Android 4.4 presenta la compatibilidad de la plataforma con el agrupamiento en lotes de sensores de hardware, 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 manera individual a medida que se detectan. Esto permite que el procesador de la aplicación del dispositivo permanezca en un estado de inactividad de bajo consumo hasta que se entreguen los lotes. Puedes solicitar eventos por lotes de cualquier sensor mediante un objeto de escucha de eventos estándar y puedes controlar el intervalo en el que recibes los lotes. También puedes solicitar la entrega inmediata de eventos entre ciclos de lotes.
El procesamiento por lotes de sensores es ideal para casos prácticos de bajo consumo y larga ejecución, como el entrenamiento, el seguimiento de la ubicación, la supervisión y mucho más. Puede hacer que tu app sea más eficiente y te permite hacer un seguimiento continuo de los eventos de sensores, incluso cuando la pantalla está apagada y el sistema suspendido.
Actualmente, el procesamiento de sensores por lotes está disponible en Nexus 5, y estamos trabajando con nuestros socios de conjuntos de chips para llevarlo a más dispositivos lo antes posible.
![Un dispositivo móvil que muestra la compatibilidad con el detector de pasos nuevo](https://developer.android.google.cn/static/images/kk-sensors-moves-n5.jpg?authuser=7&hl=es)
![Dispositivo móvil que muestra la nueva compatibilidad con el contador de pasos](https://developer.android.google.cn/static/images/kk-sensors-runtastic-n5.jpg?authuser=7&hl=es)
Moves y Runtastic Pedometer usan el detector de pasos de hardware para ofrecer servicios de larga duración y de bajo consumo.
Detector y contador de pasos
Android 4.4 también agrega compatibilidad de plataforma con dos nuevos sensores compuestos (detector de pasos y contador de pasos) que permiten a tu app hacer un seguimiento de los pasos cuando el usuario camina, corre o sube escaleras. Estos nuevos sensores se implementan en el hardware para lograr un bajo consumo de energía.
El detector de pasos analiza las entradas 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 lógica y sensores está integrada en la plataforma y en el hardware subyacente, no necesitas mantener tus propios algoritmos de detección en la app.
Los sensores del detector de pasos y el contador están disponibles en Nexus 5. Estamos trabajando con nuestros socios de chipsets para poder incorporarlos en 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. Las APIs y el proveedor de SMS nuevos 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 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 aún pueden escuchar los mensajes entrantes con el intent SMS_RECEIVED. Además, el sistema ahora permite que solo la app predeterminada escriba datos del mensaje al proveedor, aunque otras apps pueden leerlos en cualquier momento. Las apps que no son la 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 APIs totalmente compatibles y compatibles con versiones futuras.
Nuevas formas de compilar apps fabulosas
![Dispositivo móvil en el que se muestra la nueva función de modo envolvente](https://developer.android.google.cn/static/images/kk-immersive-n5.jpg?authuser=7&hl=es)
Hay un nuevo modo envolvente que 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 tus 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 van de un borde al 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 lugar 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, completa e inmersiva 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 regresar 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 animaciones 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 (por lo general, jerarquías de vistas y transiciones) que describen cómo animar o transformar las escenas cuando el usuario entra en ellas o las sale de ellas. Puedes usar varios tipos de transición 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 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 demorada 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 a animar los cambios que especificaste.
![IU de sistema translúcida](https://developer.android.google.cn/static/images/kk-home.jpg?authuser=7&hl=es)
Las apps pueden usar nuevos estilos de ventana para solicitar barras de sistema translúcidas.
Para obtener 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 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 para 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 práctico típico sería una app que debe mostrarse a través de un fondo de pantalla.
Acceso mejorado a notificaciones
Los servicios de objeto 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 de extras (texto, ícono, imagen, progreso, cronómetro y muchos más) para extraer información más limpia sobre la notificación y presentar la información de una manera diferente.
WebView basado en Chromium
Android 4.4 incluye una implementación completamente nueva de WebView basada en Chromium. El nuevo componente WebView de Chromium te brinda los aspectos más recientes de compatibilidad, rendimiento y compatibilidad de estándares para crear 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 de JavaScript Engine (V8) que brinda un rendimiento de JavaScript significativamente mejorado.
Además, el nuevo componente WebView de Chromium 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 vivo en un dispositivo móvil.
El nuevo componente WebView de 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 del SDK de Android mediante USB. Es una excelente forma nueva de crear explicaciones e instructivos para tu app, material 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 en el dispositivo como un archivo MP4. Puedes grabar con cualquier resolución y tasa de bits compatible 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 pantalla del dispositivo en la orientación actual. Cuando hayas terminado de grabar, puedes compartir el video directamente desde tu dispositivo o extraer el archivo MP4 a tu computadora host para su posproducción.
Si tu app reproduce video u otro contenido protegido que no quieras que la grabadora de pantalla capture, 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, mediante 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 ofrece compatibilidad formal para la reproducción adaptativa 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 inconvenientes durante la reproducción. El cliente puede comenzar a transmitir los fotogramas de video de entrada del decodificador en 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 adaptativa 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 de las APIs de la plataforma y el framework de DRM modular de Android para admitir DASH.
Transmisión en vivo HTTP
Android 4.4 actualiza la compatibilidad con la transmisión en vivo HTTP (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 del IETF para obtener más detalles.
Tunelización de audio a DSP
Para una 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 en 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 drásticamente la duración de la batería en casos prácticos 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, 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.](https://developer.android.google.cn/static/images/kk-loudnessEnhancerAnnotated.png?authuser=7&hl=es)
Visualización de cómo el efecto 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 de conjuntos de chips para que esté disponible en más dispositivos lo antes posible.
Monitorización de audio
Las apps pueden usar herramientas de supervisión nuevas en el efecto Visualizer para obtener actualizaciones sobre los niveles máximos y de RMS de cualquier audio que se esté reproduciendo en el dispositivo. Por ejemplo, podrías usar esta función de forma creativa en los visualizadores de música o para implementar la medición de la reproducción en un reproductor multimedia.
Amplificador de volumen
Las aplicaciones de reproducción de contenido 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ó) un fotograma de audio específico al usuario 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 certificarse de la especificación Wi-Fi Display de Wi-Fi Alliance como compatibles con Miracast. Para ayudar con las pruebas, una nueva opción para desarrolladores de pantallas inalámbricas expone ajustes y controles 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 certificado por Miracast.
Procesamiento de RenderScript
![Gráfico de optimizaciones de Renderscipt](https://developer.android.google.cn/static/images/kk-rs-chart-versions.png?authuser=7&hl=es)
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 de rendimiento
Cuando tus apps usen RenderScript, se beneficiarán con el ajuste de rendimiento continuo en el entorno de ejecución de RenderScript, sin necesidad de volver a compilar. En el gráfico de la derecha, se muestra un aumento del 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 la GPU, sin cambios en el código ni recompilación. Desde que en Nexus 10 se lanzó 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, Nexus 4, Nexus 7 (2013) y Nexus 10, y 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 de framework, que incluye las funciones intrínsecas de secuencias de comandos, los kernels personalizados y mucho más.
Si debes administrar tareas grandes y de alto rendimiento en 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 que ejecute Android 2.2 o una versión posterior, al igual que con la biblioteca de compatibilidad de RenderScript disponible para las APIs de 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 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) 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, como una terminal automotriz para manos libres o algún otro dispositivo móvil. Como una extensión de Bluetooth AVRCP 1.3, los usuarios ahora pueden configurar 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
En Android 4.4, se presenta compatibilidad de plataforma con disparadores IR integrados, junto con una nueva API y un nuevo 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 infrarrojo, consulta las frecuencias de los proveedores y, luego, envía señales infrarrojas.
Debido a que la API es estándar en los dispositivos Android que ejecutan Android 4.4 o versiones posteriores, la app puede admitir la mayor variedad de proveedores posible sin la necesidad de 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 túneles (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, ya que agrega preferencias de Subtítulos en todo el sistema. Los usuarios pueden ir a Configuración > Accesibilidad > Subtítulos para establecer preferencias globales de subtítulos, por ejemplo, si se mostrarán subtítulos y qué idioma, tamaño del texto y estilo de texto usarán.
Las apps que usan videos ahora pueden acceder a la configuración de subtítulos del usuario y ajustar la presentación para que satisfaga las preferencias del usuario. 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 en el que se muestran subtítulos en las preferencias de subtítulos de todo el sistema](https://developer.android.google.cn/static/images/kk-captions-n5.jpg?authuser=7&hl=es)
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 automáticamente controla 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 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 para todo el sistema y renderizar los subtítulos con la mayor precisión posible según esas preferencias. Para obtener más información 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 región publicada 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 las ventanas, 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 del APK. Cuando tienes elementos de diseño reutilizables para las presentaciones de izquierda a derecha y de derecha a izquierda, puedes declarar que las versiones predeterminadas se duplican automáticamente y, luego, omitir esos elementos de diseño de los recursos de derecha a izquierda.
![](https://developer.android.google.cn/static/images/kk-pseudolocale-rtl.png?authuser=7&hl=es)
La opción Forzar diseño de derecha a izquierda 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 la 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 RTL para todas las configuraciones regionales y muestra el texto en tu idioma actual. Esto puede ayudarte a detectar problemas de diseño en tu app, sin tener que mostrarla en un idioma con escritura 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 "controlar". 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ó aún más su seguridad 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 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 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 herramienta nueva 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 la ejecución y el uso de la memoria para determinar la eficiencia de su 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 usan en ese proceso. Procstats también recopila 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 del tiempo en que se ejecutan esos servicios y de la cantidad de RAM que usan en ese proceso. Procstats también te permite generar perfiles de tu app mientras está en primer plano y usar la memoria a lo largo del tiempo para determinar el perfil de memoria general.
![](https://developer.android.google.cn/static/images/kk-procstats.png?authuser=7&hl=es)
La nueva herramienta procstats te permite verificar el uso de memoria de las apps y servicios con el tiempo.
![](https://developer.android.google.cn/static/images/kk-meminfo.png?authuser=7&hl=es)
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 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 Configuración > Opciones para desarrolladores > Estadísticas de proceso.
![Dispositivos móviles que muestran la nueva opción Estadísticas de proceso](https://developer.android.google.cn/static/images/kk-proc-device-overview-n5.jpg?authuser=7&hl=es)
![Dispositivos móviles que muestran los detalles del uso en la nueva opción de Procesar estadísticas](https://developer.android.google.cn/static/images/kk-proc-device-detail-n5.jpg?authuser=7&hl=es)
Las estadísticas de proceso son una forma conveniente de comprobar el uso de memoria de tu app. Puedes ver cómo se compara tu app con otras, y acercar datos específicos sobre ella 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 color verde indica la cantidad relativa de tiempo dedicada a un uso bajo de RAM, el amarillo indica un uso moderado de RAM y el rojo un uso alto (crítico) de RAM.
Debajo del resumen, hay una lista que resume la carga de memoria en el sistema de cada app. Para cada app, la barra azul indica la carga de memoria procesada relativa (tiempo de ejecución x avg_pss) de su proceso y el porcentaje indica la cantidad relativa de tiempo que se pasa en segundo plano. Puedes filtrar la lista para mostrar solo los procesos en primer plano, en segundo plano o almacenados 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 mayor detalle el uso de memoria de una app específica de forma aislada, presiónala. Para cada app, ahora podrás ver un resumen de la memoria consumida y el porcentaje del intervalo de recopilació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 y debajo de los servicios de la app y el porcentaje de tiempo que han estado en ejecución.
Analizar tu app usando los datos de Process Stats puede revelar problemas y sugerir posibles optimizaciones para ella. Por ejemplo, si tu app se ejecuta más tiempo del que debería o usa demasiada memoria durante un período, podría haber errores en tu código que puedes resolver para mejorar su rendimiento, especialmente cuando se ejecuta en un dispositivo con poca memoria RAM.