Android 2.0, versión 1

Nivel de API: 5

Android 2.0 es una gran versión de la plataforma que se puede implementar en teléfonos celulares con Android desde noviembre de 2009. La versión incluye nuevas funciones para usuarios y desarrolladores, además de cambios en la API de framework de Android.

Para los desarrolladores, la plataforma de Android 2.0 está disponible como un componente descargable del SDK de Android. La plataforma descargable incluye una imagen del sistema y una biblioteca de Android totalmente compatibles, así como un conjunto de máscaras de emulador, aplicaciones de ejemplo y mucho más. La plataforma descargable cumple con todas las normas y no incluye bibliotecas externas.

Para comenzar a desarrollar o probar la plataforma Android 2.0, usa el SDK de Android y la herramienta Administrador de AVD para descargar la plataforma en tu SDK.

Aspectos destacados de la plataforma

Para ver una lista de las nuevas funciones del usuario y los aspectos destacados de la plataforma, consulta el documento Características destacadas de la plataforma de Android 2.0.

Aplicaciones integradas

La imagen del sistema incluida en la plataforma descargable proporciona estas aplicaciones integradas:

  • Alarma
  • Navegador
  • Calculadora
  • Cámara de video
  • Cámara
  • Contactos
  • Configuración regional personalizada (app de desarrollador)
  • Herramientas para desarrolladores (app de desarrollador)
  • Dialer
  • Correo electrónico
  • Galería
  • Creador de gestos
  • IME para entrada de texto en japonés
  • Mensajería
  • Música
  • Configuración
  • Repuestos (app para desarrolladores)

Idiomas

La imagen del sistema incluida en la plataforma descargable proporciona una variedad de configuraciones regionales integradas. En algunos casos, las strings específicas de la región están disponibles para las configuraciones regionales. En otros casos, se usa una versión predeterminada del idioma. Los idiomas que están disponibles en la imagen del sistema de Android 2.0 se enumeran a continuación (con el descriptor de configuración regional language_country/region).

  • Chino, República Popular China (zh_CN)
  • Chino, Taiwán (zh_TW)
  • Checo (cs_CZ)
  • Neerlandés, Países Bajos (nl_NL)
  • Holandés, Bélgica (nl_BE)
  • Inglés, EE.UU. (en_US)
  • Inglés, Gran Bretaña (en_GB)
  • Inglés, Canadá (en_CA)
  • Inglés, Australia (en_AU)
  • Inglés, Nueva Zelanda (en_NZ)
  • Inglés, Singapur(en_SG)
  • Francés, Francia (fr_FR)
  • Francés, Bélgica (fr_BE)
  • Francés, Canadá (fr_CA)
  • Francés, Suiza (fr_CH)
  • Alemán, Alemania (de_DE)
  • Alemán, Austria (de_AT)
  • Alemán y Suiza (de_CH)
  • Alemán, Liechtenstein (de_LI)
  • Italiano, Italia (it_IT)
  • Italiano, Suiza (it_CH)
  • Japonés (ja_JP)
  • Coreano (ko_KR)
  • Polaco (pl_PL)
  • Ruso (ru_RU)
  • Español (es_ES)
  • Las strings de IU localizadas coinciden con las configuraciones regionales a las que se puede acceder a través de Configuración.

    Máscaras de emulador

    La plataforma descargable incluye un conjunto de máscaras de emulador que puedes usar para modelar tu aplicación en diferentes tamaños y resoluciones de pantalla. Las máscaras del emulador son las siguientes:

    • QVGA (240 x 320, densidad baja, pantalla pequeña)
    • WQVGA (240 x 400, densidad baja, pantalla normal)
    • FWQVGA (240 x 432, densidad baja, pantalla normal)
    • HVGA (320 x 480, densidad media, pantalla normal)
    • WVGA800 (480 x 800, alta densidad, pantalla normal)
    • WVGA854 (480 x 854 de alta densidad, pantalla normal)

    Para obtener más información sobre el desarrollo de una aplicación que se muestre y funcione correctamente en todos los dispositivos Android, consulta Compatibilidad con varias pantallas.

    Funciones para desarrolladores

    En las siguientes secciones se proporciona información sobre las nuevas funciones para desarrolladores que ofrece el componente descargable de la plataforma Android 2.0.

    Asistencia para hormigas

    • Firma de aplicaciones en modo de depuración y en modo de lanzamiento. La firma de modo de lanzamiento incluye compatibilidad integrada para la optimización de zipalign. Para obtener más información, consulta Cómo firmar tus aplicaciones.
    • Agrega un nuevo sistema de compilación Ant compatible con proyectos de instrumentación Emma (cobertura de código).

    API de framework

    En las siguientes secciones se brinda información sobre la API del framework de la aplicación proporcionada por la plataforma Android 2.0.

    Nivel de API

    La plataforma de Android 2.0 entrega una versión actualizada de la API de framework. Al igual que con las versiones anteriores, a la API de Android 2.0 se le asigna un identificador de número entero, 5, 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 2.0 en tu aplicación, debes establecer el valor adecuado, "5", en los atributos del elemento <uses-sdk> en el manifiesto de tu aplicación.

    Para obtener más información sobre cómo usar el nivel de API, consulta el documento Niveles de API.

    Resumen de cambios en la API

    Bluetooth

    • Activar o desactivar Bluetooth
    • Detección de dispositivos y servicios
    • Conectarse a un dispositivo remoto mediante RFCOMM y enviar/recibir datos
    • Anunciar servicios RFCOMM y escuchar conexiones RFCOMM entrantes

    Adaptadores de sincronización

    • Nuevas APIs para que los adaptadores de sincronización se conecten a cualquier backend

    Administrador de cuentas

    • API de administrador de cuentas centralizada para almacenar contraseñas y tokens de autenticación de forma segura y acceder a ellos

    Contactos

    • Nuevas APIs de contactos que permiten datos de múltiples cuentas
    • Las nuevas APIs del framework de Quick Contact permiten a los desarrolladores crear insignias de contacto en sus apps. Si hacen clic en la insignia, se abrirá una ventana con una lista de formas de comunicarse con la persona con un solo clic.

    WebView

    • Clases obsoletas: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Cámara

    • Nuevos parámetros para el efecto de color, el modo panorámico, el modo de flash, el modo de enfoque, el balance de blancos, la rotación y otros parámetros de configuración
    • Nueva interfaz ZoomCallback para realizar acciones cuando se cambia el nivel de zoom.

    Contenido multimedia

    • MediaScanner ahora genera miniaturas para todas las imágenes cuando se insertan en MediaStore
    • Nueva API de miniaturas para recuperar miniaturas de imágenes y videos on demand.

    Otro marco de trabajo

    • Nuevos temas del sistema en android.R.style para mostrar fácilmente las actividades sobre el fondo de pantalla actual del sistema o mantener la actividad anterior visible en segundo plano
    • La nueva API de WallpaperManager reemplaza y extiende las APIs de fondo de pantalla que anteriormente estaban en Contexto para permitir que las aplicaciones soliciten y establezcan el fondo de pantalla del sistema.
    • Nuevas APIs de servicio para ayudar a las aplicaciones a manejar correctamente el ciclo de vida del servicio, en situaciones particulares de poca memoria en las que un servicio puede cerrarse mientras se está ejecutando.
      • Service.setForeground() dejó de estar disponible y ahora no realiza operaciones. Esto se reemplazó con una nueva API, startForeground(), que ayuda (y requiere) la asociación de una notificación continua con el estado en primer plano.
    • MotionEvent ahora puede enviar información táctil simultánea para los dispositivos compatibles. Se pueden realizar seguimientos de hasta tres punteros simultáneamente.
    • KeyEvent tiene nuevas API de envío de teclas para ayudar a implementar un comportamiento de acción hacia arriba y presión prolongada, además de un nuevo mecanismo para cancelar las pulsaciones de teclas (para teclas virtuales).
    • WindowManager.LayoutParams tiene constantes nuevas que permiten que una ventana active la pantalla cuando se muestra y la muestra incluso si está bloqueada. Esto permite que las aplicaciones implementen funciones como los despertadores que deberían activar el dispositivo de forma más clara.
    • Nuevas APIs de intents que transmiten el estado de conexión del dispositivo y permiten que las aplicaciones inicien actividades especiales cuando el dispositivo se coloca en un conector para autos o escritorio.

    Eventos de tecla ejecutados al presionar tecla

    Android 2.0 está diseñado para ejecutarse en dispositivos que usan teclas virtuales para INICIO, MENÚ, ATRÁS y BÚSQUEDA, en lugar de teclas físicas. Para admitir la mejor experiencia del usuario en esos dispositivos, la plataforma de Android ahora ejecuta estos botones al presionar la tecla hacia arriba, para un par de teclas hacia abajo y hacia arriba, en lugar de hacerlo al presionar la tecla hacia abajo. Esto ayuda a evitar eventos de botón accidentales y permite que el usuario presione el área del botón y, luego, lo arrastre sin generar un evento.

    Este cambio en el comportamiento solo debería afectar a tu aplicación si intercepta eventos de botones y realiza una acción con la tecla presionada en lugar de la tecla de activación. En especial si tu aplicación intercepta la tecla ATRÁS, debes asegurarte de que esté manejando los eventos de tecla correctamente.

    En general, no se recomienda interceptar la tecla ATRÁS en una aplicación. Sin embargo, si tu aplicación lo hace e invoca alguna acción al presionar la tecla hacia abajo, en lugar de hacerlo, debes modificar el código.

    Si tu aplicación va a usar APIs presentadas en Android 2.0 (nivel de API 5), puedes aprovechar las nuevas APIs para administrar pares clave-evento:

    • Si interceptas la tecla ATRÁS en una actividad o un diálogo, solo implementa el nuevo método onBackPressed().
    • Si interceptas la tecla BACK en una vista, debes realizar un seguimiento del evento de tecla cuando se presiona la tecla (a través del nuevo método startTracking()) y, luego, invoca la acción cuando presionas la tecla hacia arriba. Puedes usar el siguiente patrón:
    • Kotlin

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }
      

      Java

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }
      

    Si deseas actualizar una aplicación heredada para que el control de la tecla ATRÁS funcione correctamente en Android 2.0 y las versiones anteriores de la plataforma, puedes usar un enfoque similar al que se muestra arriba. Tu código puede capturar el evento del botón de destino cuando se presiona la tecla, establecer una marca para realizar un seguimiento del evento de tecla y, luego, también capturar el evento cuando se activa la tecla. Para ello, ejecuta la acción deseada si se configura la marca de seguimiento. También es recomendable que observes los cambios de enfoque y borres la marca de seguimiento cuando obtengas o pierdas el enfoque.

    Informe de diferencias de las APIs

    Para obtener una vista detallada de los cambios de API en Android 2.0 (nivel de API 5) en comparación con la versión anterior, consulta el Informe de diferencias de API.