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 general de las novedades para desarrolladores.
Consulta el documento de las API 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 con mayor respuesta
Android 4.3 se basa en las mejoras de rendimiento que ya incluía Jelly Bean (sincronización de vsync, triple almacenamiento en búfer, latencia de la pantalla táctil reducida, mejor entrada de CPU y renderización 2D con aceleración de hardware) y agrega nuevas optimizaciones que hacen que Android sea aún más rápido.
Para aumentar el rendimiento de los gráficos, el procesador 2D de hardware acelerado ahora optimiza el flujo de comandos de dibujo y lo transforma en un formato de GPU más eficiente al reorganizar y fusionar las operaciones de dibujo. Para el procesamiento multiproceso, el renderizador ahora también puede usar multiproceso en varios núcleos de CPU para 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 de una manera más eficiente. Las optimizaciones de texto incluyen mayor rendimiento cuando se utilizan múltiples fuentes o conjuntos de glifos complejos (CJK), mayor calidad de procesamiento al escalar texto y representación más rápida de las 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 comenzar el procesamiento cuando creas una ventana.
Para obtener gráficos de mayor rendimiento, Android 4.3 incorpora compatibilidad con OpenGL ES 3.0 y permite que las apps accedan a él a través del framework y las APIs nativas. En los dispositivos compatibles, el motor de renderización 2D con aceleración de hardware aprovecha OpenGL ES 3.0 para optimizar la administración de texturas y aumentar la fidelidad de renderización de gradientes.
OpenGL ES 3.0 para gráficos de alto rendimiento
Android 4.3 incorpora compatibilidad con plataformas para Khronos OpenGL ES 3.0, lo que les proporciona a los juegos y otras apps capacidades de gráficos 2D y 3D del más alto rendimiento en dispositivos compatibles. Puedes aprovechar OpenGL ES 3.0 y las extensiones EGL relacionadas con las API de framework o vinculaciones de API nativa mediante el kit de desarrollo nativo (NDK) de Android.
Las nuevas funciones clave que se proporcionan en OpenGL ES 3.0 incluyen la aceleración de los efectos visuales avanzados, la compresión de texturas ETC2/EAC de alta calidad como función estándar, una nueva versión del lenguaje de sombreado GLSL ES con compatibilidad con números enteros y punto flotante de 32 bits, renderización de texturas avanzada y formatos de tamaño de textura y búfer de renderización estandarizados.
Puedes usar las APIs de OpenGL ES 3.0 para crear gráficos altamente complejos y eficientes que se ejecutan en una variedad de dispositivos Android compatibles y también puedes admitir un único formato estándar de compresión de texturas en esos dispositivos.
OpenGL ES 3.0 es una función opcional que depende del hardware de gráficos subyacente. La compatibilidad 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 de bajo consumo que utilizan la tecnología Bluetooth Smart.
Android 4.3 incorpora compatibilidad de plataforma integrada para Bluetooth Smart Ready en la función central 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 dispositivos y servicios de interés de manera eficiente. Para cada dispositivo, puedes verificar los servicios GATT compatibles mediante el UUID y administrar las conexiones mediante el ID de dispositivo y la 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 para 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, controladores de juegos, controles remotos, dispositivos de salud y mucho más.
La compatibilidad con Bluetooth Smart Ready ya está disponible en los dispositivos Nexus 7 (2013) y Nexus 4. En los próximos meses, una cantidad cada vez mayor de dispositivos Android compatibles podrá usarse.
Perfil AVRCP 1.3
Android 4.3 agrega compatibilidad integrada con Bluetooth AVRCP 1.3, para que tus apps puedan admitir interacciones más ricas con dispositivos de transmisión de medios remotos. Las apps como los reproductores multimedia pueden aprovechar AVRCP 1.3 gracias a las APIs de cliente de control remoto que se presentan en Android 4.0. Además de exponer los controles de reproducción en los dispositivos remotos conectados con Bluetooth, ahora las apps 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 que presentaron Google y Broadcom en Android 4.2. La compatibilidad está disponible de inmediato en los dispositivos Nexus y otros dispositivos compatibles con Android que ofrecen capacidades de A2DP/AVRCP.
Compatibilidad con perfiles restringidos
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 posibilidad 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 más.
Cada perfil restringido ofrece un espacio aislado y seguro con almacenamiento local, pantallas principales, configuraciones y widgets propios. A diferencia de los usuarios, los perfiles se crean desde el entorno del propietario de la tablet y se basan en las apps instaladas por el propietario y las cuentas del sistema. El propietario controla qué apps instaladas estarán habilitadas en el nuevo perfil. Además, el acceso a las cuentas del propietario está inhabilitado de manera predeterminada.
Las apps que necesitan acceder a las cuentas del propietario (para el acceso a las cuentas, las preferencias y otros usos) pueden aceptar declarar un atributo 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 tus 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 en las opciones de configuración del perfil mediante tipos booleanos, de selección y de multiselección predefinidos. Si quieres tener más flexibilidad, incluso puedes iniciar tu propia IU desde las opciones 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 adecuadamente. Por ejemplo, una app multimedia puede ofrecer una restricción que permita al propietario configurar un nivel de madurez para el perfil. Durante el tiempo de 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 usarla en perfiles restringidos, puedes rechazarlos por completo, de modo que no se pueda habilitar en ningún perfil restringido.
Ubicación optimizada y funciones de sensor
Servicios de Google Play ofrece APIs de ubicación avanzada que puedes usar en tus apps. Android 4.3 optimiza estas APIs en dispositivos compatibles con nuevas funciones 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 geovallado de hardware, las APIs de geovallado de 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 encendida la búsqueda de Wi-Fi sin conectarse a una red de Wi-Fi a fin de mejorar la precisión de la ubicación mientras se conserva la batería. Las apps que dependen de la conexión Wi-Fi para los servicios de ubicación ahora pueden solicitar a los usuarios que habiliten el modo de solo búsqueda de Wi-Fi desde la configuración avanzada. 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 y cálculos de sesgos a las apps.
Las nuevas funciones de hardware ya están disponibles en los dispositivos Nexus 7 (2013) y Nexus 4, y cualquier fabricante de dispositivos o proveedor de conjuntos de chips puede incorporarlos 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 framework de DRM modular que permite a los desarrolladores de aplicaciones multimedia integrar DRM con mayor facilidad en sus propios protocolos de transmisión, como MPEG DASH (transmisión adaptable dinámica a través de HTTP, ISO/IEC 23009-1).
Mediante una combinación de nuevas APIs y mejoras a las APIs existentes, el marco DRM multimedia proporciona un conjunto integrado de servicios para la administración de licencias y el aprovisionamiento, el acceso a códecs de bajo nivel y la decodificación de datos de medios encriptados. Una nueva API de MediaExtractor te permite obtener los metadatos PSSH para los medios DASH. Las apps que usan el framework de DRM multimedia administran la comunicación con la red mediante un servidor de licencias y controlan la transmisión de datos encriptados desde una biblioteca de contenido.
Codificador VP8
Android 4.3 incluye compatibilidad integrada con la codificación VP8, a la que se puede acceder desde 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 codificación VP8 incluye opciones de configuración para filtros de bucle, tasa de bits objetivo, control de velocidad, velocidad de fotogramas, partición de tokens, resistencia de errores y reconstrucción. 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 con Android 4.3. Para un mayor rendimiento, la plataforma también admite la codificación VP8 de hardware acelerado 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 demultiplexación multimedia presentadas en Android 4.2.
Progreso y arrastre de la reproducción en clientes de 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, notificaciones y dispositivos remotos conectados mediante 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 siempre fueron una función muy popular de Android porque permiten a los usuarios ver 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 forma que deseen, incluido el envío a dispositivos cercanos conectados mediante Bluetooth.
Puedes acceder a las notificaciones a través de nuevas APIs que te permiten registrar un servicio de detección 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 de manera completa, con todos los detalles de la app que las origina, la hora de publicación, la apariencia 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 llamadas cuando se agrega, se actualiza y se quita una notificación (ya sea porque el usuario la descartó o porque la app en la que se originó la retiró). Podrás iniciar cualquier intent adjunto a la notificación o sus acciones, y también descartarla del sistema, y así permitir que tu 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 y ver qué apps tienen acceso a 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 para habilitar el servicio de detección después de la instalación.
Superposición de objetos View
Ahora puedes crear superposiciones transparentes sobre objetos View y ViewGroup para procesar una jerarquía de vista temporal o efectos de animación transitorios sin alterar la jerarquía de diseño subyacente. Las superposiciones son particularmente útiles cuando quieres crear animaciones, como deslizar una vista fuera de su contenedor o arrastrar elementos en la pantalla sin afectar la jerarquía de la vista.
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 brillos.
Tipos de animación con rotación personalizada
Las apps ahora pueden definir los tipos de animación de entrada y salida que se usan en una ventana cuando se gira el dispositivo. Puedes configurar las propiedades de la ventana para habilitar la rotación de ventana de corte abrupto, fundición entre recursos o estándar. El sistema usa los tipos de animación personalizada cuando la ventana es de 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 objetos Activity a fin de garantizar que se muestren en la orientación adecuada 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 desactivar la rotación mientras se graba un video.
Intent para controlar respuestas rápidas
Android 4.3 incorpora un nuevo intent público que permite que cualquier app controle respuestas rápidas, que son mensajes de texto enviados por el usuario en respuesta a una llamada entrante, sin necesidad de contestar la llamada o desbloquear el dispositivo. Tu app puede escuchar el intent y enviar el mensaje a la persona que llama mediante tu sistema de mensajería. El intent incluye al destinatario (la persona que llama) y el mensaje en sí.
Compatibilidad con usuarios internacionales
Mejoras para escritura de derecha a izquierda (RTL)
Android 4.3 incluye mejoras en el rendimiento de RTL y una mayor compatibilidad para ese tipo de idiomas en todos los widgets de la IU de 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 son compatibles con RTL, 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 RTL, ahora hay más apps predeterminadas del sistema que admiten diseños RTL, entre las que se incluyen Launcher, Configuración rápida, Teléfono, Personas, Asistente de configuración, Reloj, Descargas y más.
Utilidades para localización
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 cadenas Unicode, de modo que los datos de secuencias de comandos de RTL se muestren según lo previsto en los mensajes de configuración regional de escritura de izquierda a derecha, y viceversa. Para permitirte utilizar 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 mediante el paquete de asistencia en el SDK de Android.
Para ayudarte a administrar el formato de fecha en las configuraciones regionales, Android 4.3 incluye un nuevo método llamado getBestDateTimePattern() que genera automáticamente la mejor forma localizada posible de una fecha Unicode UTS para una configuración regional que tú especifiques. Es una forma práctica de proporcionar una experiencia más localizada a tus usuarios.
Para ayudarte a probar tu app más fácilmente en otras configuraciones regionales, Android 4.3 presenta pseudoconfiguraciones regionales como una nueva opción para desarrolladores. Las pseudo configuraciones regionales simulan el idioma, la secuencia de comandos y las características de visualización asociadas con una configuración regional o un grupo de idiomas. Actualmente, puedes probar con una pseudo configuración regional para inglés acentuado, lo que te permite ver cómo funciona tu IU con acentos y caracteres de secuencias de comandos que se utilizan en una variedad de 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 capability para poder acceder a las funciones relacionadas de la plataforma. El sistema utiliza 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.
Sobre la base del marco de accesibilidad de Android 4.3, un nuevo marco de automatización de IU permite que las pruebas interactúen con la IU del dispositivo mediante la simulación de acciones del usuario e 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 poderosa de automatizar las pruebas en escenarios de usuario realistas, incluidas las acciones o secuencias que abarcan múltiples aplicaciones.
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 el Protocolo de autenticación extensible (EAP) y las credenciales de EAP encapsuladas (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 EAP y Fase 2.
Zona de pruebas de Android reforzada con SELinux
Ahora, Android usa SELinux, un sistema de control de acceso obligatorio (MAC) del 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 utilizar, y pueden agregarse al almacén de claves sin ninguna interacción del usuario.
El proveedor de almacén de claves proporciona los mismos beneficios de seguridad que proporciona la API de KeyChain para las credenciales de todo el sistema, como las credenciales de vinculación con 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 procesos generados por Zygote, lo cual evita que las aplicaciones de Android ejecuten programas setuid
. De esta manera, se reduce la superficie de ataque de raíz y la probabilidad de posibles vulnerabilidades de seguridad.
Nuevas formas de analizar el rendimiento
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 da acceso a más tipos de información para perfilar el rendimiento de tu app. Ahora puedes recopilar datos de registro de módulos de hardware, funciones de kernel, máquina virtual Dalvik, incluida 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 registro con los eventos de inicio/finalización de Systrace. Cuando se ejecutan las secciones marcadas del código, el sistema escribe los eventos de inicio/finalización en el registro. 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 está haciendo tu app.
Puedes visualizar eventos específicos de la app en una línea de tiempo en el archivo de salida de Systrace y analizar los eventos en el contexto de otros datos de registro de kernel y 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.
Generación de perfiles de GPU en pantalla
Android 4.3 agrega nuevas opciones para desarrolladores que te ayudan a analizar el rendimiento de tu app y detectar problemas de procesamiento en cualquier dispositivo o emulador.
En la opción Representación GPU del perfil ahora puedes visualizar la velocidad de fotogramas efectiva de tu app en pantalla, mientras la app se está ejecutando. Puedes elegir mostrar los datos del perfil 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 continuamente y muestra un gráfico para cada objeto Activity visible, incluidas la barra de navegación y la barra 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, toca 7 veces en Configuración > Acerca del dispositivo > 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 muestra una advertencia 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 del URI file://
; por lo tanto, al compartir archivos entre apps, se debe usar un URI content://
(con el permiso apropiado). Esta nueva política te ayuda a detectar y solucionar estos casos. Si estás buscando una manera conveniente de almacenar y exponer archivos a otras apps, intenta usar el proveedor de contenido FileProvider
que está disponible en la Biblioteca de compatibilidad.
Android 4.2
¡Bienvenido a Android 4.2, la versión más reciente de Jelly Bean!
Android 4.2 tiene optimizaciones de rendimiento, una interfaz de usuario del sistema actualizada y nuevas funciones excelentes para 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.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 incluía Jelly Bean: sincronización de vsync, triple almacenamiento en búfer, latencia de la pantalla táctil reducida y mejor entrada de CPU, y agrega nuevas optimizaciones que hacen que Android sea aún más rápido.
Las mejoras en el procesador 2D de hardware acelerado 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 algunas 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 cómputo adaptada para ejecutarse directamente en un GPU de dispositivo móvil. Aprovecha automáticamente los recursos de computación de GPU siempre que le resulta posible, lo que 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 la experiencia del usuario de Jelly Bean de una mejor manera y ofrece patrones familiares de 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 tener cada uno acceso conveniente a un espacio de usuario dedicado. Los usuarios pueden cambiar a sus espacios con solo tocar una vez desde la pantalla bloqueada.
En un dispositivo multiusuario, Android ofrece a cada usuario un entorno separado, que incluye el almacenamiento de la tarjeta SD emulado específico del usuario. Además, los usuarios 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 se asegura de que las aplicaciones y los datos de cada usuario permanezcan aislados. De hecho, cada uno de los múltiples 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 nuevo usuario 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 nueva instancia 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 nada especial para ejecutarse normalmente en un entorno multiusuario ni se requieren cambios en los APK 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
Widgets en la pantalla de bloqueo
En Android 4.2, los usuarios pueden colocar widgets de apps directamente en sus pantallas bloqueadas, lo cual les permite acceder de inmediato al contenido de su app favorita sin tener que desbloquear el dispositivo. Los usuarios pueden agregar hasta cinco widgets a la pantalla bloqueada y elegirlos entre los widgets proporcionados por 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 hacia la derecha para ver diferentes paneles y sus widgets.
Al igual que todos los widgets de apps, los widgets de la pantalla bloqueada pueden mostrar cualquier tipo de contenido y aceptar la interacción directa del usuario. Pueden ser autónomos por completo, como un widget que ofrece controles para reproducir música, o pueden permitir a los usuarios ir directamente a un objeto Activity en tu app después de desbloquear la pantalla si es necesario.
Para los desarrolladores, los widgets de la pantalla bloqueada ofrecen una nueva forma de atraer a los usuarios. Te permiten poner tu contenido frente a los usuarios en una ubicación que verán con frecuencia y te ofrecen más oportunidades para atraer usuarios directamente a tu app.
Puedes aprovechar esta nueva función al crear un nuevo widget de app o extender un widget de pantalla principal existente. Si tu app ya incluye widgets de 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 usar el área de pantalla bloqueada completa cuando esté disponible y cambiar el tamaño cuando sea necesario en pantallas más pequeñas. También puedes agregar funciones a tus widgets que podrían resultar 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. El 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 fondos de pantalla animados y widgets de pantalla principal, pero son más potentes. Te permiten ofrecer cualquier tipo de contenido en un contexto nuevo, con interacciones del usuario, como pasar fotos, reproducir audio o video, o saltar directamente a tu app con solo tocar la pantalla una vez.
Debido a que los daydream se pueden iniciar de manera automática cuando un dispositivo se está cargando o está conectado, también ofrecen a tu app una excelente manera de admitir nuevos tipos de experiencias de usuario, como el modo leanback o de exhibición, el modo kiosco o demo, y el "modo atraer", todo sin necesidad de contar con hardware especial.
Los daydream son similares a los objetos Activity y pueden hacer lo mismo que ellos, desde procesar una jerarquía de IU (sin usar RemoteViews) hasta dibujar directamente con Canvas, OpenGL, SurfaceTexture y más. Pueden reproducir video y audio, y hasta pueden 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.
Puedes implementar un daydream de manera directa y aprovechar los recursos y componentes de IU que ya creaste para otras partes de tu app. Puedes proporcionar múltiples daydream en tu app y ofrecer contenido distinto y opciones de configuración de visualización 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, por ejemplo, el tamaño, la densidad, el nombre comercial, el ID, la compatibilidad con videos seguros y más. Tu app también puede recibir devoluciones de llamada cuando se agregan o quitan pantallas, o cuando cambian sus capacidades, para administrar mejor tu contenido en pantallas externas.
Ventana de presentación
Para facilitar la visualización de contenido en una pantalla externa, el framework proporciona un nuevo objeto de IU llamado Presentación, 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 un contenido único para mostrar. La presentación controla el aumento de los recursos y procesa tu contenido según las características de la pantalla de destino.
Una presentación le ofrece a tu app el control total sobre la ventana de visualización remota y su contenido, y te permite administrarla en función de los eventos de entrada del usuario, como presionar teclas, los gestos, los eventos de movimiento y más. Puedes usar todas las herramientas normales para crear una IU y renderizar contenido en la presentación, desde crear una jerarquía de vista arbitraria hasta usar SurfaceView o SurfaceTexture para dibujar directamente en la ventana para el contenido transmitido o las vistas previas de la cámara.
Selección de pantalla preferida
Cuando hay varias pantallas externas disponibles, puedes crear tantas Presentaciones como sea necesario y cada una de ellas mostrará contenido único en una pantalla específica. En muchos casos, es posible que solo desees mostrar tu contenido en una sola pantalla externa, pero siempre en la que sea mejor para el contenido de Presentación. Para ello, el sistema puede ayudar a tu app a elegir la mejor pantalla para usar.
Para 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 la pantalla cambia. Como alternativa, puedes usar el servicio de enrutador de medios, 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 el objeto Activity 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 enrutador de medios para ofrecer una IU de selección de pantalla estándar.
Contenido protegido
Para las apps que manejan contenido protegido o encriptado, ahora la API de pantalla informa las funciones de video seguro de las pantallas adjuntas. Tu app consulta una pantalla para averiguar si ofrece una salida de video seguro o proporciona búferes de gráficos protegidos y luego elige la transmisión o decodificación de contenido adecuados 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 o en una salida de pantalla no segura, incluso cuando se duplica.
Pantalla inalámbrica
A partir de Android 4.2, los usuarios de dispositivos compatibles pueden conectarse a una pantalla externa mediante Wi-Fi, con Pantalla Wi-Fi (una solución de pantalla inalámbrica entre pares que cumple con el programa de certificación Miracast™). Cuando hay una pantalla inalámbrica conectada, los usuarios pueden transmitir cualquier tipo de contenido a la pantalla grande, lo que incluye fotos, juegos, mapas y 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)
Android 4.2 incorpora compatibilidad nativa plena para diseños RTL que incluye la duplicación del diseño. Con la compatibilidad nativa con RTL, puedes ofrecer la misma gran experiencia de app a todos tus usuarios, ya sea que su idioma use una secuencia de comandos que se lea de derecha a izquierda o uno que 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 los diseños de la IU de la app y todos los widgets de vista, además de la 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 quieres que la app se duplique, simplemente, declara un nuevo atributo en el manifiesto de la app y cambia todas las propiedades de diseño "izquierda/derecha" a nuevos equivalentes "inicio/fin". Luego, el sistema se encargará de la duplicación y visualización de tu IU según corresponda.
Para tener un control preciso sobre la IU de tu app, Android 4.2 incluye nuevas APIs que le 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 ubicación en los componentes de View. Incluso puedes crear versiones personalizadas de diseño, elementos de diseño y otros recursos para mostrar cuando se utiliza 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/finalización, 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 la siguiente variedad de optimizaciones de fuentes y caracteres para usuarios internacionales:
- Para los usuarios coreanos, hay una nueva opción de fuente disponible: Nanum (나눔글꼴) Gothic, 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 tus componentes de la IU y hacerlos más modulares, Android 4.2 te permite anidar fragmentos dentro de fragmentos. Un nuevo administrador de fragmentos te permite insertar otros fragmentos como nodos secundarios de cualquier fragmento en la jerarquía de View.
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 IU que es dinámico y reutilizable. Por ejemplo, si usas ViewPager para crear fragmentos que se deslizan hacia la izquierda y hacia la derecha, ahora puedes insertar fragmentos en cada fragmento del localizador de vistas.
Para permitirte aprovechar más ampliamente los fragmentos anidados 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 exploración táctil y 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 y determina si es una exploración táctil (lenta) o un gesto de accesibilidad (rápida) y notifica al servicio. Cuando la interacción táctil finaliza, 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ú de 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 View. La etiqueta de cada objeto View está disponible para los servicios de accesibilidad mediante 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. Las apps pueden permitir al usuario inhabilitar el sonido o elegir un sonido alternativo en lugar del sonido del obturador estándar, el cual se recomienda.
Procesamiento de Renderscript
En Android 4.2, el procesamiento de Renderscript presenta nuevas funciones de secuencia de comandos, nuevas optimizaciones e integración directa de GPU para el mayor rendimiento en las operaciones de computación.
Filterscript
Filterscript es un subconjunto de Renderscript que se centra 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 mediante la API de tiempo de ejecución de Renderscript estándar, pero dentro de restricciones más estrictas que aseguran una compatibilidad más amplia y una optimización mejorada entre CPU, GPU y DSP.
Filterscript es ideal para operaciones de cálculo y procesamiento de imágenes simples de hardware acelerado, como las que podrían escribirse 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 elementos intrínsecos de secuencias de comandos: primitivos de filtrado implementados previamente que se aceleran para reducir la cantidad de código que necesitas escribir y para garantizar que tu app obtenga la máxima ganancia de rendimiento posible.
Los elementos intrínsecos están disponibles para mezclas, 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 una manera que no sería posible si las secuencias de comandos se ejecutaran individualmente.
Las comparativas de procesamiento de imágenes de Renderscript se ejecutan en diferentes versiones de la plataforma Android (Android 4.0, 4.1 y 4.2) solo en CPU de un dispositivo Galaxy Nexus.
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 gráfico acíclico dirigido de operaciones Renderscript, puedes usar un builder para crear un grupo de secuencias de comandos que defina las operaciones. En el momento de la 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 utilizas Renderscript para operaciones de cálculo, tus apps se benefician de las mejoras continuas de rendimiento y optimización del mismo 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 que tengas que realizar ningún trabajo. El gráfico de la derecha destaca el aumento de rendimiento que ofrecen las mejoras continuas de optimización de Renderscript en versiones sucesivas de la plataforma Android.
Procesamiento de GPU
El procesamiento de Renderscript es la primera plataforma de cómputo adaptada para ejecutarse directamente en un GPU de dispositivo móvil. Ahora aprovecha automáticamente los recursos de computación de GPU siempre que le resulta posible para mejorar el rendimiento. Con la integración de GPU, incluso los cálculos más complejos para 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 inmediatamente 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 que funcionan bien. Las nuevas opciones presentan funciones para depurar y perfilar tu app desde cualquier dispositivo o emulador.
En dispositivos con 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, toca 7 veces en Configuración > Acerca del dispositivo > Número de compilación en cualquier dispositivo Android compatible.
Las nuevas opciones para desarrolladores en Android 4.2 incluyen las siguientes:
- Iniciar informe de errores: Toma inmediatamente una captura de pantalla, descarga la información del estado del dispositivo en el almacenamiento local de archivos y luego los 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 aplicaciones por USB: Te permite inhabilitar las comprobaciones de apps para la transferencia de apps por USB, sin dejar de verificar apps de otras fuentes, como el navegador. Con esta opción, puedes acelerar el proceso de desarrollo y mantener la función de seguridad habilitada.
- Ver actualiz. de capas de hardware: Las capas de hardware parpadean en color verde cuando se actualizan.
- Mostrar superposición de GPU: Destaca las áreas de superposición de 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 nuevas y mejoradas tecnologías de plataforma que permiten admitir casos prácticos 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 tus apps, por lo que puedes beneficiarte de ellas sin realizar ninguna modificación.
Mejoras de seguridad
Todas las versiones de Android incluyen docenas 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 elegir habilitar "Verificar aplicaciones" y hacer que las aplicaciones sean revisadas por un verificador de aplicaciones antes de la instalación. La verificación de aplicaciones puede alertar al usuario si intenta instalar una app que puede ser dañina. Si una app es particularmente mala, puede bloquear su 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 utiliza servicios premium que pueden generar cargos adicionales. El usuario puede elegir si desea permitir que la aplicación envíe el mensaje o bloquearla.
- 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. De esta manera, se 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 un error de validación de certificado si el certificado no se encadena a un conjunto de certificados esperados. Esto brinda protección contra posibles compromisos 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 de installd: El daemon installd no se ejecuta como 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: Ahora, las secuencias de comandos init aplican la semántica O_NOFOLLOW para evitar ataques relacionados con symlink.
- FORTIFY_SOURCE: Android ahora implementa FORTIFY_SOURCE. Esto lo utilizan las bibliotecas y aplicaciones del sistema para evitar daños en la memoria.
- Configuración predeterminada de ContentProvider: Las aplicaciones que se orientan al nivel de API 17 tendrán "exportar" establecido en "falso" 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. Los miembros de Open Handset Alliance recibieron información acerca de estas vulnerabilidades y las correcciones están disponibles en el Proyecto de código abierto de Android. Para mejorar la seguridad, es posible que algunos dispositivos con versiones anteriores de Android también incluyan 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 conjunto 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 de audio nativa y el tamaño del búfer que pueden usarse 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 la norma NCI de NFC Forum. NCI proporciona un protocolo de comunicación estándar entre un controlador NFC (NFCC) y un host del dispositivo, que es compatible con la nueva pila NFC desarrollada en conjunto entre Google y Broadcom.Optimizaciones de tiempo de ejecución de Dalvik
El tiempo de ejecución de Dalvik incluye mejoras de rendimiento y seguridad en una amplia gama de arquitecturas, que se muestran a continuación:
- 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
¡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 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 próximo 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 nueva herramienta llamada systrace, que recopila datos directamente del kernel de Linux para producir una imagen 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)
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
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
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, incluidas 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 notificación 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.
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 la 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 a través de un nuevo intent vinculado (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 de pantalla animados, ahora puedes iniciar una Activity (ACTION_CHANGE_LIVE_WALLPAPER) que le muestre 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 foto admitido en dispositivos específicos puede variar, por lo que las apps deberían consultar al proveedor de contactos incorporado durante el tiempo de ejecución para obtener el tamaño máximo para el 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 contar con 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 iniciados por 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 presentó compatibilidad con conexión entre pares (P2P) Wi-Fi, una tecnología que permite a las apps descubrir y sincronizarse directamente, mediante una conexión de alto ancho de banda entre pares (que cumpla con el programa de certificación Wi-Fi Direct™ 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 ofrecer 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. De esta manera, puedes habilitar las instrucciones NEON, como operaciones rápidas de matemáticas de vector en la ruta del CPU, que de otra manera 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 alcanzar hasta 1,000 dispositivos conectados simultáneamente con una sola solicitud. También admite cargas útiles de mensajes, lo cual significa que, además de enviar mensajes de señales a una app en el dispositivo, los desarrolladores pueden enviar hasta 4 KB 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 entrega solo los bits que cambiaron a los dispositivos, en lugar de todo el APK. Esto hace que las actualizaciones sean mucho más livianas en la mayoría de los casos, por lo que se descargan más rápido, 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.