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
- Agrega la clase
CalendarContract.Colors
para representar una tabla de colores en el Proveedor de Calendario. La clase proporciona campos para acceder a los colores disponibles para una cuenta determinada. Se hace referencia a los colores con COLOR_KEY
, que debe ser único para un nombre o tipo de cuenta determinado. Solo el adaptador de sincronización puede actualizar estos valores.
- Se agregaron
ALLOWED_AVAILABILITY
y ALLOWED_ATTENDEE_TYPES
para la compatibilidad con el intercambio o la sincronización.
- Agrega
TYPE_RESOURCE
(como salas de conferencias) para los asistentes y AVAILABILITY_TENTATIVE
, así como EVENT_COLOR_KEY
para los eventos.
CalendarContract.Colors
para representar una tabla de colores en el Proveedor de Calendario. La clase proporciona campos para acceder a los colores disponibles para una cuenta determinada. Se hace referencia a los colores con COLOR_KEY
, que debe ser único para un nombre o tipo de cuenta determinado. Solo el adaptador de sincronización puede actualizar estos valores.ALLOWED_AVAILABILITY
y ALLOWED_ATTENDEE_TYPES
para la compatibilidad con el intercambio o la sincronización.TYPE_RESOURCE
(como salas de conferencias) para los asistentes y AVAILABILITY_TENTATIVE
, así como EVENT_COLOR_KEY
para los eventos.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étodosgetSuggestionsAttributes()
ygetSuggestionsCount()
, 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
- El nuevo método
setDefaultBufferSize(int, int)
enSurfaceTexture
establece el tamaño predeterminado de los búferes de imagen. Este método se puede usar para establecer el tamaño de la imagen cuando se producen imágenes conCanvas
(a través delockCanvas(Rect)
) o OpenGL ES (a través de un EGLSurface). - Se agregan definiciones para las enums de la extensión GL_OES_EGL_image_external de OpenGL ES:
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
yGL_TEXTURE_EXTERNAL_OES
.
Accesibilidad
- Los clientes de
RemoteViews
ahora pueden usar el métodosetContentDescription()
para establecer y obtener la descripción del contenido de cualquier View en el diseño aumentado. - Los métodos
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
ysetMaxScrollY()
permiten que las apps obtengan y establezcan el desplazamiento máximo para un objetoAccessibilityRecord
. - 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 objetosCursor
normales en objetosCrossProcessCursor
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 queCursorWindow(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
MediaMetadataRetriever
agrega la nueva constanteMETADATA_KEY_LOCATION
para permitir que las apps accedan a la información de ubicación de una imagen o un video.CamcorderProfile
agrega los perfiles de resolución QVGA (320 x 240). El nivel de calidad se representa con las constantesQUALITY_QVGA
yQUALITY_TIME_LAPSE_QVGA
.- Los nuevos métodos
setVideoStabilization()
,getVideoStabilization()
yisVideoStabilizationSupported()
te permiten verificar y administrar la estabilización de video para unCamera
.
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.