APIs de Android 3.2

Nivel de API: 13

Android 3.2 (HONEYCOMB_MR2) es una versión incremental de la plataforma que agrega nuevas funciones para los usuarios y los desarrolladores. En las siguientes secciones, se proporciona una descripción general de las nuevas funciones y APIs para desarrolladores.

Para los desarrolladores, la plataforma Android 3.2 está disponible como componente descargable del SDK de Android. La plataforma descargable incluye una biblioteca de Android, una imagen del sistema, un conjunto de máscaras de emulador y mucho más. Para comenzar a desarrollar o probar con Android 3.2, usa SDK Manager de Android para descargar la plataforma en tu SDK.

Aspectos destacados de la plataforma

Nuevas funciones del usuario

  • Optimizaciones para una gama más amplia de tablets

    Android 3.2 incluye una variedad de optimizaciones en todo el sistema para garantizar una excelente experiencia del usuario en una gama más amplia de tablets.

  • Zoom de compatibilidad para apps de tamaño fijo

    Android 3.2 presenta un nuevo modo de zoom de compatibilidad que brinda a los usuarios una nueva forma de ver apps de tamaño fijo en dispositivos más grandes. El modo nuevo proporciona una alternativa con escala de píxeles a la estiramiento de la IU estándar para apps que no están diseñadas para ejecutarse en tamaños de pantalla más grandes, como en las tablets. Los usuarios pueden acceder al modo nuevo desde un ícono de menú en la barra del sistema para apps que necesitan compatibilidad.

  • Sincronización de contenido multimedia desde la tarjeta SD

    En los dispositivos que admiten una tarjeta SD, los usuarios ahora pueden cargar archivos multimedia directamente desde la tarjeta SD a las apps que los usan. Una instalación del sistema permite que las apps puedan acceder a los archivos desde la tienda de contenido multimedia del sistema.

Nuevas funciones para desarrolladores

  • API extendida para administrar pantallas compatibles

    Android 3.2 presenta extensiones en la API de compatibilidad de pantalla de la plataforma para brindar a los desarrolladores formas adicionales de administrar la IU de la aplicación en la variedad de dispositivos con tecnología Android. La API incluye nuevos calificadores de recursos y nuevos atributos de manifiesto que te brindan un control más preciso sobre cómo se muestran tus apps en diferentes tamaños, en lugar de depender de categorías de tamaño generalizadas.

    Para garantizar la mejor visualización posible para apps de tamaño fijo y apps con compatibilidad limitada con varios tamaños de pantalla, la plataforma también proporciona un nuevo modo de compatibilidad de zoom que renderiza la IU en un área de pantalla más pequeña y la escala para llenar el espacio disponible en la pantalla. Para obtener más información sobre la API de compatibilidad de pantallas y los controles que proporciona, consulta las siguientes secciones.

Descripción general de la API

APIs de compatibilidad de pantallas

Android 3.2 presenta nuevas API de compatibilidad con pantallas que te brindan más control sobre cómo se muestran sus aplicaciones en diferentes tamaños de pantalla. La API se basa en la API de compatibilidad de pantallas existente, incluido el modelo generalizado de densidad de pantalla de la plataforma, pero lo extiende con la capacidad de orientarse con precisión a rangos de pantalla específicos por sus dimensiones, medidas en unidades de píxeles independientes de la densidad (como 600 dp o 720 dp de ancho), en lugar de hacerlo por sus tamaños de pantalla generalizados (como grande o extragrande).

Cuando diseñas la IU de una aplicación, aún puedes confiar en la plataforma para proporcionar abstracción de densidad, lo que significa que las aplicaciones no necesitan compensar las diferencias en la densidad de píxeles real entre los dispositivos. Puedes diseñar la IU de la aplicación según la cantidad de espacio horizontal o vertical disponible. La plataforma expresa la cantidad de espacio disponible mediante tres características nuevas: smallestWidth, width y height.

  • El smallestWidth de una pantalla es su tamaño mínimo fundamental, medido en unidades de píxeles independientes de la densidad ("dp"). Del alto o del ancho de la pantalla, es el más corto de los dos. Para una pantalla en orientación vertical, el valor más pequeño por lo general se basa en su ancho, mientras que, en orientación horizontal, se basa en su altura. En todos los casos, el ancho más pequeño se deriva de una característica fija de la pantalla y el valor no cambia, independientemente de la orientación. El ancho más pequeño es importante para las aplicaciones porque representa el ancho más corto posible en el que se deberá dibujar la IU de la aplicación, sin incluir las áreas de la pantalla que reserva el sistema.
  • Por el contrario, el ancho y la altura de una pantalla representan el espacio horizontal o vertical actual disponible para el diseño de la app, medido en unidades "dp", sin incluir las áreas de la pantalla reservadas por el sistema. El ancho y la altura de una pantalla cambian cuando el usuario cambia la orientación entre horizontal y vertical.

La API de compatibilidad de pantallas nuevas está diseñada para que puedas administrar la IU de la aplicación de acuerdo con el ancho más pequeño de la pantalla actual. También puedes administrar la IU según el ancho o la altura actuales, según sea necesario. Para esos fines, la API proporciona las siguientes herramientas:

  • Nuevos calificadores de recursos para orientar diseños y otros recursos a un ancho mínimo, ancho o altura mínimos
  • Nuevos atributos de manifiesto para especificar el rango máximo de compatibilidad de pantalla de la app

Además, las aplicaciones aún pueden consultar el sistema y administrar la IU y la carga de recursos en el tiempo de ejecución, como en las versiones anteriores de la plataforma.

Dado que la nueva API te permite orientar pantallas de forma más directa mediante el ancho, el ancho y el alto, es útil comprender las características típicas de los diferentes tipos de pantalla. En la siguiente tabla, se proporcionan algunos ejemplos, medidos en unidades "dp".

Tabla 1: Dispositivos típicos, con densidad y tamaño en dp.

Tipo Densidad (generalizada) Dimensiones (dp) ancho más pequeño (dp)
Teléfono de referencia mdpi 320x480 320
Tablet pequeña/teléfono grande mdpi 480 × 800 480
Tablet de 7 pulgadas mdpi 600 x 1,024 600
Tablet de 10 pulgadas mdpi 800 x 1,280 800

En las siguientes secciones, se proporciona más información sobre los nuevos calificadores de pantalla y atributos del manifiesto. Para obtener información completa sobre cómo usar la API de compatibilidad de pantallas, consulta Compatibilidad con varias pantallas.

Nuevos calificadores de recursos para la compatibilidad con pantallas

Los nuevos calificadores de recursos de Android 3.2 te permiten orientar mejor tus diseños para rangos de tamaños de pantalla. Con los calificadores, puedes crear configuraciones de recursos diseñadas para un ancho mínimo específico, un ancho actual o una altura actual, medidos en píxeles independientes de la densidad.

Los nuevos calificadores son los siguientes:

  • swNNNdp: Especifica el ancho mínimo más pequeño en el que se debe usar el recurso, medido en unidades "dp". Como se mencionó anteriormente, el ancho más pequeño de una pantalla es constante, independientemente de la orientación. Ejemplos: sw320dp, sw720dp y sw720dp.
  • wNNNdp y hNNNdp: Especifican el ancho o la altura mínimos en los que se debe usar el recurso, medido en unidades "dp". Como se mencionó anteriormente, el ancho y la altura de una pantalla se relacionan con su orientación y cambian cada vez que cambia la orientación. Ejemplos: w320dp, w720dp y h1024dp.

También puedes crear varios parámetros de configuración de recursos superpuestos si es necesario. Por ejemplo, puedes etiquetar algunos recursos para usarlos en cualquier pantalla con un ancho superior a 480 dp, otros para un ancho superior a 600 dp y otros para un ancho superior a 720 dp. Cuando se califican varias configuraciones de recursos para una pantalla determinada, el sistema selecciona la configuración que sea la más cercana. Para controlar de forma precisa los recursos que se cargan en una pantalla determinada, puedes etiquetar los recursos con un calificador o combinar varios calificadores nuevos o existentes.

Según las dimensiones típicas enumeradas anteriormente, estos son algunos ejemplos de cómo puedes usar los nuevos calificadores:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

Las versiones anteriores de la plataforma ignorarán los nuevos calificadores, por lo que puedes combinarlos según sea necesario para asegurarte de que tu app se vea bien en cualquier dispositivo. Estos son algunos ejemplos:

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

Para obtener información completa sobre cómo usar los nuevos calificadores, consulta Cómo usar nuevos calificadores de tamaño.

Nuevos atributos del manifiesto para la compatibilidad con el tamaño de pantalla

El framework ofrece un nuevo conjunto de atributos de manifiesto <supports-screens> que te permiten administrar la compatibilidad de tu app con diferentes tamaños de pantalla. En particular, puedes especificar las pantallas más grandes y pequeñas en las que está diseñada tu app para ejecutarse, así como la pantalla más grande en la que está diseñada se ejecute sin necesidad del nuevo modo de compatibilidad de pantalla del sistema. Al igual que los calificadores de recursos descritos anteriormente, los nuevos atributos del manifiesto especifican el rango de pantallas que admite la aplicación, según lo especificado por el valor más pequeño de ancho.

Los nuevos atributos del manifiesto para la compatibilidad con pantallas son los siguientes:

  • android:compatibleWidthLimitDp="numDp": Este atributo te permite especificar el ancho más pequeño en el que puede ejecutarse la aplicación sin necesidad de modo de compatibilidad. Si la pantalla actual es mayor que el valor especificado, el sistema muestra la aplicación en modo normal, pero le permite al usuario cambiar, de manera opcional, al modo de compatibilidad mediante una configuración en la barra del sistema.
  • android:largestWidthLimitDp="numDp": Este atributo te permite especificar el ancho más pequeño máximo en el que la aplicación está diseñada para ejecutarse. Si la pantalla actual es mayor que el valor especificado, el sistema fuerza la aplicación al modo de compatibilidad de pantalla para garantizar que se muestre la mejor manera de la pantalla actual.
  • android:requiresSmallestWidthDp="numDp": Este atributo te permite especificar el ancho mínimo mínimo en el que se puede ejecutar la aplicación. Si la pantalla actual es más pequeña que el valor especificado, el sistema considera que la aplicación no es compatible con el dispositivo, pero no impide que se instale y se ejecute.

Nota: Por el momento, Google Play no filtra apps en función de ninguno de los atributos anteriores. Se agregará compatibilidad con el filtrado en una versión posterior de la plataforma. Las aplicaciones que requieren filtrado según el tamaño de la pantalla pueden usar los atributos <supports-screens> existentes.

Para obtener información completa sobre el uso de los atributos nuevos, consulta Cómo declarar la compatibilidad con tamaños de pantalla.

Modo de compatibilidad de pantalla

Android 3.2 proporciona un nuevo modo de compatibilidad de pantalla para aplicaciones que declaran explícitamente que no admiten pantallas tan grandes como la que se ejecuta. Este nuevo modo de "zoom" tiene escala de píxeles; procesa la aplicación en un área de pantalla más pequeña y, luego, ajusta los píxeles para llenar la pantalla actual.

De forma predeterminada, el sistema ofrece el modo de compatibilidad de pantalla como opción del usuario para las apps que lo requieren. Los usuarios pueden activar y desactivar el modo de zoom con un control disponible en la barra del sistema.

Dado que el nuevo modo de compatibilidad de pantalla puede no ser apropiado para todas las aplicaciones, la plataforma permite que la aplicación lo inhabilite mediante los atributos del manifiesto. Cuando la app la inhabilita, el sistema no ofrece el modo de compatibilidad "zoom" como opción para los usuarios mientras se ejecuta la app.

Nota: Si deseas obtener información importante sobre cómo controlar el modo de compatibilidad en tus aplicaciones, consulta el artículo Nuevo modo para apps en pantallas grandes en el Blog para desarrolladores de Android.

Nueva densidad de pantalla para televisiones de 720p y dispositivos similares

Para satisfacer las necesidades de las aplicaciones que se ejecutan en televisores de 720p o similares con pantallas de densidad moderada, Android 3.2 presenta una nueva densidad generalizada, tvdpi, con un DPI aproximado de 213. Las aplicaciones pueden consultar la nueva densidad en densityDpi y pueden usar el nuevo calificador tvdpi para etiquetar recursos para televisiones y dispositivos similares. Por ejemplo:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

En general, las aplicaciones no deberían funcionar con esta densidad. En situaciones en las que se necesita un resultado para una pantalla de 720p, la plataforma puede escalar automáticamente los elementos de la IU.

Framework de IU

  • Fragmentos
    • La nueva clase Fragment.SavedState contiene la información de estado recuperada de una instancia de fragmento mediante saveFragmentInstanceState().
    • El nuevo método saveFragmentInstanceState() guarda el estado actual de la instancia de un fragmento determinado. El estado se puede usar más adelante cuando se crea una nueva instancia del fragmento que coincida con el estado actual.
    • El nuevo método setInitialSavedState() establece el estado guardado inicial de un fragmento cuando se construye por primera vez.
    • El nuevo método de devolución de llamada onViewCreated() notifica al fragmento que onCreateView() mostró, pero antes de que se restablezca cualquier estado guardado en View.
    • El método isDetached() determina si el fragmento se desvinculó de manera explícita de la IU.
    • Los nuevos métodos attach() y detach() permiten que una aplicación vuelva a adjuntar o desconectar fragmentos en la IU.
    • Un nuevo método de sobrecarga setCustomAnimations() te permite configurar recursos de animación específicos para que se ejecuten en las operaciones de entrada y salida y, en particular, cuando se abre la pila de actividades. La implementación existente no tiene en cuenta el diferente comportamiento de los fragmentos cuando se abre la pila de actividades.
  • Información sobre el tamaño de la pantalla en ActivityInfo y ApplicationInfo
  • Ayudantes para obtener el tamaño de visualización de WindowManager
    • Los nuevos métodos getSize() y getRectSize() permiten que las aplicaciones obtengan el tamaño sin procesar de la pantalla.
  • Nuevos estilos "holográficos" públicos
    • La plataforma ahora expone una variedad de estilos "holográficos" públicos para texto, widgets y pestañas de barra de acciones, y mucho más. Consulta R.style para ver la lista completa.
  • LocalActivityManager, ActivityGroup y LocalActivityManager dejaron de estar disponibles
    • Las aplicaciones nuevas deben usar fragmentos en lugar de estas clases. Para continuar ejecutándose en versiones anteriores de la plataforma, puedes usar la Biblioteca de compatibilidad v4 (biblioteca de compatibilidad), disponible en el SDK de Android. La biblioteca de compatibilidad v4 proporciona una versión de la API de Fragment que es compatible hasta Android 1.6 (API nivel 4).
    • En el caso de las apps que se desarrollan para Android 3.0 (nivel de API 11) o versiones posteriores, las pestañas generalmente se presentan en la IU con el nuevo ActionBar.newTab() y las APIs relacionadas para colocar pestañas dentro del área de la barra de acciones.

Marco de trabajo multimedia

  • Las aplicaciones que usan el proveedor de contenido multimedia de la plataforma (MediaStore) ahora pueden leer datos multimedia directamente desde la tarjeta SD extraíble, cuando el dispositivo lo admita. Las aplicaciones también pueden interactuar con los archivos de la tarjeta SD directamente mediante la API de MTP.

Gráficos

Marco de IME

  • Nuevo método getModifiers() para recuperar el estado actual de las teclas modificadoras.

Marco de trabajo USB

  • Nuevo método getRawDescriptors() para recuperar los descriptores USB sin procesar del dispositivo. Puedes usar el método para acceder a descriptores que no se admiten directamente a través de las APIs de nivel superior.

Red

Telefonía

Utilidades principales

Nuevas constantes de funciones

La plataforma agrega nuevas constantes de funciones de hardware que puedes declarar en los manifiestos de la aplicación para informar a entidades externas, como Google Play, las capacidades requeridas de hardware y software. Debes declarar estas y otras constantes de funciones en los elementos del manifiesto <uses-feature>.

Google Play filtra las aplicaciones según sus atributos <uses-feature> para garantizar que solo estén disponibles para los dispositivos que cumplan con sus requisitos.

  • Constantes de funciones para requisitos de orientación horizontal o vertical

    Android 3.2 introduce constantes de funciones nuevas que permiten a las aplicaciones especificar si se requiere que se muestren en orientación horizontal, vertical o ambas. El hecho de declarar estas constantes indica que la aplicación no se debe instalar en un dispositivo que no ofrezca la orientación asociada. Por el contrario, si no se declara una o ambas constantes, significa que la app no tiene preferencia por las orientaciones no declaradas y se puede instalar en un dispositivo que no las ofrezca.

    Por lo general, una aplicación típica que funciona de manera correcta tanto en orientación horizontal como vertical no necesita declarar un requisito de orientación. En su lugar, una aplicación diseñada principalmente para una orientación, como una app diseñada para una televisión, podría declarar una de las constantes a fin de garantizar que no esté disponible para dispositivos que no la proporcionen.

    Si alguna de las actividades declaradas en el manifiesto solicita que se ejecuten en una orientación específica mediante el atributo android:screenOrientation, esto también declara que la aplicación requiere esa orientación.

  • Otras constantes de funciones

Informe de diferencias de las APIs

Para obtener una vista detallada de todos los cambios de la API en Android 3.2 (nivel de API 13), consulta el Informe de diferencias de las APIs.

Nivel de API

La plataforma de Android 3.2 entrega una versión actualizada de la API de framework. A la API de Android 3.2 se le asigna un identificador de número entero, 13, que se almacena en el propio sistema. Este identificador, llamado "nivel de API", permite que el sistema determine correctamente si una aplicación es compatible con él antes de instalarla.

Para usar las APIs de Android 3.2 en tu aplicación, debes compilarla en la biblioteca de Android que se proporciona en la plataforma del SDK de Android 3.2. Según tus necesidades, es posible que también debas agregar un atributo android:minSdkVersion="13" al elemento <uses-sdk> en el manifiesto de la aplicación.

Para obtener más información, consulta ¿Qué es el nivel de API?