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 Android 4.0.3 está disponible como un componente descargable del SDK de Android. La plataforma descargable incluye una imagen del sistema y una biblioteca de Android, así como un conjunto de máscaras de emulador y mucho más. Para comenzar a desarrollar o realizar pruebas con Android 4.0.3, usa Android SDK Manager 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 API en Android 4.0.3.
API de Social Stream en el Proveedor de contactos
Las aplicaciones que usan datos de redes sociales, como actualizaciones de estado y registros, ahora pueden sincronizar esos datos con cada uno de los contactos del usuario y proporcionar elementos en una transmisión junto con fotos de cada uno.
La tabla de base de datos que contiene el flujo social de un contacto individual se define con android.provider.kotlin.StreamItems, el URI que está anidado dentro del directorio ContactsContract.RawContacts
al que pertenecen los elementos de la transmisión. Cada tabla de transmisión social incluye varias columnas de metadatos sobre cada elemento de la transmisión, como un ícono que representa la fuente (un avatar), una etiqueta para el elemento, el contenido de texto principal, comentarios sobre el elemento (como respuestas de otras personas) y mucho más. Las fotos asociadas con una transmisión se almacenan en otra tabla, definida por android.provider.kotlin.StreamItemPhotos, que está disponible como subdirectorio del URI android.provider.ContactsContract.StreamItems.
Consulta android.provider.Tabla.StreamItems y android.provider.Tabla.StreamItemPhotos para obtener más información.
Para leer o escribir elementos de redes sociales de un contacto, una aplicación debe solicitar el permiso del 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 a fin de acceder a los colores disponibles para una cuenta determinada. COLOR_KEY
hace referencia a los colores, que deben ser únicos para un nombre o tipo de cuenta determinado. Solo el adaptador de sincronización puede actualizar estos valores.
- Agrega
ALLOWED_AVAILABILITY
y ALLOWED_ATTENDEE_TYPES
para brindar compatibilidad con intercambio y sincronización.
- Agrega
TYPE_RESOURCE
(como salas de conferencias) para asistentes y AVAILABILITY_TENTATIVE
, al igual que EVENT_COLOR_KEY
para eventos.
CalendarContract.Colors
para representar una tabla de colores en el proveedor de calendario. La clase proporciona campos a fin de acceder a los colores disponibles para una cuenta determinada. COLOR_KEY
hace referencia a los colores, que deben ser únicos 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 brindar compatibilidad con intercambio y sincronización.TYPE_RESOURCE
(como salas de conferencias) para asistentes y AVAILABILITY_TENTATIVE
, al igual que EVENT_COLOR_KEY
para 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 padding para cada widget según las características de la pantalla actual. Esto conduce a una presentación más uniforme y coherente de los widgets en una cuadrícula. Para ayudar a las aplicaciones 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 relleno definido por el sistema y tenerlo en cuenta cuando calculen la cantidad de celdas que se asignarán al widget.
Corrector ortográfico
- En el caso de las apps que acceden a los servicios del corrector ortográfico, un nuevo método
cancel()
cancela todas las tareas pendientes del corrector ortográfico en ejecución en una sesión. - Para los servicios del corrector ortográfico, una marca de sugerencias nueva,
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
, permite que los servicios distingan entre las sugerencias de mayor confianza y las menos confiables. Por ejemplo, un corrector ortográfico podría establecer la marca si una palabra de entrada no está en el diccionario del usuario, pero tiene sugerencias probables, o no podría establecerla si una palabra de entrada 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 deben marcarse las palabras de entrada 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 se aplicará a una palabra o texto que el usuario esté escribiendo o escribiendo. Este tipo de sugerencia se procesa 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 (UUID) compatibles con 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 IU
Los nuevos métodos setUserVisibleHint()
y getUserVisibleHint()
permiten que un fragmento establezca un indicio de si actualmente es visible para el usuario o no. El sistema aplaza el inicio de los fragmentos que no son visibles para el usuario hasta que se hayan ejecutado los cargadores de fragmentos visibles. La sugerencia de visibilidad es "verdadera" de forma predeterminada.
Gráficos
- El nuevo método
setDefaultBufferSize(int, int)
enSurfaceTexture
establece el tamaño predeterminado de los búferes de imágenes. Se puede usar este método para establecer el tamaño de la imagen cuando se producen imágenes conCanvas
(mediantelockCanvas(Rect)
) o OpenGL ES (a través de EGLSurface). - Se agregaron definiciones para las enumeraciones de la extensión OpenGL ES GL_OES_EGL_image_external:
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 se habilita el modo de exploración táctil, el nuevo parámetro de configuración seguro
ACCESSIBILITY_SPEAK_PASSWORD
indica si el usuario solicita que el IME diga el texto ingresado en los campos de contraseña, incluso cuando no se usan auriculares. De forma predeterminada, no se lee texto de la contraseña, a menos que se usen auriculares.
Texto a voz
- Se agregó el nuevo método
getFeatures()
para realizar consultas y habilitar la compatibilidad con 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.
Database
- Una nueva clase
CrossProcessCursorWrapper
permite que los proveedores de contenido muestren resultados para una consulta entre procesos de manera más eficiente. La nueva clase es un componente básico útil para unir cursores que se enviarán a los procesos de forma remota. También puede transformar objetosCursor
normales en objetosCrossProcessCursor
de manera transparente.La clase
CrossProcessCursorWrapper
corrige problemas comunes de rendimiento y errores que las aplicaciones encuentran cuando se implementan proveedores de contenido. - El constructor
CursorWindow(java.lang.String)
ahora toma una string de nombre como entrada. El sistema ya no distingue entre ventanas de cursor locales y remotas, por lo queCursorWindow(boolean)
dejó de estar disponible.
Intents
Se agregaron categorías nuevas para orientar 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
que permite 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 de unaCamera
.
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 redes sociales para un contacto del Proveedor de contactos compartido.
Para obtener una vista detallada de todos los cambios de las API en Android 4.0.3 (API nivel 15), consulta el Informe de diferencias de las 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 propio sistema. Este identificador, denominado "nivel de API", permite que el sistema determine correctamente si una aplicación es compatible con él antes de instalarla.
Para usar las APIs que se introdujeron en Android 4.0.3 en tu aplicación, debes compilarla en 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 sobre niveles de API.