APIs de Android 4.0.3

Nivel de API: 15

Android 4.0.3 (ICE_CREAM_SANDWICH_MR1) es una versión incremental de la familia de plataformas Android 4.0 (ICE_CREAM_SANDWICH). Esta versión incluye funciones nuevas para usuarios y desarrolladores, cambios en la API y varias correcciones de errores.

Para los desarrolladores, la plataforma de Android 4.0.3 está disponible como un componente descargable del SDK de Android. La plataforma descargable incluye una biblioteca y una imagen del sistema de Android, así como un conjunto de temas de emulador y mucho más. Para comenzar a desarrollar o realizar pruebas en Android 4.0.3, usa el Administrador de SDK de Android para descargar la plataforma en tu SDK.

Descripción general de la API

En las siguientes secciones, se proporciona una descripción general técnica de las nuevas APIs de Android 4.0.3.

API de Social Stream en el proveedor de contactos

Las aplicaciones que usan datos de flujos sociales, como actualizaciones de estado y registros, ahora pueden sincronizar esos datos con cada uno de los contactos del usuario y proporcionar elementos en un flujo junto con fotos de cada uno.

La tabla de la base de datos que contiene el flujo de redes sociales de un contacto individual se define en android.provider.ContactsContract.StreamItems, cuyo URI está anidado dentro del directorio ContactsContract.RawContacts al que pertenecen los elementos del flujo. Cada tabla de flujo social incluye varias columnas para metadatos sobre cada elemento del flujo, como un ícono que representa la fuente (un avatar), una etiqueta para el elemento, el contenido de texto principal, los comentarios sobre el elemento (como las respuestas de otras personas) y mucho más. Las fotos asociadas con un flujo se almacenan en otra tabla, definida por android.provider.ContactsContract.StreamItemPhotos, que está disponible como subdirectorio del URI android.provider.ContactsContract.StreamItems.

Consulta android.provider.ContactsContract.StreamItems y android.provider.ContactsContract.StreamItemPhotos para obtener más información.

Para leer o escribir elementos de un flujo de redes sociales de un contacto, una aplicación debe solicitarle permiso al usuario declarando <uses-permission android:name="android.permission.READ_SOCIAL_STREAM"> o <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM"> en sus archivos de manifiesto.

Proveedor de Calendario

Widgets de la pantalla principal

A partir de Android 4.0, los widgets de la pantalla principal ya no deben incluir su propio padding. En cambio, el sistema ahora agrega automáticamente relleno para cada widget según las características de la pantalla actual. Esto genera una presentación más uniforme y consistente de widgets en una cuadrícula. Para ayudar a las apps que alojan widgets de la pantalla principal, la plataforma proporciona un nuevo método getDefaultPaddingForWidget(). Las aplicaciones pueden llamar a este método para obtener el padding definido por el sistema y tenerlo en cuenta cuando calculan la cantidad de celdas que se asignarán al widget.

Corrector ortográfico

  • En el caso de las apps que acceden a servicios de corrector ortográfico, un nuevo método cancel() cancela las tareas pendientes y en ejecución del corrector ortográfico en una sesión.
  • En el caso de los servicios de corrector ortográfico, una nueva marca de sugerencias, RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS, permite que los servicios distingan las sugerencias con mayor confianza de las que tienen menos confianza. Por ejemplo, un corrector ortográfico podría establecer la marca si una palabra ingresada no está en el diccionario del usuario, pero tiene sugerencias probables, o no establecer la marca si una palabra ingresada no está en el diccionario y tiene sugerencias que probablemente sean menos útiles.

    Las apps conectadas al corrector ortográfico pueden usar la marca RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS en combinación con otros atributos de sugerencias, así como los métodos getSuggestionsAttributes() y getSuggestionsCount(), para determinar si se deben marcar las palabras ingresadas como errores tipográficos y ofrecer sugerencias.

  • Un nuevo estilo FLAG_AUTO_CORRECTION para los intervalos de texto indica que la corrección automática está a punto de aplicarse a una palabra o un texto que el usuario está escribiendo o componiendo. Este tipo de sugerencia se renderiza de manera diferente para indicar que se está realizando la corrección automática.

Bluetooth

Los nuevos métodos públicos fetchUuidsWithSdp() y getUuids() permiten que las apps determinen las funciones (UUIDs) que admite un dispositivo remoto. En el caso de fetchUuidsWithSdp(), el sistema realiza un descubrimiento de servicios en el dispositivo remoto para obtener los UUID compatibles y, luego, transmite el resultado en un intent ACTION_UUID.

Kit de herramientas de la IU

Los nuevos métodos setUserVisibleHint() y getUserVisibleHint() permiten que un fragmento establezca una sugerencia de si el usuario lo puede ver o no. El sistema aplaza el inicio de los fragmentos que no son visibles para el usuario hasta que se ejecuten los cargadores de fragmentos visibles. La sugerencia de visibilidad es "true" de forma predeterminada.

Gráficos

Accesibilidad

  • Los clientes de RemoteViews ahora pueden usar el método setContentDescription() para establecer y obtener la descripción del contenido de cualquier View en el diseño aumentado.
  • Los métodos getMaxScrollX(), getMaxScrollY(), setMaxScrollX() y setMaxScrollY() permiten que las apps obtengan y establezcan el desplazamiento máximo para un objeto AccessibilityRecord.
  • Cuando el modo de exploración táctil está habilitado, un nuevo parámetro de configuración seguro ACCESSIBILITY_SPEAK_PASSWORD indica si el usuario solicita que el IME lea el texto ingresado en los campos de contraseña, incluso cuando no se usan auriculares. De forma predeterminada, no se dice el texto de la contraseña, a menos que se usen auriculares.

Texto a voz

  • Se agregó el nuevo método getFeatures() para consultar y habilitar la compatibilidad con la función de TTS de red.
  • Agrega una nueva clase de objeto de escucha, UtteranceProgressListener, que los motores pueden registrar para recibir notificaciones de errores de síntesis de voz.

Base de datos

  • Una nueva clase CrossProcessCursorWrapper permite que los proveedores de contenido muestren resultados de una consulta entre procesos de manera más eficiente. La clase nueva es un componente básico útil para unir cursores que se enviarán a procesos de forma remota. También puede transformar objetos Cursor normales en objetos CrossProcessCursor de forma transparente.

    La clase CrossProcessCursorWrapper corrige problemas de rendimiento y errores comunes que las aplicaciones encontraron cuando implementaban proveedores de contenido.

  • El constructor CursorWindow(java.lang.String) ahora toma una cadena de nombre como entrada. El sistema ya no distingue entre ventanas de cursor locales y remotas, por lo que CursorWindow(boolean) ahora está obsoleto.

Intents

Se agregaron categorías nuevas para segmentar tipos comunes de aplicaciones en el dispositivo, como CATEGORY_APP_BROWSER, CATEGORY_APP_CALENDAR, CATEGORY_APP_MAPS y muchas más.

Cámara

Permisos

Los siguientes son permisos nuevos:

  • android.Manifest.permission#READ_SOCIAL_STREAM y android.Manifest.permission#WRITE_SOCIAL_STREAM: Permite que un adaptador de sincronización lea y escriba datos de flujos sociales en un contacto del proveedor de contactos compartido.

Para obtener una vista detallada de todos los cambios de API en Android 4.0.3 (nivel de API 15), consulta el Informe de diferencias de API.

Nivel de API

A la API de Android 4.0.3 se le asigna un identificador de número entero (15) que se almacena en el sistema. Este identificador, llamado "nivel de API", permite que el sistema determine correctamente si una aplicación es compatible con el sistema antes de instalarla.

Para usar las APIs que se introdujeron en Android 4.0.3 en tu aplicación, debes compilarla con una plataforma de Android que admita el nivel de API 15 o versiones posteriores. Según tus necesidades, es posible que también debas agregar un atributo android:minSdkVersion="15" al elemento <uses-sdk>.

Para obtener más información, consulta el documento Niveles de API.