Nivel de API: 9
Para los desarrolladores, la plataforma de Android 2.3 (GINGERBREAD
) está disponible como un 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 2.3, usa SDK Manager 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 novedades para desarrolladores en la versión 2.3, incluidas las funciones nuevas y los cambios en la API de framework desde la versión anterior.
VoIP basado en SIP
La plataforma ahora incluye una pila de protocolos SIP y una API de framework que permiten a los desarrolladores crear aplicaciones de telefonía por Internet. Con la API, las aplicaciones pueden ofrecer funciones de llamadas de voz sin tener que administrar sesiones, comunicación a nivel de transporte ni audio; la API y los servicios de SIP de la plataforma se encargan de estas funciones con transparencia.
La API de SIP está disponible en el paquete android.net.sip
. La clase clave es SipManager
, que las aplicaciones usan para configurar y administrar perfiles SIP y, luego, iniciar llamadas de audio y recibirlas. Una vez que se establece una llamada de audio, las aplicaciones pueden silenciar llamadas, activar el modo de bocina, enviar tonos DTMF y mucho más. Las aplicaciones también pueden usar SipManager
para crear conexiones SIP genéricas.
La pila y los servicios SIP subyacentes de la plataforma están disponibles en dispositivos a discreción del fabricante y el operador asociado. Por este motivo, las aplicaciones deben usar el método isApiSupported()
para verificar si la compatibilidad con SIP está disponible antes de exponer la funcionalidad de llamada a los usuarios.
Para usar la API de SIP, las aplicaciones deben solicitar permiso al usuario declarando <uses-permission
android:name="android.permission.INTERNET">
y <uses-permission
android:name="android.permission.USE_SIP">
en sus archivos de manifiesto.
Además, los desarrolladores pueden solicitar filtros en Google Play para que sus aplicaciones no sean detectables para los usuarios cuyos dispositivos no incluyan los servicios y la pila SIP de la plataforma. Para solicitar el filtrado, agrega <uses-feature
android:name="android.software.sip"
android:required="true">
y <uses-feature
android:name="android.software.sip.voip">
al manifiesto de la aplicación.
Para obtener más información, lee la guía para desarrolladores de SIP.
Comunicación de campo cercano (NFC)
Android 2.3 incluye una pila de NFC y una API de framework que permite a los desarrolladores leer etiquetas NDEF que se descubren cuando un usuario toca un dispositivo compatible con NFC para etiquetar elementos incorporados en calcomanías, pósteres inteligentes e incluso otros dispositivos.
La plataforma proporciona los servicios subyacentes de NFC que funcionan con el hardware del dispositivo para descubrir etiquetas cuando entran en el rango. Cuando se descubre una etiqueta, la plataforma notifica a las aplicaciones mediante la transmisión de un intent y anexa los mensajes NDEF de la etiqueta al intent como extras. Las aplicaciones pueden crear filtros de intents para reconocer y controlar etiquetas y mensajes orientados. Por ejemplo, después de recibir una etiqueta por intent, las aplicaciones extraen los mensajes NDEF, los almacenan, alertan al usuario o los manejan de otra manera.
La API de NFC está disponible en el paquete android.nfc
. Las clases clave son las siguientes:
NfcAdapter
, que representa el hardware NFC en el dispositivo.NdefMessage
, que representa un mensaje de datos NDEF, el formato estándar en el que los "registros" que transportan datos se transmiten entre dispositivos y etiquetas. Las aplicaciones pueden recibir estos mensajes de intentsACTION_TAG_DISCOVERED
.NdefRecord
, que se entrega en unNdefMessage
, que describe el tipo de datos que se comparten y lleva los datos en sí.
La comunicación NFC se basa en la tecnología inalámbrica del hardware del dispositivo, por lo que los fabricantes determinan la compatibilidad de las funciones de NFC de la plataforma en dispositivos específicos. Para determinar la compatibilidad con NFC en el dispositivo actual, las aplicaciones pueden llamar a isEnabled()
para consultar el NfcAdapter
. Sin embargo, la API de NFC siempre está presente, independientemente de la compatibilidad de hardware subyacente.
Para usar la API de NFC, las aplicaciones deben solicitar permiso al usuario declarando <uses-permission
android:name="android.permission.NFC">
en sus archivos de manifiesto.
Además, los desarrolladores pueden solicitar filtros en Google Play para que sus aplicaciones no sean detectables para los usuarios cuyos dispositivos no admitan NFC. Para solicitar el filtrado, agrega <uses-feature android:name="android.hardware.nfc"
android:required="true">
al manifiesto de la aplicación.
Para ver una aplicación de ejemplo que usa la API de NFC, consulta NFCDemo.
Giroscopio y otros sensores
Android 2.3 agrega compatibilidad con la plataforma y la API para varios tipos nuevos de lectura de sensores: giroscopio, vector de rotación, aceleración lineal, gravedad y barómetro. Los desarrolladores pueden usar las nuevas lecturas del sensor para crear aplicaciones que respondan de manera rápida y fluida a cambios precisos en la posición y el movimiento del dispositivo. La API de Sensor informa sobre el giroscopio y otros cambios del sensor a las aplicaciones interesadas, ya sea que se ejecuten en el framework de la aplicación o en código nativo.
Ten en cuenta que el conjunto específico de sensores de hardware disponibles en un dispositivo determinado varía a discreción del fabricante.
Los desarrolladores pueden solicitar filtros en Google Play para que sus aplicaciones no sean detectables para los usuarios cuyos dispositivos no ofrezcan un sensor de giroscopio. Para ello, agrega <uses-feature
android:name="android.hardware.sensor.gyroscope"
android:required="true">
al manifiesto de la aplicación.
Para obtener más información sobre la API, consulta Sensor
.
Compatibilidad con varias cámaras
Las aplicaciones ahora pueden usar cualquier cámara que esté disponible en un dispositivo, para captura de fotos o video. Camera
permite que las aplicaciones consulten la cantidad de cámaras disponibles y las características únicas de cada una.
- La nueva clase
Camera.CameraInfo
almacena las características de posición de una cámara (orientación, frontal o posterior). - Los nuevos métodos
getNumberOfCameras()
ygetCameraInfo()
en la claseCamera
permiten que las aplicaciones consulten las cámaras disponibles y abran la cámara que necesitan. - El nuevo método
get()
permite que las aplicaciones recuperen unCamcorderProfile
para una cámara específica. - El nuevo
getJpegEncodingQualityParameter()
permite que las aplicaciones obtengan el nivel de calidad de captura de imagen estática para una cámara específica.
Para ver el código de muestra para acceder a una cámara frontal, consulta CameraPreview.java en la aplicación de ejemplo ApiDemos.
La API de Camera también agrega lo siguiente:
- Nuevos parámetros para las cámaras, incluida la distancia de enfoque, el modo de enfoque y la vista previa de FPS máximos o mínimos Nuevos
getFocusDistances()
,getPreviewFpsRange()
ygetSupportedPreviewFpsRange()
para obtener parámetros de cámara, así comosetPreviewFpsRange()
para configurar la velocidad de fotogramas de vista previa
Efectos de audio mezclables
El framework multimedia de la plataforma agrega compatibilidad con nuevos efectos de audio globales por pista o por pista, como potenciador de bajos, virtualización de auriculares, ecualización y reverberación.
- El nuevo paquete
android.media.audiofx
proporciona la API para acceder a los efectos de audio. - El nuevo
AudioEffect
es la clase base para controlar los efectos de audio que proporciona el framework de audio de Android. - Nuevo ID de sesión de audio que permite a una aplicación asociar un conjunto de efectos de audio con una instancia de
AudioTrack
oMediaPlayer
. - Nuevo constructor de clase
AudioTrack
que te permite crear unAudioTrack
con un ID de sesión específico Nuevos métodosattachAuxEffect()
,getAudioSessionId()
ysetAuxEffectSendLevel()
. - Nuevos métodos
attachAuxEffect()
,getAudioSessionId()
,setAudioSessionId(int)
ysetAuxEffectSendLevel()
, y tipos compatibles.
Para ver el código de muestra de efectos de audio, consulta AudioFxDemo.java en la aplicación de ejemplo ApiDemos.
El framework de medios también agrega lo siguiente:
- Nueva compatibilidad con la etiqueta de altitud en los metadatos EXIF para archivos JPEG. Se agregó el nuevo método
getAltitude()
para recuperar el valor de la etiqueta de altitud EXIF. - El nuevo método
setOrientationHint()
permite que una aplicación le indique aMediaRecorder
la orientación durante la captura de video.
Administrador de descargas
La plataforma incluye un nuevo servicio del sistema DownloadManager
que controla descargas HTTP de larga duración. Las aplicaciones pueden solicitar que se descargue un URI en un archivo de destino en particular. DownloadManager
realizará la descarga en segundo plano, se encargará de las interacciones HTTP y volverá a intentar las descargas después de fallas o entre cambios de conectividad y reinicios del sistema.
- Las aplicaciones pueden obtener una instancia de la clase
DownloadManager
llamando agetSystemService(String)
y pasandoDOWNLOAD_SERVICE
. Las aplicaciones que solicitan descargas a través de esta API deben registrar un receptor de emisión paraACTION_NOTIFICATION_CLICKED
a fin de que controle correctamente cuando el usuario haga clic en una descarga en ejecución desde una notificación o desde la IU de descargas. - La clase
DownloadManager.Request
permite que una aplicación proporcione toda la información necesaria para solicitar una descarga nueva, como el URI de la solicitud y el destino de la descarga. Un URI de solicitud es el único parámetro obligatorio. Ten en cuenta que el destino de descarga predeterminado es un volumen compartido en el que el sistema puede borrar tu archivo si necesita recuperar espacio para usarlo. Para el almacenamiento continuo de una descarga, especifica un destino de descarga en el almacenamiento externo (consultasetDestinationUri(Uri)
). - La clase
DownloadManager.Query
proporciona métodos que permiten que una aplicación consulte y filtre las descargas activas.
Modo estricto
Para ayudar a los desarrolladores a supervisar y mejorar el rendimiento de sus aplicaciones, la plataforma ofrece una nueva instalación del sistema llamada StrictMode
.
Cuando se implementa en una aplicación, StrictMode detecta y notifica al desarrollador sobre la actividad accidental en el disco o la red que podría degradar el rendimiento de la aplicación, como la actividad que tiene lugar en el subproceso principal de la aplicación (donde se reciben operaciones de la IU y también se realizan animaciones).
Los desarrolladores pueden evaluar los problemas de uso de red y disco generados en StrictMode y corregirlos si es necesario, lo que mantiene el subproceso principal más responsivo y evita que se muestren diálogos de ANR a los usuarios.
StrictMode
es la clase principal y es el punto de integración principal con el sistema y la VM. Esta clase proporciona métodos prácticos para administrar las políticas de subprocesos y VM que se aplican a la instancia.StrictMode.ThreadPolicy
yStrictMode.VmPolicy
contienen las políticas que defines y aplicas al subproceso y a las instancias de VM.
Si quieres obtener más información para usar StrictMode y optimizar tu aplicación, consulta la documentación de la clase y el código de muestra en android.os.StrictMode
.
Framework de IU
- Compatibilidad con el sobredesplazamiento
- Nueva compatibilidad con el sobredesplazamiento en Views y Widgets. En Views, las aplicaciones pueden habilitar o inhabilitar el sobredesplazamiento para una vista determinada, establecer el modo de desplazamiento, controlar la distancia de desplazamiento y controlar los resultados del sobredesplazamiento.
- En los widgets, las aplicaciones pueden controlar las características de sobredesplazamiento, como la animación, el springback y la distancia de sobredesplazamiento. Para obtener más información, consulta
android.view.View
yandroid.widget.OverScroller
. ViewConfiguration
también proporciona los métodosgetScaledOverflingDistance()
ygetScaledOverscrollDistance()
.- Nuevos atributos
overScrollMode
,overScrollFooter
yoverScrollHeader
para los elementos<ListView>
para controlar el comportamiento del sobredesplazamiento.
- Compatibilidad con el filtrado táctil
- Se agregó compatibilidad con filtrado de toques, que permite a una aplicación mejorar la seguridad de los objetos View que proporcionan acceso a funciones sensibles. Por ejemplo, el filtrado de toques es adecuado para garantizar la seguridad de las acciones del usuario, como otorgar una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Para obtener más detalles, consulta Ver la documentación de la clase.
- Nuevo atributo
filterTouchesWhenObscured
para elementos de vista, que declara si se deben filtrar los toques cuando otra ventana visible oculta la ventana de la vista. Cuando se establece en"true"
, la vista no recibirá toques cada vez que aparezca un aviso, un diálogo o alguna otra ventana sobre la ventana de la vista. Consulta Ver la documentación de seguridad para obtener más detalles.
Para ver el código de muestra para el filtrado táctil, consulta SecureView.java en la aplicación de ejemplo ApiDemos.
- Administración de eventos mejorada
- Nueva clase base para eventos de entrada,
InputEvent
. La clase proporciona métodos que permiten a las aplicaciones determinar el significado del evento, por ejemplo, mediante una consulta del InputDevice desde el que se originó el evento.KeyEvent
yMotionEvent
son subclases deInputEvent
. - Nueva clase base para dispositivos de entrada,
InputDevice
. La clase almacena información sobre las capacidades de un dispositivo de entrada en particular y proporciona métodos que permiten a las aplicaciones determinar cómo interpretar eventos de un dispositivo de entrada.
- Nueva clase base para eventos de entrada,
- Eventos de movimiento mejorados
- La API de
MotionEvent
se extiende para incluir información del "ID de puntero", lo que permite a las aplicaciones realizar un seguimiento de los dedos individuales a medida que se mueven hacia arriba y hacia abajo. Esta clase agrega una variedad de métodos que permiten que una aplicación funcione de manera eficiente con eventos de movimiento. - El sistema de entrada ahora tiene lógica para generar eventos de movimiento con la nueva información del ID de puntero, sintetizando identificadores a medida que los punteros nuevos estén inactivos. El sistema realiza un seguimiento de varios IDs de puntero por separado durante un evento de movimiento y garantiza la continuidad adecuada de los punteros mediante la evaluación de la distancia entre el último y el siguiente conjunto de punteros.
- La API de
- Controles de selección de texto
- Un nuevo método
setComposingRegion
permite que una aplicación marque una región de texto como texto redactado y mantenga el estilo actual. Un métodogetSelectedText
devuelve el texto seleccionado a la aplicación. Los métodos están disponibles enBaseInputConnection
,InputConnection
yInputConnectionWrapper
. - Nuevos atributos
textSelectHandle
,textSelectHandleLeft
,textSelectHandleRight
ytextSelectHandleWindowStyle
para<TextView>
, para hacer referencia a elementos de diseño que se usarán para mostrar las anclas de selección de texto y el estilo de la ventana que los contiene
- Un nuevo método
- Controles de actividad
ActivityInfo
agrega constantes nuevas para administrar la orientación de la actividad:SCREEN_ORIENTATION_FULL_SENSOR
,SCREEN_ORIENTATION_REVERSE_LANDSCAPE
,SCREEN_ORIENTATION_REVERSE_PORTRAIT
,SCREEN_ORIENTATION_SENSOR_LANDSCAPE
ySCREEN_ORIENTATION_SENSOR_PORTRAIT
.- Nueva constante
IMPORTANCE_PERCEPTIBLE
para el campoimportance
enActivityManager.RunningAppProcessInfo
. El valor indica que un proceso específico está ejecutando algo que se considera perceptible para el usuario. Un ejemplo sería una aplicación que reproduce música en segundo plano. - El método Activity.setPersistent(boolean) para marcar una actividad como persistente dejó de estar disponible y la implementación es una no-op.
- Estilos de íconos y texto de notificaciones
- Nuevos
TextAppearance.StatusBar.EventContent
,TextAppearance.StatusBar.EventContent.Title
,TextAppearance.StatusBar.Icon
yTextAppearance.StatusBar.Title
para administrar el estilo de las notificaciones.
- Nuevos
- Agrega los métodos
glDrawElements()
yglVertexAttribPointer()
restantes de OpenGL ES 2.0 en la claseandroid.opengl.GLES20
. - Se agregó compatibilidad con el formato de píxeles
YV12
, un formato plano de YCrCb de 4:2:0. - Nueva clase de proveedor
AlarmClock
para establecer una alarma o controlar una alarma El proveedor contiene una acción de intentACTION_SET_ALARM
y servicios adicionales que se pueden usar para iniciar una actividad a fin de configurar una alarma nueva en una aplicación de alarma. Las aplicaciones que desean recibir el intentSET_ALARM
deben crear una actividad que requiera el permiso SET_ALARM. Las aplicaciones que deseen crear una alarma nueva deben usarContext.startActivity()
para que el usuario tenga la opción de elegir qué aplicación de alarma usar. MediaStore
admite una nueva acción de intent,PLAY_FROM_SEARCH
, que permite a una aplicación buscar contenido multimedia y reproducir contenido automáticamente desde el resultado cuando es posible. Por ejemplo, una aplicación podría activar este intent como resultado de un comando de reconocimiento de voz para escuchar música.MediaStore
también agrega una nueva marcaMEDIA_IGNORE_FILENAME
que le indica al escáner multimedia que ignore el contenido multimedia del directorio que lo contiene y sus subdirectorios. Los desarrolladores pueden usar esta opción para evitar que aparezcan gráficos en la Galería y, del mismo modo, para evitar que aparezcan sonidos y música de la aplicación en la app de Music.- El proveedor de
Settings
agrega las nuevas acciones de la actividadAPPLICATION_DETAILS_SETTINGS
yMANAGE_ALL_APPLICATIONS_SETTINGS
, que permiten a una aplicación mostrar la pantalla de detalles de una aplicación específica o la pantalla Administrar aplicaciones. - El proveedor
ContactsContract
agrega el tipo de datosContactsContract.CommonDataKinds.SipAddress
para almacenar la dirección SIP (telefonía por Internet) de un contacto. LocationManager
ahora realiza un seguimiento de las solicitudes de aplicaciones que generan bloqueos de activación o de Wi-Fi segúnWorkSource
, una clase administrada por el sistema que identifica la aplicación.LocationManager
realiza un seguimiento de todos los clientes que solicitan actualizaciones periódicas y les informa a sus proveedores sobre ellas como un parámetroWorkSource
cuando establecen sus horas mínimas de actualización. El proveedor de ubicación de red usaWorkSource
para rastrear los bloqueos de activación y Wi-Fi que inicia una aplicación, y lo agrega al uso de batería de la aplicación que se informa en Administrar aplicaciones.LocationManager
agrega varios métodos nuevos que permiten que una actividad se registre para recibir actualizaciones de ubicación periódicas o únicas según criterios específicos (consulta a continuación).- Una nueva clase
Criteria
permite que una aplicación especifique un conjunto de criterios para seleccionar un proveedor de ubicación. Por ejemplo, los proveedores se pueden ordenar de acuerdo con la precisión, el uso de energía, la capacidad para informar la altitud, la velocidad, el rumbo y el costo monetario. - En Android 2.3, se agrega un
StorageManager
nuevo que admite archivos OBB (Opaque Binary Blob). Si bien la compatibilidad de plataforma con OBB está disponible en Android 2.3, las herramientas de desarrollo para crear y administrar archivos OBB no estarán disponibles hasta principios de 2011. - La plataforma Android 2.3 agrega compatibilidad oficial para dispositivos que no incluyen tarjetas SD (aunque proporciona una partición de tarjeta SD virtual cuando no hay una tarjeta SD física disponible). Un método de conveniencia,
isExternalStorageRemovable()
, permite que las aplicaciones determinen si hay una tarjeta SD física. - Nuevas constantes para declarar funciones de hardware y software Consulta la lista en la sección Constantes de atributos nuevas que aparece a continuación.
PackageInfo
agrega nuevos camposfirstInstallTime
ylastUpdateTime
que almacenan la hora de instalación y última actualización del paquete.- Nuevo método
getProviderInfo()
para recuperar toda la información conocida sobre una clase de proveedor de contenido en particular. TelephonyManager
agrega la constanteNETWORK_TYPE_EVDO_B
para especificar el tipo de red CDMA EVDO Rev B.- El nuevo método
getPsc()
muestra el código de codificación principal de la celda de entrega en una red de UMTS. NativeActivity
es un nuevo tipo de clase de actividad, cuyas devoluciones de llamada de ciclo de vida se implementan directamente en código nativo. UnNativeActivity
y su código nativo subyacente se ejecutan en el sistema al igual que otras actividades. Específicamente, se ejecutan en el proceso del sistema de la aplicación para Android y en el subproceso de IU principal de la aplicación, y reciben las mismas devoluciones de llamada de ciclo de vida que otras actividades.- La nueva clase
InputQueue
y la interfaz de devolución de llamada permiten que el código nativo administre la cola de eventos. - La nueva interfaz
SurfaceHolder.Callback2
permite que el código nativo administre unSurfaceHolder
. - Los nuevos métodos
takeInputQueue
ytakeSurface()
enWindow
permiten que el código nativo administre eventos y plataformas. dalvik.system
quita varias clases que ya estaban obsoletas.- Bibliotecas principales de Dalvik:
- Colecciones nuevas:
ArrayDeque
,NavigableMap
,ConcurrentSkipListMap
,LinkedBlockingDeque
- Nuevas utilidades de
Arrays
:binarySearch()
,copyOf()
,copyOfRange()
y otras CookieManager
paraHttpURLConnection
.- APIs de red más completas:
InterfaceAddress
,NetworkInterface
yIDN
- Controles de lectura y escritura de
File
String.isEmpty()
Normalizer
yNormalizer.Form
- Se mejoraron los sockets de servidor
javax.net.ssl
.
- Colecciones nuevas:
- Nuevo atributo
xlargeScreens
para el elemento<supports-screens>
para indicar si la aplicación admite factores de forma de pantalla extragrandes. Para obtener más información, consulta Compatibilidad con varias pantallas. - Nuevos valores para el atributo
android:screenOrientation
del elemento<activity>
:"reverseLandscape"
: La actividad quiere tener la pantalla en orientación horizontal, girada en la dirección opuesta al modo horizontal convencional."reversePortrait"
: La actividad quiere tener la pantalla en orientación vertical, girada en la dirección opuesta al modo vertical convencional."sensorLandscape"
: La actividad quiere tener la pantalla en orientación horizontal, pero puede usar el sensor para cambiar la dirección a la que apunta."sensorPortrait"
: La actividad desea tener la pantalla en orientación vertical, pero puede usar el sensor para cambiar la dirección a la que apunta la pantalla."fullSensor"
: La orientación se determina mediante un sensor de orientación físico: la pantalla rotará en función de cómo el usuario mueva el dispositivo. Esto permite cualquiera de las 4 rotaciones posibles, independientemente de lo que haga normalmente el dispositivo (por ejemplo, algunos dispositivos normalmente no usan la rotación de 180 grados).
com.android.permission.SET_ALARM
: Permite que una aplicación transmita un intent para establecer una alarma para el usuario. Una actividad que controla la acción de intentSET_ALARM
debería requerir este permiso.android.permission.USE_SIP
: Permite que una aplicación useSIP API
para realizar o recibir llamadas por Internet.android.permission.NFC
: Permite que una aplicación useNFC API
para leer etiquetas NFC.android.hardware.audio.low_latency
: La aplicación usa una canalización de audio de baja latencia en el dispositivo y es sensible a las demoras o los retrasos en la entrada o salida de sonido.android.hardware.camera.front
: La aplicación usa una cámara frontal en el dispositivo.android.hardware.nfc
: La aplicación usa funciones de radio NFC en el dispositivo.android.hardware.sensor.barometer
: La aplicación usa el barómetro del dispositivo.android.hardware.sensor.gyroscope
: La aplicación usa el sensor del giroscopio del dispositivo.android.software.sip
: la aplicación usa la API de SIP en el dispositivo.android.software.sip.voip
: La aplicación usa un servicio VoIP basado en SIP en el dispositivo.android.hardware.touchscreen.multitouch.jazzhand
: La aplicación usa capacidades multitáctiles avanzadas de varios puntos en la pantalla del dispositivo para realizar el seguimiento de cinco o más puntos de forma completamente independiente.
Pantallas extragrandes
La plataforma ahora admite tamaños de pantalla extragrandes, como los que se pueden encontrar en las tablets. Los desarrolladores pueden indicar que sus aplicaciones están diseñadas para admitir tamaños de pantalla extragrandes agregando un elemento <supports
screens ... android:xlargeScreens="true">
a sus archivos de manifiesto. Las aplicaciones pueden usar un nuevo calificador de recursos, xlarge
, para etiquetar recursos específicos de pantallas extragrandes. Para obtener información sobre cómo admitir tamaños de pantalla extragrandes y de otro tipo, consulta Cómo admitir varias pantallas.
Gráficos
Proveedores de contenido
Ubicación
Almacenamiento
Administrador de paquetes
Telefonía
Acceso nativo al ciclo de vida de la actividad y ventanas
Android 2.3 expone un amplio conjunto de APIs para las aplicaciones que usan código nativo. Entre las clases de frameworks de interés para dichas aplicaciones, se incluyen las siguientes:
Para obtener información completa sobre cómo trabajar con código nativo o para descargar el NDK, consulta la página del NDK de Android.
Tiempo de ejecución de Dalvik
Nuevos elementos y atributos del manifiesto
Permisos nuevos
Constantes de atributos nuevas
La plataforma agrega varias funciones nuevas de hardware que los desarrolladores pueden declarar en los manifiestos de sus aplicaciones como obligatorias. Esto permite a los desarrolladores controlar cómo se filtra su aplicación cuando se publica en Google Play.
Si deseas obtener información completa para declarar funciones y usarlas para filtrar, consulta la documentación de <uses-feature>
.
Informe de diferencias de las APIs
Para obtener una vista detallada de todos los cambios de la API en Android 2.3 (nivel de API 9), consulta el Informe de diferencias de las APIs.
Nivel de API
La plataforma de Android 2.3 entrega una versión actualizada de la API de framework. A la API de Android 2.3 se le asigna un identificador de número entero, 9, 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 2.3 en tu aplicación, debes compilarla en la biblioteca de Android que se proporciona en la plataforma del SDK de Android 2.3. Según tus necesidades, es posible que también debas agregar un atributo android:minSdkVersion="9"
al elemento <uses-sdk>
en el manifiesto de la aplicación. Si tu aplicación está diseñada para ejecutarse solo en Android 2.3 y versiones posteriores, declarar el atributo evita que la aplicación se instale en versiones anteriores de la plataforma.
Para obtener más información, consulta ¿Qué es el nivel de API?