Android 4.3
¡Bienvenido a Android 4.3, una versión más dulce de Jelly Bean!
Android 4.3 incluye optimizaciones de rendimiento y excelentes funciones nuevas para usuarios y desarrolladores. En este documento, se ofrece un panorama de las novedades para los desarrolladores.
Consulta el documento de las APIs de Android 4.3 para obtener un panorama detallado de las nuevas APIs de desarrollador.
Obtén más información acerca de las nuevas funciones de Jelly Bean para usuarios en www.android.com.
Más rápido, más fluido y más responsivo
Android 4.3 se basa en las mejoras de rendimiento que ya incluye Jelly Bean (sincronización de vsync, triple almacenamiento en búfer, latencia táctil reducida, mejor entrada de CPU y renderización 2D acelerada por hardware) y agrega nuevas optimizaciones que hacen que Android sea aún más rápido.
Para mejorar el rendimiento de los gráficos, el procesador 2D acelerado por hardware ahora optimiza el flujo de comandos de dibujo y lo transforma en un formato de GPU más eficiente mediante la reorganización y combinación de las operaciones de dibujo. Para el procesamiento multiproceso, ahora el procesador también puede usar multiprocesamiento en varios núcleos de CPU a fin de realizar determinadas tareas.
Android 4.3 también mejora el procesamiento de formas y texto. Las formas como círculos y rectángulos redondeados ahora se renderizan con mayor calidad y de una manera más eficiente. Las optimizaciones para texto incluyen un mayor rendimiento cuando se usan varias fuentes o conjuntos de glifos complejos (CJK), una mejor calidad de renderización cuando se escala el texto y una renderización más rápida de sombras paralelas.
La asignación de búfer de ventana mejorada da como resultado una asignación de búfer de imagen más rápida para tus apps, lo que reduce el tiempo necesario para iniciar la renderización cuando creas una ventana.
En el caso de los gráficos de mayor rendimiento, Android 4.3 incluye compatibilidad con OpenGL ES 3.0 y permite que las apps accedan a ellas a través de las APIs nativas y del framework. En los dispositivos compatibles, el motor de renderización en 2D acelerado por hardware aprovecha OpenGL ES 3.0 para optimizar la administración de texturas y aumentar la fidelidad del procesamiento de gradientes.
OpenGL ES 3.0 para gráficos de alto rendimiento
Android 4.3 incorpora compatibilidad de plataforma para Khronos OpenGL ES 3.0, lo que proporciona a los juegos y otras apps capacidades de gráficos 2D y 3D de más alto rendimiento en dispositivos compatibles. Puedes aprovechar OpenGL ES 3.0 y las extensiones EGL relacionadas con las APIs de framework o las vinculaciones de API nativa mediante el kit de desarrollo nativo (NDK) de Android.
La nueva funcionalidad clave proporcionada en OpenGL ES 3.0 incluye aceleración de efectos visuales avanzados, compresión de texturas ETC2/EAC de alta calidad como función estándar, una nueva versión del lenguaje de sombreado GLSL ES compatible con números enteros y puntos flotantes de 32 bits, renderización avanzada de texturas y tamaño de textura estandarizado y formatos de búfer de renderización.
Puedes usar las APIs de OpenGL ES 3.0 para crear gráficos altamente complejos y eficientes que se ejecuten en una variedad de dispositivos Android compatibles, y puedes admitir un único formato de compresión de texturas estándar en esos dispositivos.
OpenGL ES 3.0 es una función opcional que depende del hardware gráfico subyacente. La asistencia ya está disponible en dispositivos Nexus 7 (2013), Nexus 4 y Nexus 10.
Conectividad Bluetooth mejorada
Conectividad con sensores y dispositivos Bluetooth Smart
Ahora puedes diseñar y compilar apps que interactúen con la última generación de dispositivos y sensores pequeños y de bajo consumo que utilizan la tecnología Bluetooth Smart.
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=7&hl=es)
Android 4.3 te ofrece una única API estándar para interactuar con dispositivos Bluetooth Smart.
Android 4.3 incorpora compatibilidad de plataforma integrada para Bluetooth Smart Ready en la función principal y proporciona un conjunto estándar de APIs que las apps pueden usar para descubrir dispositivos cercanos, consultar servicios GATT y usar características de lectura y escritura.
Con las nuevas APIs, tus apps pueden buscar de manera eficiente dispositivos y servicios de interés. Para cada dispositivo, puedes verificar servicios GATT compatibles mediante UUID y administrar las conexiones por ID de dispositivo y intensidad de la señal. Puedes conectarte a un servidor GATT alojado en el dispositivo y leer o escribir características, o registrar un objeto de escucha para recibir notificaciones cuando esas características cambien.
Puedes implementar compatibilidad con cualquier perfil GATT. Puedes leer o escribir características estándar o agregar compatibilidad con características personalizadas según sea necesario. Tu app puede funcionar como cliente o servidor, y puede transmitir y recibir datos en cualquier modo. Las APIs son genéricas, por lo que podrás admitir interacciones con una variedad de dispositivos, como etiquetas de proximidad, relojes, medidores de actividad física, controles de juegos, controles remotos, dispositivos de salud, etcétera.
La compatibilidad con Bluetooth Smart Ready ya está disponible en dispositivos Nexus 7 (2013) y Nexus 4, y será compatible con una cantidad cada vez mayor de dispositivos compatibles con Android en los próximos meses.
Perfil AVRCP 1.3
Android 4.3 agrega compatibilidad integrada con Bluetooth AVRCP 1.3, para que tus apps puedan admitir interacciones más enriquecidas con dispositivos de transmisión de medios remotos. Las apps como los reproductores multimedia pueden aprovechar AVRCP 1.3 mediante las APIs de cliente de control remoto que se introdujeron en Android 4.0. Además de exponer los controles de reproducción en los dispositivos remotos conectados a través de Bluetooth, las apps ahora pueden transmitir metadatos, como el nombre de la pista, el compositor y otros tipos de metadatos del contenido multimedia.
La compatibilidad de plataforma con AVRCP 1.3 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 la capacidad de A2DP/AVRCP.
Compatibilidad con perfiles restringidos
![Configuración de un perfil restringido](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=7&hl=es)
El propietario de una tablet puede configurar uno o más perfiles restringidos en Configuración y administrarlos de forma independiente.
![Configuración de restricciones en un perfil](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=7&hl=es)
Tu app puede ofrecer restricciones para permitir que los propietarios administren el contenido de la app cuando se ejecuta en un perfil.
Android 4.3 amplía la función multiusuario para tablets con perfiles restringidos, una nueva forma de administrar usuarios y sus capacidades en un solo dispositivo. Con los perfiles restringidos, los propietarios de tablets pueden configurar rápidamente entornos separados para cada usuario, con la capacidad de administrar restricciones más detalladas en las apps que están disponibles en esos entornos. Los perfiles restringidos son ideales para amigos y familiares, usuarios invitados, kioscos, dispositivos de punto de venta y mucho más.
Cada perfil restringido ofrece un espacio aislado y seguro con su propio almacenamiento local, pantallas principales, widgets y configuración. A diferencia de lo que sucede con los usuarios, los perfiles se crean desde el entorno del propietario de la tablet y se basan en las apps instaladas del propietario y las cuentas del sistema. El propietario controla qué apps instaladas se habilitan en el perfil nuevo y el acceso a sus cuentas está inhabilitado de forma predeterminada.
Las apps que necesitan acceder a las cuentas del propietario (para el acceso, las preferencias y otros usos) pueden aceptarla declarando un atributo de manifiesto, y el propietario puede revisar y administrar esas apps desde la configuración del perfil.
Para los desarrolladores, los perfiles restringidos ofrecen una nueva forma de ofrecer más valor y control a los usuarios. Puedes implementar restricciones de apps (controles de contenido o funciones compatibles con tu app) y anunciarlas a los propietarios de tablets en la configuración del perfil.
Puedes agregar restricciones de apps directamente a la configuración del perfil mediante tipos booleanos, de selección y de selección múltiple predefinidos. Si deseas mayor flexibilidad, incluso puedes iniciar tu propia IU desde los ajustes de configuración del perfil para ofrecer cualquier tipo de restricción que desees.
Cuando tu app se ejecuta en un perfil, puede verificar las restricciones configuradas por el propietario y aplicarlas de manera adecuada. Por ejemplo, una app de música podría ofrecer una restricción para permitir que el propietario establezca un nivel de madurez para el perfil. Durante la ejecución, la app podría comprobar la configuración de madurez y luego administrar el contenido de acuerdo con el nivel de madurez preferido.
Si tu app no está diseñada para usarse en perfiles restringidos, puedes inhabilitarla por completo, de modo que no se pueda habilitar en ningún perfil restringido.
Ubicación optimizada y funciones de sensor
Los Servicios de Google Play ofrecen APIs de ubicación avanzada que puedes usar en tus apps. Android 4.3 optimiza estas APIs en dispositivos compatibles con nuevas capacidades de hardware y software que minimizan el uso de la batería.
El geovallado de hardware optimiza la eficiencia energética al realizar el cálculo de ubicación en el hardware del dispositivo, en lugar de hacerlo en el software. En los dispositivos que admiten el geovallado de hardware, las APIs de geovallado de los Servicios de Google Play podrán aprovechar esta optimización para ahorrar batería mientras el dispositivo está en movimiento.
El modo de solo búsqueda de Wi-Fi es una nueva optimización de plataforma que permite a los usuarios mantener activada la búsqueda de Wi-Fi sin conectarse a una red Wi-Fi para mejorar la precisión de la ubicación mientras se conserva la batería. Las apps que dependen de Wi-Fi para los servicios de ubicación ahora pueden solicitar a los usuarios que habiliten el modo de solo búsqueda en la configuración avanzada de Wi-Fi. El modo de solo búsqueda de Wi-Fi no depende del hardware del dispositivo y está disponible como parte de la plataforma Android 4.3.
Los nuevos tipos de sensores permiten que las apps administren mejor las lecturas de los sensores. Un vector de rotación de juegos permite a los desarrolladores de juegos detectar la rotación del dispositivo sin tener que preocuparse por la interferencia magnética. Los sensores de giroscopio no calibrado y magnetómetro no calibrado informan mediciones sin procesar, así como estimaciones de sesgos para las apps.
Las nuevas capacidades de hardware ya están disponibles en los dispositivos Nexus 7 (2013) y Nexus 4, y cualquier fabricante de dispositivos o proveedor de chipsset puede integrarlas en sus dispositivos.
Nuevas funciones multimedia
Marco DRM modular
Para satisfacer las necesidades de la nueva generación de servicios multimedia, Android 4.3 presenta un marco de trabajo de DRM modular que permite a los desarrolladores de aplicaciones de música integrar con mayor facilidad la DRM en sus propios protocolos de transmisión, como MPEG DASH (Dynamic Adaptive Streaming mediante HTTP, ISO/IEC 23009-1).
Mediante una combinación de nuevas APIs y mejoras para las APIs existentes, el framework multimedia DRM proporciona un conjunto integrado de servicios para administrar licencias y aprovisionamiento, acceder a códecs de bajo nivel y decodificar datos de medios encriptados. Una nueva API de MediaExtractor te permite obtener los metadatos PSSH para los medios DASH. Las apps que usan el marco de trabajo DRM multimedia administran la comunicación de red con un servidor de licencias y controlan la transmisión de datos encriptados desde una biblioteca de contenido.
Codificador VP8
Android 4.3 presenta compatibilidad integrada con la codificación VP8, accesible desde las APIs nativas y de framework. Para las apps que usan APIs nativas, la plataforma incluye encabezados de extensión OpenMAX 1.1.2 para admitir perfiles y niveles de VP8. La compatibilidad con la codificación VP8 incluye opciones de configuración para los filtros de tasa de bits objetivo, control de velocidad, velocidad de fotogramas, partición de tokens, resiliencia de error, reconstrucción y filtros de bucle. La API de la plataforma presenta compatibilidad con el codificador VP8 en una variedad de formatos, por lo que puedes aprovechar el mejor formato para tu contenido.
La codificación VP8 está disponible en software en todos los dispositivos compatibles que ejecutan Android 4.3. Para obtener el máximo rendimiento, la plataforma también admite la codificación VP8 con aceleración de hardware en dispositivos compatibles.
Codificación de video desde una superficie
A partir de Android 4.3, puedes usar una superficie como entrada para un codificador de video. Por ejemplo, ahora puedes dirigir una transmisión desde una superficie de OpenGL ES al codificador, en lugar de tener que copiar entre búferes.
Combinador multimedia
Las apps pueden usar las nuevas APIs del combinador multimedia para combinar transmisiones de audio y video elementales en un solo archivo de salida. Actualmente, las apps pueden multiplexar una sola transmisión de audio MPEG-4 y una sola transmisión de video por Internet MPEG-4 en un solo archivo de salida MPEG-4. Las nuevas APIs son una contraparte de las APIs de eliminación de contenido multimedia que se introdujeron en Android 4.2.
Progreso de reproducción y arrastre en clientes del control remoto
A partir de Android 4.0, los reproductores multimedia y las aplicaciones similares pueden ofrecer controles de reproducción desde clientes de control remoto, como la pantalla de bloqueo del dispositivo, las notificaciones y los dispositivos remotos conectados por Bluetooth. A partir de Android 4.3, esas aplicaciones también pueden exponer el progreso y la velocidad de la reproducción a través de sus clientes de control remoto y recibir comandos para saltar a una posición de reproducción específica.
Nuevas formas de compilar apps fabulosas
Acceso a notificaciones
Las notificaciones han sido durante mucho tiempo una función popular de Android porque permiten que los usuarios vean información y actualizaciones de todo el sistema, todo en un solo lugar. Ahora, en Android 4.3, las apps pueden observar el flujo de notificaciones con el permiso del usuario y mostrar las notificaciones de la manera que deseen, incluso enviándolas a dispositivos cercanos conectados por Bluetooth.
Puedes acceder a las notificaciones a través de nuevas APIs que te permiten registrar un servicio de objeto de escucha de notificaciones y, con permiso del usuario, recibir notificaciones a medida que se muestran en la barra de estado. Las notificaciones se te envían por completo, con todos los detalles sobre la app de origen, la hora de publicación, la vista y el estilo del contenido, y la prioridad. Puedes evaluar los campos de interés en las notificaciones, procesar o agregar contexto desde tu app, y enrutarlos para que se muestren de la forma que elijas.
La nueva API te ofrece devoluciones de llamada cuando se agrega, actualiza y quita una notificación (ya sea porque el usuario la descartó o porque la app de origen la retiró). Podrás iniciar cualquier intent adjunto a la notificación o sus acciones, así como descartarlo del sistema, lo que permitirá que la app proporcione una interfaz de usuario completa para las notificaciones.
Los usuarios mantienen el control sobre qué apps pueden recibir notificaciones. En cualquier momento, pueden ir a Configuración para ver qué apps tienen acceso a las notificaciones y habilitar o inhabilitar el acceso según sea necesario. El acceso a las notificaciones está inhabilitado de forma predeterminada. Las apps pueden usar un nuevo intent para llevar al usuario directamente a Configuración y habilitar el servicio de objeto de escucha después de la instalación.
Superposición de objetos View
Ahora puedes crear superposiciones transparentes sobre objetos View y ViewGroup para renderizar una jerarquía de vistas temporal o efectos de animación transitorios sin interrumpir la jerarquía de diseño subyacente. Las superposiciones son especialmente útiles cuando deseas crear animaciones, como deslizar una vista fuera de su contenedor o arrastrar elementos en la pantalla sin afectar la jerarquía de vistas.
Modo de diseño de límites ópticos
Un nuevo modo de diseño te permite administrar el posicionamiento de los objetos View dentro de objetos ViewGroup según sus límites ópticos, en lugar de sus límites de recorte. Los límites de recorte representan el límite exterior real de un widget, mientras que los nuevos límites ópticos describen dónde parece estar el widget, dentro de los límites de recorte. Puedes usar el modo de diseño de límites ópticos para alinear correctamente los widgets que usan efectos visuales externos, como sombras y resplandores.
Tipos de animación con rotación personalizada
Ahora las apps pueden definir los tipos de animación de salida y entrada que se usan en una ventana cuando se rota el dispositivo. Puedes configurar las propiedades de la ventana para habilitar la rotación de ventana de corte abrupto, fundido cruzado o estándar. El sistema utiliza los tipos de animación personalizados cuando la ventana está en pantalla completa y no está cubierta por otras ventanas.
Modos de orientación de la pantalla
Las apps pueden establecer nuevos modos de orientación para las actividades a fin de garantizar que se muestren en la orientación correcta cuando se gira el dispositivo. Además, las apps pueden usar un nuevo modo para bloquear la pantalla en su orientación actual. Esta opción es útil para las apps que usan la cámara y desean inhabilitar la rotación mientras se graba un video.
Intent para controlar respuestas rápidas
Android 4.3 presenta un nuevo intent público que permite que cualquier app controle respuestas rápidas, es decir, mensajes de texto que envía el usuario en respuesta a una llamada entrante, sin necesidad de contestar la llamada ni desbloquear el dispositivo. Tu app puede escuchar el intent y enviar el mensaje al emisor mediante tu sistema de mensajería. El intent incluye al destinatario (la persona que llama) y el mensaje en sí.
Compatibilidad con usuarios internacionales
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=7&hl=es)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=7&hl=es)
Más partes de Android 4.3 están optimizadas para idiomas con escritura de derecha a izquierda.
Mejoras para escritura de derecha a izquierda (RTL)
Android 4.3 incluye mejoras de rendimiento de RTL y una mayor compatibilidad con RTL en los widgets de la IU del framework, incluidos ProgressBar/Spinner y ExpandableListView. Hay más información de depuración visible mediante la herramienta uiautomatorviewer
. Además, más componentes de la IU del sistema ahora admiten la escritura de derecha a izquierda, como las notificaciones, la barra de navegación y la barra de acciones.
Para proporcionar una mejor experiencia en todo el sistema en secuencias de comandos de derecha a izquierda, ahora más apps predeterminadas del sistema admiten diseños de derecha a izquierda, como Selector, Configuración rápida, Teléfono, Personas, Asistente de configuración, Reloj, Descargas y mucho más.
Utilidades para localización
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=7&hl=es)
Las pseudoconfiguraciones regionales hacen que sea más fácil probar la localización de tu app.
Android 4.3 también incluye nuevas utilidades y APIs para crear mejores cadenas RTL y probar tus IU localizadas. Una nueva clase BidiFormatter proporciona una API simple para unir strings Unicode, de modo que los datos de secuencias de comandos RTL se muestren según lo previsto en los mensajes de configuración regional de LTR y viceversa. Para permitirte usar esta utilidad de manera más amplia en tus apps, la API de BidiFormatter ahora también está disponible para versiones anteriores de la plataforma a través del paquete de asistencia del SDK de Android.
Para ayudarte a administrar el formato de fecha en las configuraciones regionales, Android 4.3 incluye un nuevo método getBestDateTimePattern() que genera automáticamente la mejor forma localizada posible de una fecha Unicode UTS para una configuración regional que especifiques. Es una forma conveniente de brindar una experiencia más localizada a tus usuarios.
Para ayudarte a probar tu app con mayor facilidad en otras configuraciones regionales, en Android 4.3, se presentan las pseudoconfiguraciones regionales como una nueva opción para desarrolladores. Las pseudoconfiguraciones regionales simulan el idioma, la secuencia de comandos y las características de pantalla asociadas con una configuración regional o un grupo de idiomas. Actualmente, puedes probar con una pseudoconfiguración regional para el inglés acentuado, lo que te permite ver cómo funciona la IU con acentos y caracteres de secuencias de comandos que se usan en varios idiomas europeos.
Automatización de IU y accesibilidad
A partir de Android 4.3, los servicios de accesibilidad pueden observar y filtrar eventos clave, como controlar combinaciones de teclas o proporcionar paridad de navegación con entrada basada en gestos. El servicio recibe los eventos y puede procesarlos según sea necesario antes de pasarlos al sistema o a otras apps instaladas.
Los servicios de accesibilidad pueden declarar nuevos atributos de capacidad para describir lo que pueden hacer sus servicios y qué funciones de la plataforma usan. Por ejemplo, pueden declarar la capacidad de filtrar eventos clave, recuperar contenido de ventanas, habilitar la Exploración táctil o habilitar las funciones de accesibilidad web. En algunos casos, los servicios deben declarar un atributo de función antes de poder acceder a las funciones relacionadas de la plataforma. El sistema usa los atributos de capacidad del servicio para generar un diálogo de aceptación para los usuarios, de modo que puedan ver y aceptar las capacidades antes del lanzamiento.
A partir del framework de accesibilidad de Android 4.3, un nuevo framework de automatización de la IU permite que las pruebas interactúen con la IU del dispositivo mediante la simulación de acciones del usuario y una introspección del contenido de la pantalla. Mediante el framework de automatización de la IU, puedes realizar operaciones básicas, configurar la rotación de la pantalla, generar eventos de entrada, tomar capturas de pantalla y mucho más. Es una forma potente de automatizar las pruebas en situaciones realistas de los usuarios, incluidas las acciones o las secuencias que abarcan varias apps.
Configuración empresarial y seguridad
Configuración de Wi-Fi para redes WPA2 Enterprise
Las apps ahora pueden configurar las credenciales de Wi-Fi que necesitan para las conexiones a los puntos de acceso de WPA2 enterprise. Los desarrolladores pueden usar nuevas APIs para configurar las credenciales del Protocolo de autenticación extensible (EAP) y de EAP encapsulada (Fase 2) para los métodos de autenticación utilizados en la empresa. Las apps con permiso para acceder y cambiar la conexión Wi-Fi pueden configurar credenciales de autenticación para una variedad de métodos de autenticación de EAP y Fase 2.
Zona de pruebas de Android reforzada con SELinux
Android ahora usa SELinux, un sistema de control de acceso obligatorio (MAC) en el kernel de Linux para aumentar la zona de pruebas de aplicaciones basada en UID. De esta manera, se protege el sistema operativo contra posibles vulnerabilidades de seguridad.
Mejoras de KeyChain
La API de KeyChain ahora proporciona un método que permite a las aplicaciones confirmar que las claves de todo el sistema están vinculadas a una raíz de confianza de hardware para el dispositivo. Esto proporciona un lugar para crear o almacenar claves privadas que no se pueden exportar del dispositivo, incluso en el caso de un compromiso de raíz o kernel.
Proveedor de almacén de claves de Android
Android 4.3 presenta un proveedor de almacén de claves y APIs que permiten a las aplicaciones crear claves de uso exclusivo. Mediante las APIs, las apps pueden crear o almacenar claves privadas que otras apps no pueden ver ni usar, y se pueden agregar al almacén de claves sin ninguna interacción del usuario.
El proveedor del almacén de claves proporciona los mismos beneficios de seguridad que la API de KeyChain para las credenciales en todo el sistema, como la vinculación de credenciales a un dispositivo. Las claves privadas del almacén de claves no se pueden exportar del dispositivo.
Restricción de Setuid desde apps de Android
La partición /system
ahora se activa en nosuid
para los procesos generados por Zygote, lo que evita que las aplicaciones para Android ejecuten programas setuid
. Esto reduce la superficie de ataque de raíz y la probabilidad de posibles vulnerabilidades de seguridad.
Nuevas formas de analizar el rendimiento
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=7&hl=es)
Systrace utiliza una nueva sintaxis de comandos y te permite recopilar más tipos de datos de generación de perfiles.
Registro de Systrace mejorado
Android 4.3 admite una versión mejorada de la herramienta Systrace que es más fácil de usar y que te brinda acceso a más tipos de información para generar perfiles del rendimiento de tu app. Ahora puedes recopilar datos de seguimiento de módulos de hardware, funciones del kernel y Dalvik VM, incluidas la recolección de elementos no utilizados, la carga de recursos y mucho más.
Android 4.3 también incluye nuevas APIs de Trace que puedes usar en tus apps para marcar secciones específicas de código a fin de hacer un seguimiento con los eventos de inicio y finalización de Systrace. Cuando se ejecutan las secciones marcadas del código, el sistema escribe los eventos de inicio y finalización en el registro de seguimiento. El impacto en el rendimiento de tu app es mínimo, por lo que los tiempos informados te brindan una visión precisa de lo que hace la app.
Puedes visualizar eventos específicos de la app en un cronograma en el archivo de salida de Systrace y analizar los eventos en el contexto de otros datos de seguimiento del kernel y el espacio del usuario. Junto con las etiquetas de Systrace existentes, las secciones de apps personalizadas pueden proporcionarte nuevas formas de comprender el rendimiento y el comportamiento de tus apps.
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=7&hl=es)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=7&hl=es)
Generación de perfiles de GPU en pantalla en Android 4.3.
Generación de perfiles de GPU en pantalla
Android 4.3 agrega nuevas opciones para desarrolladores que te permiten analizar el rendimiento de la app y detectar problemas de renderización en cualquier dispositivo o emulador.
En la opción Profile GPU rendering, ahora puedes visualizar la velocidad de fotogramas efectiva de tu app en la pantalla mientras esta se ejecuta. Puedes elegir mostrar los datos de generación de perfiles como gráficos de barras o líneas en pantalla, con colores que indican el tiempo dedicado a crear comandos de dibujo (azul), emitir los comandos (naranja) y esperar a que se completen los comandos (amarillo). El sistema actualiza los gráficos en pantalla de manera continua y muestra un gráfico para cada actividad visible, incluida la barra de navegación y la de notificaciones.
Una línea verde destaca el umbral de 16 ms para las operaciones de renderización, por lo que puedes evaluar la velocidad de fotogramas efectiva de tu app en relación con un objetivo de 60 FPS (porque 1/60 de segundo equivale a aproximadamente 16 ms). Si ves operaciones que cruzan la línea verde, puedes analizarlas más a fondo con Systrace y otras herramientas.
En dispositivos con Android 4.2 y versiones posteriores, las opciones para desarrolladores están ocultas de forma predeterminada. Puedes revelarlas en cualquier momento. Para ello, presiona 7 veces en Configuración > Acerca del teléfono > Número de compilación en cualquier dispositivo Android compatible.
Advertencia de StrictMode para URI de archivo
La última incorporación a la herramienta StrictMode es una restricción de política que advierte cuando tu app expone un URI file://
al sistema o a otra app. En algunos casos, es posible que la app receptora no tenga acceso a la ruta de URI file://
, por lo que, cuando se comparten archivos entre apps, se debe usar un URI content://
(con el permiso adecuado). Esta nueva política te ayuda a detectar y solucionar esos casos. Si buscas una manera conveniente de almacenar y exponer archivos a otras apps, intenta usar el proveedor de contenido FileProvider
disponible en la biblioteca de compatibilidad.
Android 4.2
![Android 4.2 en teléfonos y tablets](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=7&hl=es)
¡Bienvenido a Android 4.2, la versión más reciente de Jelly Bean!
Android 4.2 tiene optimizaciones de rendimiento, una IU del sistema actualizada y excelentes funciones nuevas para usuarios y desarrolladores. En este documento, se ofrece un panorama de las novedades para los desarrolladores.
Consulta el documento de las APIs de Android 4.2 para obtener un panorama detallado de las nuevas APIs de desarrollador.
Obtén más información acerca de las nuevas funciones de Jelly Bean para usuarios en www.android.com.
Más rápido, más fluido y con mayor respuesta
Android 4.2 se basa en las mejoras de rendimiento que ya incluye Jelly Bean: sincronización de vsync, triple almacenamiento en búfer, latencia táctil reducida y mejora de entrada de CPU, y agrega nuevas optimizaciones que hacen que Android sea aún más rápido.
Las mejoras en el procesador 2D acelerado por hardware hacen que las animaciones comunes, como desplazarse y deslizarse, sean más rápidas y fluidas. En particular, el dibujo está optimizado para capas, recortes y ciertas formas (rectas redondeadas, círculos y óvalos).
Una variedad de optimizaciones de renderización de WebView hacen que el desplazamiento de las páginas web sea más fluido y libre de fluctuaciones y retrasos.
El Procesamiento de Renderscript de Android es la primera plataforma de procesamiento adaptada para ejecutarse directamente en una GPU de dispositivo móvil. Aprovecha automáticamente los recursos de computación de GPU siempre que sea posible y mejora, de forma significativa, el rendimiento del procesamiento de imágenes y gráficos. Cualquier app que use Renderscript en un dispositivo compatible puede beneficiarse inmediatamente de esta integración de GPU sin necesidad de volver a compilar.
IU mejor definida y actualizada
Android 4.2 define mejor la experiencia del usuario de Jelly Bean y ofrece patrones familiares de la IU de Android, como la barra de estado, la barra del sistema y la ventana de notificaciones a todas las tablets.
Todos los tamaños de pantalla ahora cuentan con la barra de estado en la parte superior, con acceso desplegable a las notificaciones y un nuevo menú de Configuración rápida. La conocida barra del sistema aparece en la parte inferior, con botones a los que se puede acceder fácilmente con cualquier mano. La bandeja de aplicaciones también está disponible en todos los tamaños de pantalla.
Una tablet, muchos usuarios
Ahora varios usuarios pueden compartir una sola tablet Android y cada uno tendrá acceso conveniente a un espacio de usuario dedicado. Los usuarios pueden cambiar a sus espacios con un solo toque desde la pantalla de bloqueo.
En un dispositivo multiusuario, Android le brinda a cada usuario un entorno independiente que incluye el almacenamiento de la tarjeta SD emulado específico del usuario. Los usuarios también tienen sus propias pantallas principales, widgets, cuentas, configuración, archivos y apps, y el sistema los mantiene separados. Todos los usuarios comparten los servicios principales del sistema, pero el sistema garantiza que las aplicaciones y los datos de cada usuario permanezcan aislados. En efecto, cada uno de los usuarios tiene su propio dispositivo Android.
Los usuarios pueden instalar y desinstalar apps en cualquier momento en sus propios entornos. Para ahorrar espacio de almacenamiento, Google Play descarga un APK solo si no está instalado por otro usuario en el dispositivo. Si la app ya está instalada, Google Play registra la instalación del usuario nuevo de la manera habitual, pero no descarga otra copia de la app. Varios usuarios pueden ejecutar la misma copia de un APK porque el sistema crea una instancia nueva para cada usuario, incluido un directorio de datos específico del usuario.
Para los desarrolladores, la compatibilidad con la función multiusuario es transparente: no se requiere que tus apps realicen ninguna acción especial para ejecutarse normalmente en un entorno multiusuario ni se requieren cambios en los APKs existentes o publicados. El sistema administra tu app en cada espacio de usuario tal como lo hace en un entorno de usuario único.
Nuevas formas de atraer a los usuarios
![Widget de pantalla bloqueada de calendario](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=7&hl=es)
A fin de poder acceder instantáneamente a tu contenido, puedes extender los widgets de la app para que se ejecuten en la pantalla bloqueada.
Widgets de la pantalla bloqueada
En Android 4.2, los usuarios pueden colocar widgets de apps directamente en sus pantallas de bloqueo para acceder de forma instantánea al contenido de su app favorita sin tener que desbloquear el dispositivo. Los usuarios pueden agregar hasta cinco widgets en la pantalla de bloqueo y elegir los que proporcionan las apps instaladas. La pantalla de bloqueo muestra cada widget en su propio panel, lo que permite a los usuarios deslizar el dedo hacia la izquierda y la derecha para ver diferentes paneles y sus widgets.
Al igual que todos los widgets de apps, los widgets de la pantalla de bloqueo pueden mostrar cualquier tipo de contenido y aceptar la interacción directa del usuario. Pueden ser completamente independientes, como un widget que ofrece controles para reproducir música, o pueden permitir que los usuarios salten directamente a una actividad en tu app después de desbloquearla según sea necesario.
Para los desarrolladores, los widgets de la pantalla bloqueada ofrecen una nueva forma de atraer a los usuarios. Te permiten mostrar tu contenido a los usuarios en una ubicación que verán con frecuencia y te brindan más oportunidades para atraerlos directamente a tu app.
Puedes aprovechar esta nueva función creando un nuevo widget de app o extendiendo un widget de pantalla principal existente. Si tu app ya incluye widgets en la pantalla principal, puedes extenderlos a la pantalla de bloqueo con un cambio mínimo. Para brindar una experiencia óptima a los usuarios, puedes actualizar el widget para que use el área de pantalla de bloqueo completa cuando esté disponible y cambie su tamaño cuando sea necesario en pantallas más pequeñas. También puedes agregar funciones a tus widgets que podrían ser especialmente útiles o convenientes en la pantalla de bloqueo.
Daydream
Daydream es un modo de protector de pantalla interactivo que se inicia cuando el dispositivo de un usuario está conectado o se está cargando. En este modo, el sistema inicia un daydream (un servicio de contenido remoto proporcionado por una app instalada) como protector de pantalla del dispositivo. Un usuario puede habilitar Daydream desde la app de Configuración y, luego, elegir el daydream que se mostrará.
Los Daydream combinan las mejores funciones de los fondos animados y los widgets de la pantalla principal, pero son más potentes. Te permiten ofrecer cualquier tipo de contenido en un contexto completamente nuevo, con interacciones del usuario, como pasar fotos, reproducir audio o video, o saltar directamente a la app con un solo toque.
Debido a que los daydreams pueden iniciarse automáticamente cuando un dispositivo se está cargando o está en la estación de carga, también le brindan a tu app una excelente manera de admitir nuevos tipos de experiencias del usuario, como el modo Leanback o de exhibición, el modo kiosco o de demostración, y el "modo de atraer", todo sin necesidad de hardware especial.
![Modo de protector de pantalla Daydream](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=7&hl=es)
Daydream te permite crear increíbles protectores de pantalla interactivos que muestran cualquier tipo de contenido.
Los Daydream son similares a los objetos Activity y pueden hacer lo mismo que Activity, desde renderizar una jerarquía de la IU (sin usar RemoteViews) hasta dibujar directamente con Canvas, OpenGL, SurfaceTexture y mucho más. Pueden reproducir video y audio, y hasta aceptar la interacción directa del usuario. Sin embargo, los daydream no son actividades, por lo que no afectan la pila de actividades ni aparecen en Recientes, y no se pueden iniciar directamente desde tu app.
Implementar un daydream es sencillo y puedes aprovechar los componentes y recursos de la IU que ya creaste para otras partes de tu app. Puedes proporcionar varios daydream en tu app y ofrecer parámetros de configuración de contenido y visualización diferentes para cada uno.
Compatibilidad con pantallas externas
Android 4.2 presenta compatibilidad de plataforma para pantallas externas que va mucho más allá de la duplicación: las apps ahora pueden orientar contenido único a una o varias pantallas conectadas a un dispositivo Android. Las apps pueden aprovechar esto para ofrecer nuevos tipos de interacción y experiencias de entretenimiento a los usuarios.
Administrador de pantalla
Las apps interactúan con pantallas mediante de un nuevo servicio del sistema de administrador de pantalla. Tu app puede enumerar las pantallas y verificar las capacidades de cada una, incluidos el tamaño, la densidad, el nombre visible, el ID, la compatibilidad con videos seguros y mucho más. Para administrar mejor el contenido en pantallas externas, tu app también puede recibir devoluciones de llamada cuando se agregan o quitan pantallas, o cuando cambian sus capacidades.
Ventana de presentación
Para facilitar la visualización de contenido en una pantalla externa, el framework proporciona un nuevo objeto de IU llamado Presentation, un tipo de diálogo que representa una ventana para el contenido de tu app en una pantalla externa específica. Tu app solo proporciona la pantalla que se debe usar, un tema para la ventana y cualquier contenido único para mostrar. Presentación controla el aumento de recursos y renderiza tu contenido según las características de la pantalla de destino.
![](https://developer.android.google.cn/static/images/external-display.png?authuser=7&hl=es)
Con Presentación, puedes tomar el control total de dos o más pantallas independientes.
Una presentación le brinda a tu app el control total de la ventana de visualización remota y su contenido, y te permite administrarla en función de los eventos de entrada del usuario, como pulsaciones de teclas, gestos, eventos de movimiento y mucho más. Puedes usar todas las herramientas normales para crear una IU y renderizar contenido en la presentación, desde la compilación de una jerarquía de vistas arbitraria hasta el uso de SurfaceView o SurfaceTexture para dibujar directamente en la ventana de contenido transmitido o vistas previas de la cámara.
Selección de pantalla preferida
Cuando hay varias pantallas externas disponibles, puedes crear tantas Presentaciones como necesites, y cada una mostrará contenido único en una pantalla específica. En muchos casos, es posible que solo quieras mostrar tu contenido en una pantalla externa, pero siempre en la que resulte mejor para el contenido de la Presentación. Para ello, el sistema puede ayudar a tu app a elegir la mejor pantalla para usar.
Con el fin de encontrar la mejor pantalla para usar, tu app puede consultar al administrador de pantallas cuál es la pantalla de Presentación preferida del sistema y recibir devoluciones de llamada cuando esa pantalla cambia. Como alternativa, puedes usar el servicio de router de contenido multimedia, extendido en Android 4.2, para recibir notificaciones cuando cambie una ruta de video del sistema. Tu app puede mostrar contenido de forma predeterminada en la actividad principal hasta que se adjunte una pantalla de Presentación preferida, momento en el cual puede cambiar automáticamente al contenido de Presentación en la pantalla preferida. Tus apps también pueden usar MediaRouteActionProvider y MediaRouteButton del router multimedia para ofrecer una IU estándar de selección de pantalla.
Contenido protegido
En el caso de las apps que controlan contenido protegido o encriptado, la API de Display ahora informa las capacidades de video seguro de las pantallas adjuntas. Tu app consulta una pantalla para averiguar si ofrece una salida de video segura o proporciona búferes de gráficos protegidos y, luego, elige la transmisión o decodificación de contenido adecuadas para que el contenido sea visible. Para mayor seguridad en los objetos SurfaceView, tu app puede establecer una marca segura para indicar que el contenido nunca debe aparecer en capturas de pantalla ni en un resultado de pantalla no seguro, incluso cuando se duplica.
Pantalla inalámbrica
A partir de Android 4.2, los usuarios de dispositivos compatibles pueden conectarse a una pantalla externa a través de Wi-Fi, utilizando Wi-Fi Display (una solución de pantalla inalámbrica entre pares que cumple con el programa de certificación MiracastTM). Cuando se conecta una pantalla inalámbrica, los usuarios pueden transmitir cualquier tipo de contenido a la pantalla grande, lo que incluye fotos, juegos, mapas y mucho más.
Las apps pueden aprovechar las pantallas inalámbricas de la misma manera que lo hacen con otras pantallas externas, y no se necesita trabajo adicional. El sistema administra la conexión de red y transmite tu Presentación o cualquier otro contenido de la app a la pantalla inalámbrica según sea necesario.
Compatibilidad nativa con idiomas de escritura de derecha a izquierda (RTL)
![Duplicación de diseño RTL](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=7&hl=es)
Los desarrolladores ahora pueden duplicar sus diseños para idiomas con escritura de derecha a izquierda.
Android 4.2 presenta compatibilidad nativa completa para diseños de derecha a izquierda (de derecha a izquierda), incluida la duplicación de diseños. Gracias a la compatibilidad nativa con RTL, puedes ofrecer la misma gran experiencia de app a todos los usuarios, ya sea que su idioma use una secuencia de comandos que se lea de derecha a izquierda o uno que se lea de izquierda a derecha.
Cuando el usuario cambia el idioma del sistema a una secuencia de comandos de derecha a izquierda, el sistema ahora proporciona una duplicación automática de diseños de la IU de la app y todos los widgets de vista, además de duplicación bidireccional de elementos de texto para lectura y entrada de caracteres.
Tu app puede aprovechar la duplicación del diseño RTL con un mínimo esfuerzo. Si deseas que se duplique la app, simplemente debes declarar un nuevo atributo en el manifiesto de la app y cambiar todas las propiedades de diseño de "izquierda/derecha" a nuevos equivalentes de "inicio/finalización". Luego, el sistema se encargará de la duplicación y visualización de tu IU según corresponda.
Para lograr un control preciso sobre la IU de tu app, Android 4.2 incluye nuevas APIs que te permiten administrar la dirección del diseño, la dirección del texto, la alineación del texto, la gravedad y la dirección de la configuración regional en los componentes de View. Incluso puedes crear versiones personalizadas de diseño, elementos de diseño y otros recursos para mostrar cuando se use una secuencia de comandos de derecha a izquierda.
Para ayudarte a depurar y optimizar tus diseños personalizados de derecha a izquierda, la herramienta HierarchyViewer ahora te permite ver las propiedades de inicio y fin, la dirección del diseño, la dirección del texto y la alineación del texto para todos los objetos View de la jerarquía.
Mejoras para idiomas internacionales
Android 4.2 incluye una variedad de optimizaciones de fuentes y caracteres para usuarios internacionales:
- Para los usuarios coreanos, hay una nueva opción de fuente disponible: Nanum (ಠ눔글꼴) cardíaca, una fuente unicode diseñada especialmente para la secuencia de comandos en coreano.
- Compatibilidad mejorada para el texto vertical japonés que se muestra en WebViews.
- Interletraje y posicionamiento de fuentes mejorados para fuentes predeterminadas índicas, tailandesas, árabes y hebreas
El teclado predeterminado de Android también incluye un conjunto actualizado de diccionarios:
- Diccionarios mejorados para francés (compatible con bigrama), inglés y ruso
- Nuevos diccionarios para danés, griego, finlandés, lituano, letón, polaco, esloveno, serbio, sueco y turco
Nuevas formas de crear una IU atractiva
Fragmentos anidados
Para tener más control sobre los componentes de la IU y hacerlos más modulares, Android 4.2 te permite anidar fragmentos dentro de fragmentos. En el caso de cualquier fragmento, hay un nuevo administrador de fragmentos que te permite insertar otros fragmentos como nodos secundarios en la jerarquía de vistas.
Puedes usar los fragmentos anidados de varias maneras, pero son especialmente útiles para implementar componentes de IU dinámicos y reutilizables dentro de un componente de la IU que es dinámico y reutilizable. Por ejemplo, si usas ViewPager para crear fragmentos que se deslizan hacia la izquierda y la derecha, ahora puedes insertar fragmentos en cada fragmento del localizador de vistas.
Para que puedas aprovechar los fragmentos anidados de forma más amplia en tu app, esta función se agrega a la versión más reciente de la biblioteca de compatibilidad de Android.
Accesibilidad
El sistema ahora ayuda a los servicios de accesibilidad a distinguir entre la exploración táctil y los gestos de accesibilidad mientras está en modo de exploración táctil. Cuando un usuario toca la pantalla, el sistema notifica al servicio que se inició una interacción táctil genérica. Luego, hace un seguimiento de la velocidad de la interacción táctil, determina si se trata de una exploración táctil (lenta) o un gesto de accesibilidad (rápido), y notifica al servicio. Cuando finaliza la interacción táctil, el sistema notifica al servicio.
El sistema proporciona una nueva opción de accesibilidad global que permite que un servicio de accesibilidad abra el menú Configuración rápida en función de una acción del usuario. También se agregó en Android 4.2 un nuevo tipo de comentarios de accesibilidad para dispositivos braille.
Para brindar a los servicios de accesibilidad estadísticas sobre el significado de los objetos View con fines de accesibilidad, el framework proporciona nuevas APIs para asociar un objeto View como etiqueta de otro. La etiqueta de cada vista está disponible para los servicios de accesibilidad a través de AccessibilityNodeInfo.
Cámara mejorada con HDR
Android 4.2 presenta una nueva interfaz y canalización de hardware de cámara para un mejor rendimiento. En los dispositivos compatibles, las apps pueden usar un nuevo Modo panorámico de cámara HDR para capturar una imagen con técnicas de imágenes de alto rango dinámico.
Además, el framework ahora proporciona una API para permitir que las apps verifiquen si el sonido del obturador de la cámara se puede inhabilitar. Luego, las apps pueden permitir que el usuario inhabilite el sonido o elija un sonido alternativo en lugar del sonido estándar del obturador, como se recomienda.
Procesamiento de Renderscript
En Android 4.2, el procesamiento de Renderscript presenta nuevas funciones de secuencias de comandos, optimizaciones nuevas e integración directa de GPU para obtener el mayor rendimiento en las operaciones de procesamiento.
Filterscript
Filterscript es un subconjunto de Renderscript que se enfoca en el procesamiento de imágenes optimizado en una amplia gama de chipsets de dispositivos. Los desarrolladores pueden escribir sus operaciones de procesamiento de imágenes en Filterscript con la API de entorno de ejecución de Renderscript estándar, pero con restricciones más estrictas que garantizan una compatibilidad más amplia y una optimización mejorada entre CPU, GPU y DSP.
Filterscript es ideal para operaciones de procesamiento y procesamiento de imágenes simples de hardware acelerado, como las que se pueden escribir para sombreadores de fragmentos OpenGL ES. Debido a que establece un conjunto relajado de restricciones en el hardware, tus operaciones se optimizan y aceleran en más tipos de chipsets de dispositivos. Cualquier aplicación que se oriente al nivel de API 17, o a un nivel superior, puede usar Filterscript.
Elementos intrínsecos de secuencias de comandos
En Android 4.2, Renderscript agrega compatibilidad con un conjunto de funciones intrínsecas de secuencias de comandos: primitivas de filtrado implementadas previamente que se aceleran para reducir la cantidad de código que debes escribir y garantizar que tu app obtenga la máxima ganancia de rendimiento posible.
Las funciones intrínsecas están disponibles para combinaciones, desenfoque, matriz de color, convolución 3 x 3 y 5 x 5, tabla de consulta por canal y conversión de un búfer YUV de Android a RGB.
Grupos de secuencias de comandos
Ahora puedes crear grupos de secuencias de comandos de Renderscript y ejecutarlos todos con una sola llamada como si fueran parte de una sola secuencia de comandos. Esto permite que Renderscript optimice la ejecución de las secuencias de comandos de maneras que no podría hacerlo si las secuencias de comandos se ejecutaran individualmente.
![Gráfico de optimizaciones de Renderscipt](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=7&hl=es)
Las comparativas de procesamiento de imágenes de Renderscript se ejecutan en diferentes versiones de la plataforma de Android (Android 4.0, 4.1 y 4.2) solo en CPU de un dispositivo Galaxy Nexus.
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=7&hl=es)
Comparativas de procesamiento de imágenes de Renderscript que analizan operaciones ejecutadas con GPU + CPU en comparación con las ejecutadas solo en CPU en el mismo dispositivo Nexus 10.
Si tienes que ejecutar un grafo acíclico dirigido de operaciones de Renderscript, puedes usar una clase de compilador para crear un grupo de secuencias de comandos que defina las operaciones. En el tiempo de ejecución, Renderscript optimiza el orden de ejecución y las conexiones entre estas operaciones para obtener el mejor rendimiento.
Mejoras continuas de optimización
Cuando usas Renderscript para operaciones de procesamiento, tus apps se benefician de las mejoras continuas de rendimiento y optimización en el propio motor de Renderscript, sin ningún impacto en el código de tu app ni ninguna necesidad de recompilación.
A medida que mejora la optimización, tus operaciones se ejecutan más rápido y en más conjuntos de chips, sin ningún trabajo de tu parte. En el gráfico de la derecha, se destaca el aumento de rendimiento que ofrecen las mejoras continuas de optimización de Renderscript en versiones sucesivas de la plataforma de Android.
Procesamiento de GPU
El procesamiento de Renderscript es la primera plataforma de procesamiento adaptada para ejecutarse directamente en una GPU de dispositivo móvil. Ahora aprovecha automáticamente los recursos de computación de GPU siempre que es posible para mejorar el rendimiento. Con la integración de GPU, incluso los cálculos más complejos para el procesamiento de imágenes o gráficos pueden ejecutarse con un rendimiento significativamente mejorado.
Cualquier app que use Renderscript en un dispositivo compatible puede beneficiarse de inmediato de esta integración de GPU, sin necesidad de volver a compilar. La tablet Nexus 10 es el primer dispositivo que admite esta integración.
Nuevas opciones para desarrolladores integradas
El sistema Android 4.2 incluye una variedad de nuevas opciones para desarrolladores que facilitan la creación de apps con un excelente aspecto y un buen rendimiento. Las nuevas opciones exponen funciones para depurar y perfilar tu app desde cualquier dispositivo o emulador.
En los dispositivos que ejecutan Android 4.2, las opciones para desarrolladores están ocultas de forma predeterminada, lo que ayuda a crear una mejor experiencia para los usuarios. Puedes revelarlas en cualquier momento. Para ello, presiona 7 veces en Configuración > Acerca del teléfono > Número de compilación en cualquier dispositivo Android compatible.
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=7&hl=es)
Las nuevas opciones para desarrolladores te ofrecen más formas de perfilar y depurar en un dispositivo.
Las nuevas opciones para desarrolladores en Android 4.2 incluyen las siguientes:
- Iniciar informe de errores: Toma inmediatamente una captura de pantalla, vuelca la información del estado del dispositivo en el almacenamiento local de archivos y, luego, la adjunta a un nuevo mensaje de correo electrónico saliente.
- Informes de errores en el menú de encendido: Agrega una nueva opción al menú de encendido y la configuración rápida del dispositivo para iniciar un informe de errores (ver arriba).
- Verificar apps por USB: Te permite inhabilitar las verificaciones de apps para la transferencia de apps por USB, sin dejar de verificar apps de otras fuentes, como el navegador. Esto puede acelerar el proceso de desarrollo y mantener habilitada la función de seguridad.
- Mostrar actualizaciones de capas de hardware: Las capas de hardware parpadean en verde cuando se actualizan.
- Mostrar superposición de GPU: Destaca las áreas de superposición de la GPU.
- Forzar MSAA 4x: Habilita MSAA 4x en apps Open GL ES 2.0.
- Simular pantallas secundarias: Crea una o más ventanas de superposición no seguras en la pantalla actual para usar como pantalla remota simulada. Puedes controlar el tamaño y la densidad de la pantalla simulada.
- Seguimientos de OpenGL: Te permite hacer un seguimiento de la ejecución de OpenGL con Logcat, Systrace o la pila de llamadas en glGetError.
Nuevas tecnologías de plataforma
Android 4.2 incluye una variedad de tecnologías de plataforma nuevas y mejoradas para admitir casos de uso de comunicaciones innovadoras en una amplia gama de dispositivos de hardware. En la mayoría de los casos, las nuevas tecnologías y mejoras de la plataforma no afectan directamente a las apps, por lo que puedes beneficiarte de ellas sin ninguna modificación.
Mejoras de seguridad
Cada versión de Android incluye decenas de mejoras de seguridad para proteger a los usuarios. A continuación, se muestran algunas de las mejoras de Android 4.2:
- Verificación de aplicaciones: Los usuarios pueden habilitar la opción "Verificar aplicaciones" para que un verificador de aplicaciones analice estas aplicaciones antes de la instalación. La verificación de apps puede alertar al usuario si intenta instalar una app que podría ser dañina. Si una aplicación es particularmente mala, puede bloquear la instalación.
- Mayor control de los SMS premium: Android proporcionará una notificación si una aplicación intenta enviar SMS a un código corto que usa servicios premium que podrían generar cargos adicionales. El usuario puede elegir si permitir que la aplicación envíe el mensaje o bloquearlo.
- VPN siempre activada: La VPN se puede configurar para que las aplicaciones no tengan acceso a la red hasta que se establezca una conexión VPN. Esto evita que las aplicaciones envíen datos a través de otras redes.
- Fijación de certificados: La implementación de SSL de libcore ahora es compatible con la fijación de certificados. Los dominios fijados recibirán una falla de validación de certificados si el certificado no se encadena a un conjunto de certificados esperados. Esto brinda protección contra posibles riesgos de las autoridades certificadoras.
- Visualización mejorada de los permisos de Android: Los permisos se organizaron en grupos que los usuarios pueden comprender más fácilmente. Durante la revisión de los permisos, el usuario puede hacer clic en el permiso para ver información más detallada.
- Endurecimiento instalado: el daemon instalado no se ejecuta como el usuario raíz, lo que reduce la superficie de ataque potencial para la elevación de privilegios raíz.
- Endurecimiento de la secuencia de comandos init: Las secuencias de comandos init ahora aplican la semántica O_NOFOLLOW para evitar ataques relacionados con symlink.
- FORTIFY_SOURCE: Android ahora implementa FORTIFY_SOURCE. Las bibliotecas del sistema y las aplicaciones lo utilizan para evitar que se dañe la memoria.
- Configuración predeterminada de ContentProvider: Las aplicaciones que se orientan al nivel de API 17 tendrán "exportación" establecida en "false" de forma predeterminada para cada ContentProvider, lo que reduce la superficie de ataque predeterminada para las aplicaciones.
- Criptografía: Se modificaron las implementaciones predeterminadas de SecureRandom y Cipher.RSA para usar OpenSSL. Se agregó compatibilidad con SSLSocket para TLSv1.1 y TLSv1.2 mediante OpenSSL 1.0.1.
- Correcciones de seguridad: Las bibliotecas de código abierto actualizadas con correcciones de seguridad incluyen WebKit, libpng, OpenSSL y LibXML. Android 4.2 también incluye correcciones para vulnerabilidades específicas de Android. Se proporcionó información sobre estas vulnerabilidades a los miembros de Open Handset Alliance y las correcciones están disponibles en el Proyecto de código abierto de Android. Para mejorar la seguridad, algunos dispositivos con versiones anteriores de Android también pueden incluir estas correcciones.
Nueva pila Bluetooth
Android 4.2 presenta una nueva pila Bluetooth optimizada para su uso con dispositivos Android. La nueva pila Bluetooth desarrollada en colaboración entre Google y Broadcom reemplaza la pila basada en BlueZ y proporciona compatibilidad y confiabilidad mejoradas.Audio de baja latencia
Android 4.2 mejora la compatibilidad con la reproducción de audio de baja latencia a partir de las mejoras realizadas en la versión de Android 4.1 para la latencia de salida de audio con las APIs de OpenSL ES, Soundpool y generador de tonos. Estas mejoras dependen de la compatibilidad con el hardware: los dispositivos que ofrecen estas funciones de audio de baja latencia pueden anunciar su compatibilidad con las apps a través de una constante de función de hardware. Se proporcionan nuevas APIs de AudioManager para consultar la tasa de muestreo del audio nativo y el tamaño del búfer, para usar en dispositivos que reclaman esta función.
Nueva interfaz de hardware de la cámara
Android 4.2 presenta una nueva implementación de la pila de cámaras. El subsistema de cámara incluye implementaciones para componentes de la canalización de la cámara, como la captura en modo de ráfaga con controles de procesamiento.Nueva interfaz de hardware para NFC y nueva interfaz de controlador
Android 4.2 presenta compatibilidad con controladores basados en el estándar NCI de NFC Forum. NCI proporciona un protocolo de comunicación estándar entre un controlador NFC (NFCC) y un host del dispositivo, y la nueva pila NFC desarrollada en colaboración entre Google y Broadcom lo admite.Optimizaciones de tiempo de ejecución de Dalvik
El tiempo de ejecución de Dalvik incluye mejoras de rendimiento y seguridad en una gama más amplia de arquitecturas:
- Compatibilidad con JIT x86 de Intel y compatibilidad con JIT MIPS de MIPS
- Parámetros optimizados de recolección de elementos no utilizados para dispositivos con menos de 512 MB
- Las implementaciones predeterminadas de SecureRandom y Cipher.RSA ahora usan OpenSSL
- Compatibilidad de SSLSocket con TLSv1.1 y TLSv1.2 mediante OpenSSL 1.0.1
- Nueva compatibilidad intrínseca para los métodos StrictMath abs, min, max y sqrt
- BouncyCastle se actualizó a la versión 1.47
- zlib se actualizó a la versión 1.27
- dlmalloc se actualizó a la versión 2.8.6
Android 4.1
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=7&hl=es)
¡Bienvenido a Android 4.1, la primera versión de Jelly Bean!
Android 4.1 es la versión más rápida y fluida de Android hasta la fecha. Realizamos mejoras en toda la plataforma y agregamos nuevas funciones excelentes para los usuarios y desarrolladores. En este documento, se ofrece un panorama general de las novedades para desarrolladores.
Consulta el documento de las API de Android 4.1 para obtener un panorama detallado de las nuevas API de desarrollador.
Obtén más información acerca de las funciones de Jelly Bean para usuarios en www.android.com.
Más rápido, más fluido y con mayor respuesta
Android 4.1 está optimizado para ofrecer el mejor rendimiento de Android y la latencia de la pantalla táctil más baja en una interfaz de usuario intuitiva y sencilla.
A fin de garantizar una velocidad de fotogramas constante, Android 4.1 extiende la sincronización de vsync en todos los dibujos y animaciones realizados por el marco de Android. Todo se ejecuta a la vez con una señal de monitoreo de funcionamiento de vsync de 16 milisegundos como referencia: el procesamiento de aplicaciones, los eventos de la pantalla táctil, la composición de la pantalla y la actualización de la pantalla, de manera que los fotogramas no se atrasan ni se adelantan.
Android 4.1 también agrega triple almacenamiento en búfer en la canalización de gráficos, para una representación más coherente que hace que todo se sienta más fluido, desde el desplazamiento hasta la paginación y las animaciones.
Android 4.1 reduce la latencia de la pantalla táctil no solo mediante la sincronización táctil para la sincronización de vsync, sino también mediante la anticipación de dónde estará tu dedo en el momento de la actualización de la pantalla. De esta manera, se obtiene una respuesta táctil más reactiva y uniforme. Además, después de períodos de inactividad, Android aplica un aumento de entrada de CPU en el siguiente evento táctil para asegurarse de que no haya latencia.
Las herramientas pueden ayudarte a obtener el mejor rendimiento en tus apps. Android 4.1 está diseñado para funcionar con una herramienta nueva llamada systrace, que recopila datos directamente del kernel de Linux para producir un panorama general de las actividades del sistema. Los datos se representan como un grupo de gráficos de series temporales apilados verticalmente para ayudar a aislar las interrupciones de procesamiento y otros problemas. La herramienta ya está disponible en el SDK de Android (versión R20 de Herramientas o superior)
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=7&hl=es)
Accesibilidad mejorada
Las nuevas API para servicios de accesibilidad te permiten controlar gestos y administrar el enfoque de accesibilidad a medida que el usuario se mueve por los elementos en pantalla y los botones de navegación con gestos de accesibilidad, accesorios y otras entradas. El sistema Talkback y la función Explorar por tacto se rediseñaron para usar el enfoque de accesibilidad a fin de simplificar el uso y ofrecer un conjunto completo de API para desarrolladores.
Los servicios de accesibilidad pueden vincular sus propios tutoriales a la configuración de Accesibilidad con el fin de ayudar a los usuarios a configurar y usar sus servicios.
Las apps que usan componentes View estándar heredan la compatibilidad con las nuevas funciones de accesibilidad automáticamente, sin sufrir ningún cambio en su código. Las apps que usan objetos View personalizados pueden usar las nuevas API de nodo de accesibilidad para indicar las partes del objeto View que son de interés para los servicios de accesibilidad.
Compatibilidad con usuarios internacionales
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=7&hl=es)
Compatibilidad con texto bidireccional y otros idiomas
Android 4.1 te ayuda a llegar a más usuarios gracias a la compatibilidad con texto bidireccional en los elementos TextView y EditText. Las apps pueden mostrar texto o controlar la edición de texto en secuencias de comandos de izquierda a derecha o de derecha a izquierda. Además, pueden usar las nuevas configuraciones regionales en árabe y hebreo, y fuentes asociadas.
También se incluyen los siguientes tipos de compatibilidad de idiomas:
- Idiomas índicos adicionales: canarés, telugu y malabar
- Los nuevos caracteres de Emoji de la versión 6.0 de Unicode
- Mejor compatibilidad de glifos para usuarios japoneses (procesa versiones específicas de glifos en japonés cuando el idioma del sistema está configurado en japonés)
- Glifos árabes optimizados para WebViews además de los glifos árabes para TextViews
- Compatibilidad con texto vertical en WebViews, que incluye texto ruby y glifos de texto vertical adicionales
- La negrita sintética ahora está disponible para todas las fuentes que no tienen glifos en negrita dedicados
Mapas de teclas que el usuario puede instalar
La plataforma ahora admite mapas de teclas que el usuario puede instalar, como teclados internacionales adicionales y tipos de diseño especiales. De manera predeterminada, Android 4.1 incluye 27 mapas de teclas internacionales para teclados, incluido Dvorak. Cuando los usuarios conectan un teclado, pueden ir a la app de Configuración y seleccionar uno o más mapas de teclas para usar con ese teclado. Al escribir, los usuarios pueden cambiar entre mapas de teclas con una combinación de teclas (Ctrl + espacio).
Puedes crear una app para publicar mapas de teclas adicionales en el sistema. El APK debería incluir los recursos de diseño del teclado, sobre la base del formato estándar de mapa de teclas de Android. La aplicación puede ofrecer diseños de teclado adicionales para el usuario mediante la declaración de un receptor de emisión adecuado para ACTION_QUERY_KEYBOARD_LAYOUTS en su manifiesto.
Nuevas formas de crear una IU atractiva
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=7&hl=es)
Los desarrolladores pueden crear estilos de notificaciones personalizados, como los que se muestran en los ejemplos anteriores, para mostrar contenido enriquecido y acciones.
Notificaciones expandibles
Las notificaciones han sido durante mucho tiempo una función única y popular en Android. Los desarrolladores pueden usarlas para colocar frente a los usuarios información importante o basada en el tiempo en la barra de notificaciones, fuera de la IU normal de la app.
Android 4.1 incluye una actualización importante en el marco de notificaciones de Android. Ahora las apps pueden mostrar a los usuarios notificaciones más grandes y enriquecidas que se pueden expandir y contraer con un pellizco o deslizamiento. Las notificaciones admiten nuevos tipos de contenido, como fotos, tienen prioridad configurable y hasta pueden incluir múltiples acciones.
Mediante un generador de notificaciones mejorado, las apps pueden crear notificaciones que usen un área más grande, hasta 256 dp de altura. Hay tres estilos de notificaciones con plantilla disponibles:
- BigTextStyle: Es una notificación que incluye un objeto TextView de varias líneas.
- BigInboxStyle: Es una notificación que muestra cualquier tipo de lista, como mensajes, titulares, etc.
- BigPictureStyle: Es una notificación que muestra contenido visual, como un mapa de bits.
Además de los estilos con plantilla, puedes crear tus propios estilos de notificación con cualquier objeto View remoto.
Las apps pueden agregar hasta tres acciones a una notificación, que se mostrarán debajo del contenido de la notificación. Las acciones permiten a los usuarios responder directamente a la información en la notificación de varias formas, como por correo electrónico o por llamada telefónica, sin visitar la app.
Con notificaciones expandibles, las apps pueden brindar más información al usuario, sin esfuerzo y a pedido. Los usuarios mantienen el control y pueden mantener presionada cualquier notificación para obtener información acerca del remitente y, opcionalmente, inhabilitar otras notificaciones de la app.
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=7&hl=es)
Los widgets de apps pueden cambiar de tamaño automáticamente para adaptarse a la pantalla principal y cargar contenido diferente a medida que cambian sus tamaños.
Widgets de apps de tamaño variable
Android 4.1 presenta widgets de apps mejorados que pueden cambiar de tamaño automáticamente, según el lugar en que el usuario los suelte en la pantalla principal, el tamaño al que los expanda y la cantidad de espacio disponible en la pantalla principal. Las nuevas APIs de widgets de apps te permiten aprovechar esto para optimizar el contenido del widget de tu app a medida que cambia el tamaño de los widgets.
Cuando un widget cambia de tamaño, el sistema notifica al proveedor de widgets de la app host y este puede volver a cargar el contenido en el widget si es necesario. Por ejemplo, un widget podría mostrar gráficos más grandes y enriquecidos, o bien opciones y funcionalidades adicionales. Los desarrolladores siguen teniendo el control sobre los tamaños máximos y mínimos, y pueden actualizar otras opciones de widgets cuando sea necesario.
También puedes proporcionar diseños horizontales y verticales independientes para sus widgets, que el sistema amplía según corresponda cuando cambia la orientación de la pantalla.
Los widgets de apps ahora se pueden mostrar en selectores de terceros y otras apps host mediante un nuevo intent de vinculación (AppWidgetManager.ACTION_APPWIDGET_BIND).
Navegación de tareas simplificada
Android 4.1 te facilita la administración de la navegación "hacia arriba" a la que los usuarios pueden acceder desde el interior de tus apps y ayuda a garantizar una experiencia constate para los usuarios.
Puedes definir la navegación hacia arriba prevista para los componentes individuales del objeto Activity de tu IU agregando un nuevo atributo XML al archivo de manifiesto de la app. Durante el tiempo de ejecución, a medida que se inician los objetos Activity, el sistema extrae el árbol de navegación hacia arriba del archivo de manifiesto y crea automáticamente la navegación de prestación hacia arriba en la barra de acción. Los desarrolladores que declaran la navegación hacia arriba en el manifiesto ya no necesitan administrar la navegación mediante devolución de llamada en tiempo de ejecución, aunque también pueden hacerlo si es necesario.
También está disponible una nueva clase TaskStackBuilder que te permite armar rápidamente una pila de tareas sintética para que comience de inmediato o para usarla cuando se inicia un objeto Activity desde un PendingIntent. La creación de una pila de tareas sintética resulta especialmente útil cuando los usuarios inician objetos Activity desde vistas remotas, como desde widgets y notificaciones de la pantalla principal, ya que permite al desarrollador proporcionar una experiencia administrada y coherente en la navegación hacia atrás.
Animaciones sencillas para el inicio de Activity
Puedes usar una nueva clase de ayuda, ActivityOptions, para crear y controlar la animación que se muestra cuando inicias objetos Activity. Con esa clase, puedes especificar recursos de animación personalizados, para usarlos al iniciar la actividad, o solicitar nuevas animaciones de zoom que comiencen desde cualquier rectángulo que especifiques en la pantalla y que, de manera opcional, incluya un mapa de bits en miniatura.
Transiciones a los modos sin luces y de pantalla completa
Los nuevos indicadores de la IU del sistema del objeto View te permiten realizar una transición limpia de una IU normal de la app (con la barra de acción, la barra de navegación y la barra del sistema visibles), al "modo de luces apagadas" (con la barra de estado y la barra de acción ocultas, y la barra de navegación atenuada) o el "modo de pantalla completa" (con la barra de estado, la barra de acción y la barra de navegación ocultas).
Nuevos tipos de objetos View remotos
Los desarrolladores ahora pueden usar las vistas GridLayout y ViewStub en los widgets y notificaciones de la pantalla principal. GridLayout te permite estructurar el contenido de tus vistas remotas y administrar las alineaciones de vistas secundarias con una jerarquía de IU más superficial. ViewStub es un objeto View invisible de tamaño cero que se puede usar para ampliar lentamente los recursos de diseño durante el tiempo de ejecución.
Vista previa del fondo animado
Android 4.1 permite a los usuarios encontrar e instalar fondos de pantalla animados desde apps que los incluyen. Si tu app incluye fondos animados, ahora puedes iniciar un objeto Activity (ACTION_CHANGE_LIVE_WALLPAPER) que muestra al usuario una vista previa del fondo animado desde tu propia app. Desde la vista previa, los usuarios pueden cargar directamente el fondo animado.
Fotos de contacto de mayor resolución
Con Android 4.1, puedes almacenar fotos de contactos de hasta 720 x 720, por lo que los contactos son más enriquecidos y personales. Las apps pueden almacenar y recuperar fotos de contacto en ese tamaño o usar cualquier otro tamaño necesario. El tamaño máximo de fotos admitido en dispositivos específicos puede variar, por lo que las apps deben consultar al proveedor de contactos integrado durante el tiempo de ejecución para obtener el tamaño máximo del dispositivo actual.
Nuevos tipos y funciones de entrada
Obtén información acerca de los dispositivos que se agregaron y se quitaron
Las apps pueden registrarse para recibir una notificación cuando se conectan dispositivos de entrada nuevos mediante USB, Bluetooth o cualquier otro tipo de conexión. Pueden usar esta información para cambiar el estado o las funciones según sea necesario. Por ejemplo, un juego podría recibir una notificación de que hay un nuevo teclado o joystick conectado, lo que indicaría la presencia de un nuevo jugador.
Consulta las funciones de los dispositivos de entrada
Android 4.1 incluye API que permiten que las apps y los juegos aprovechen al máximo todos los dispositivos de entrada que estén conectados y disponibles.
Las apps pueden consultar al administrador de dispositivos para enumerar todos los dispositivos de entrada conectados actualmente y conocer las funciones de cada uno.
Control de vibración en dispositivos de entrada
Entre otras funciones, las apps ahora pueden usar cualquier servicio de vibración asociado con un dispositivo de entrada conectado, como los controladores Rumble Pak.
Animación y gráficos
Vsync para apps
Extender vsync a todo el framework de Android permite tener una velocidad de fotogramas más coherente y una IU fluida y estable. Para que las apps también se beneficien, Android 4.1 extiende la sincronización de vsync a todos los dibujos y animaciones que inician las apps. Esto les permite optimizar las operaciones en procesamiento de IU y proporciona una base de tiempo estable para la sincronización.
Las apps pueden aprovechar la sincronización de vsync de forma gratuita gracias al marco de animación de Android. El marco de animación ahora usa la sincronización de vsync para controlar automáticamente la sincronización entre los animadores.
Para usos especializados, las apps pueden acceder a la sincronización de vsync mediante las API expuestas por una nueva clase de Choreographer. Las apps pueden solicitar la invalidación en el próximo marco de vsync, lo cual es una buena manera de programar la animación cuando la app no está usando el marco de animación. Para usos más avanzados, las apps pueden publicar una devolución de llamada que la clase Choreographer ejecutará en el siguiente marco.
Nuevos tipos de transición y acciones de animación
El marco de animación ahora te permite definir acciones de inicio y finalización que se realizan al ejecutar las animaciones de ViewPropertyAnimator, para ayudar a sincronizarlas con otras animaciones o acciones en la aplicación. La acción puede ejecutar cualquier objeto ejecutable. Por ejemplo, el objeto ejecutable podría especificar otra animación para que comience cuando finalice la anterior.
Ahora también puedes especificar que un ViewPropertyAnimator use una capa durante el curso de su animación. Anteriormente, era una práctica recomendada animar vistas complicadas. Para ello, se configuraba una capa antes de comenzar una animación y luego se administraba un evento onAnimationEnd() para quitar la capa al finalizar la animación. Ahora, el método withLayer() en ViewPropertyAnimator simplifica este proceso con una sola llamada al método.
Un nuevo tipo de transición en LayoutTransition te permite automatizar animaciones en respuesta a todos los cambios de diseño en un ViewGroup.
Nuevos tipos de conectividad
Android Beam
Android Beam es una tecnología popular basada en NFC que permite a los usuarios compartir contenido instantáneamente, con solo hacer que dos teléfonos compatibles con NFC se toquen entre sí.
En Android 4.1, Android Beam hace que sea más fácil compartir imágenes, videos u otras cargas útiles al aprovechar Bluetooth para la transferencia de datos. Cuando el usuario activa una transferencia, Android Beam pasa de NFC a Bluetooth, lo que facilita la administración de la transferencia de un archivo de un dispositivo a otro.
Descubrimiento de servicios de red Wi-Fi
Android 4.1 presenta compatibilidad con descubrimiento de servicios basados en DNS multidifusión, que permite que las aplicaciones encuentren servicios ofrecidos por dispositivos similares y se conecten a ellos mediante redes Wi-Fi, incluidos dispositivos móviles, impresoras, cámaras, reproductores multimedia y otros. Los desarrolladores pueden aprovechar el descubrimiento de servicios de red Wi-Fi para crear juegos multiplataforma o multijugador y experiencias de aplicaciones.
Mediante la API de descubrimiento de servicios, las apps pueden crear y registrar cualquier tipo de servicio, para que cualquier otro dispositivo con NSD lo descubra. El servicio se anuncia por multidifusión a través de la red con un identificador de string de lenguaje natural, que permite al usuario identificar más fácilmente el tipo de servicio.
Los dispositivos de consumo pueden usar la API para buscar y descubrir servicios disponibles desde dispositivos conectados a la red Wi-Fi local. Después del descubrimiento, las apps pueden usar la API para resolver el servicio a una dirección IP y un puerto mediante el cual puede establecer una conexión de socket.
Puedes aprovechar esta API para crear nuevas funciones en tus aplicaciones. Por ejemplo, podrías permitir a los usuarios conectarse a una cámara web, una impresora o una app de otro dispositivo móvil que sea compatible con conexiones P2P Wi-Fi.
Descubrimiento de servicios Wi-Fi P2P
Ice Cream Sandwich introdujo la compatibilidad con Wi-Fi entre pares (P2P), una tecnología que permite que las apps descubren y se sincronicen directamente, a través de una conexión entre pares de alto ancho de banda (en cumplimiento con el programa de certificación Wi-Fi DirectTM de Wi-Fi Alliance). P2P Wi-Fi es una forma ideal de compartir contenido multimedia, fotos, archivos y otros tipos de datos y sesiones, incluso cuando no hay red móvil o Wi-Fi disponible.
Android 4.1 lleva P2P Wi-Fi más allá, y agrega compatibilidad de API para el descubrimiento de servicios asociados previamente. El descubrimiento de servicios asociados previamente permite que tus apps obtengan información más útil de los dispositivos cercanos sobre los servicios que admiten, antes de que intenten conectarse. Las apps pueden iniciar el descubrimiento de un servicio específico y filtrar la lista de dispositivos descubiertos en función de aquellos que realmente admiten el servicio o la aplicación de destino.
Esto significa, por ejemplo, que tu app podría descubrir solo dispositivos que sean "impresoras" o que tengan un juego específico disponible, en lugar de descubrir todos los dispositivos P2P Wi-Fi cercanos. Por otro lado, tu app puede anunciar el servicio que proporciona a otros dispositivos, que pueden descubrirlo y luego negociar una conexión. Esto simplifica enormemente el descubrimiento y la sincronización para los usuarios y permite que las apps aprovechen P2P Wi-Fi de manera más efectiva.
Con el descubrimiento del servicio P2P Wi-Fi, puedes crear apps y juegos multijugador que puedan compartir fotos, videos, juegos, puntuaciones o casi cualquier otro elemento, todo sin requerir ninguna red móvil o de Internet. Tus usuarios pueden conectarse solo con una conexión P2P directa, lo que evita el uso de ancho de banda móvil.
Administración del ancho de banda de red
Android 4.1 ayuda a las apps a administrar el uso de datos de manera adecuada cuando el dispositivo está conectado a una red de uso medido, incluida la conexión mediante dispositivo móvil o una zona móvil. Las aplicaciones pueden consultar si la red actual es de uso medido antes de comenzar una descarga grande que de otro modo podría ser relativamente costosa para el usuario. Con la API, ahora puedes obtener una imagen clara de qué redes tienen en cuenta el uso de datos y administrar tu actividad de red en consecuencia.
Nuevas funciones multimedia
Acceso a códecs multimedia
Android 4.1 proporciona acceso de bajo nivel a los códecs de hardware y software de la plataforma. Las apps pueden consultar el sistema para descubrir qué códecs multimedia de bajo nivel están disponibles en el dispositivo y luego usarlos según sus necesidades. Por ejemplo, ahora puedes crear varias instancias de un códec multimedia, poner en cola búferes de entrada y recibir búferes de salida a cambio. Además, el marco de códec multimedia admite contenido protegido. Las apps pueden consultar un códec disponible que pueda reproducir contenido protegido con una solución DRM disponible en el dispositivo.
Audio USB
La compatibilidad de salida de audio USB permite a los proveedores de hardware crear hardware, como conectores de audio que interactúan con dispositivos Android. Esta funcionalidad también se expone con el kit de desarrollo de accesorios abiertos (ADK) de Android para brindar a todos los desarrolladores la oportunidad de crear su propio hardware.
Activación de grabación de audio
Ahora, Android te permite activar la grabación de audio según la finalización de una pista de reproducción de audio, lo cual resulta útil para situaciones como reproducir un tono para indicar a los usuarios que deben comenzar a hablar para grabar sus voces. Esta función te ayuda a sincronizar la grabación para que no se grabe el audio que se está reproduciendo actualmente y evita que las grabaciones comiencen demasiado tarde.
Audio multicanal
Android 4.1 admite el audio multicanal en dispositivos que tienen salida de audio multicanal por hardware mediante el puerto HDMI. El audio multicanal te permite ofrecer experiencias multimedia enriquecidas a los usuarios para aplicaciones como juegos, apps de música y reproductores de video. Para los dispositivos que no cuentan con el hardware compatible, Android mezcla automáticamente el audio para la cantidad de canales admitidos por el dispositivo (generalmente estéreo).
Android 4.1 también agrega compatibilidad incorporada para codificar y decodificar audio AAC 5.1.
Preprocesamiento de audio
Los desarrolladores pueden aplicar efectos de preprocesamiento al audio que se está grabando, como reducción de ruido para mejorar la calidad de grabación de voz, cancelación del eco para el eco acústico y control de ganancia automática para audio con niveles de volumen inconstantes. Las apps que requieren grabación de audio claro y de alta calidad se beneficiarán de estos preprocesadores.
Encadenamiento de audio
MediaPlayer admite el encadenamiento de transmisiones de audio para reproducir archivos de audio sin pausas. Esta función es útil para apps que requieren transiciones perfectas entre archivos de audio, como reproductores de música para reproducir álbumes con pistas o juegos continuos.
Media Router
Las nuevas API de MediaRouter, MediaRouteActionProvider y MediaRouteButton proporcionan IU y mecanismos estándar para elegir dónde reproducir el contenido multimedia. Se incluye compatibilidad integrada con auriculares con cable y auriculares y bocinas Bluetooth a2dp. También puedes agregar tus propias opciones de enrutamiento dentro de tu app.
Procesamiento de Renderscript
Android 4.1 amplía el procesamiento de Renderscript para brindarte más flexibilidad. Ahora puedes hacer un muestreo de texturas en tus secuencias de comandos de procesamiento de Renderscript; también hay nuevos programas disponibles para definir la precisión de punto flotante requerida por tus secuencias de comandos. Esto te permite habilitar instrucciones NEON, como operaciones rápidas matemáticas de vector en la ruta de la CPU, que de otro modo no serían posibles con el estándar IEEE 754-2008 completo.
Ahora puedes depurar tus secuencias de comandos de procesamiento de Renderscript en emuladores basados en x86 y dispositivos de hardware. También puedes definir múltiples kernels de estilo raíz en un solo archivo de origen de Renderscript.
Navegador y WebView de Android
En Android 4.1, el navegador y los WebViews de Android incluyen las siguientes mejoras:
- Mejor experiencia del usuario de video HTML5, que incluye tocar para reproducir/pausar y una transición fluida del modo de intercalado al modo de pantalla completa.
- Velocidad de procesamiento mejorada y uso de memoria reducido para un mejor rendimiento de desplazamiento y zoom.
- Rendimiento mejorado de animación HTML5/CSS3/Canvas.
- Entrada de texto mejorada.
- Motor JavaScript actualizado (V8) para un mejor rendimiento de JavaScript.
- Compatibilidad con la especificación HTML5 de captura de contenido multimedia actualizada (el atributo "capture" en los elementos de entrada type=file).
API y servicios de Google
Para ampliar aún más las funciones de Android, hay varios servicios nuevos disponibles para Android.
Google Cloud Messaging para Android
Google Cloud Messaging (GCM) es un servicio que permite a los desarrolladores enviar datos en mensajes cortos a sus usuarios de dispositivos Android, sin necesidad de contar con una solución de sincronización propia.
GCM controla todos los aspectos de la colocación de los mensajes en cola y los entrega de manera eficaz a los dispositivos Android específicos. Admite la multidifusión de mensajes y puede llegar a hasta 1,000 dispositivos conectados simultáneamente con una sola solicitud. También admite cargas útiles de mensajes, lo que significa que, además de enviar mensajes de señales a una app en el dispositivo, los desarrolladores pueden enviar hasta 4,000 de datos.
Google Cloud Messaging es completamente gratuito para todos los desarrolladores y el registro es fácil. Consulta la página de Google Cloud Messaging para ver las descargas, la documentación y el registro.
Encriptación de apps
A partir de Android 4.1, Google Play ayudará a proteger los activos de la aplicación mediante la encriptación de todas las aplicaciones pagadas con una clave específica del dispositivo antes de que se entreguen y almacenen en un dispositivo.
Actualizaciones inteligentes de apps
Las actualizaciones inteligentes de apps son una nueva función de Google Play que ofrece una mejor manera de enviar actualizaciones de apps a los dispositivos. Cuando los desarrolladores publican una actualización, Google Play ahora solo entrega a los dispositivos los bits que cambiaron, en lugar del APK completo. Esto hace que las actualizaciones sean mucho más livianas en la mayoría de los casos, por lo que son más rápidas de descargar, ahorran la batería del dispositivo y conservan el uso del ancho de banda en el plan de datos móviles de los usuarios. En promedio, una actualización inteligente de app tiene aproximadamente 1/3 del tamaño de una actualización completa de APK.
Servicios de Google Play
Los Servicios de Google Play ayudan a los desarrolladores a integrar los servicios de Google, como la autenticación, en sus apps entregadas mediante Google Play.
Los Servicios de Google Play se aprovisionan automáticamente a los dispositivos de usuario final mediante Google Play, por lo que todo lo que necesitas es una biblioteca de cliente liviano en tus apps.
Debido a que tu app solo contiene la biblioteca de clientes pequeños, puedes aprovechar estos servicios sin un gran aumento en el tamaño de descarga y la huella de almacenamiento. Además, Google Play ofrecerá actualizaciones periódicas de los servicios, sin que los desarrolladores necesiten publicar actualizaciones de la app para aprovecharlas.
Para obtener más información sobre las API incluidas en los Servicios de Google Play, consulta la página del desarrollador de Servicios de Google Play.