Android 2.0, versión 1

Nivel de API: 5

A partir de noviembre de 2009, Android 2.0 es una importante versión de la plataforma que se puede implementar en teléfonos celulares con Android. La versión incluye funciones nuevas para usuarios y desarrolladores, así como cambios en la API del framework de Android.

Para los desarrolladores, la plataforma Android 2.0 está disponible como un componente descargable para el SDK de Android. La plataforma descargable incluye una biblioteca de Android y una imagen del sistema que cumplen con todos los requisitos, así como un conjunto de máscaras de emulador, aplicaciones de ejemplo y mucho más. La plataforma que se puede descargar cumple con todos los requisitos y no incluye bibliotecas externas.

Para comenzar a desarrollar o realizar pruebas con la plataforma de 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 obtener una lista de las funciones nuevas del usuario y los aspectos destacados de la plataforma, consulta el documento de Aspectos destacados 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 para desarrolladores)
  • Herramientas para desarrolladores (app para desarrolladores)
  • 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 cadenas 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 Android 2.0 se enumeran a continuación (con el descriptor de configuración regional language_country/region).

  • Chino, PRC (zh_CN)
  • Chino, Taiwán (zh_TW)
  • Checo (cs_CZ)
  • Neerlandés y Países Bajos (nl_NL)
  • Holandés, Bélgica (nl_BE)
  • Inglés (EE.UU.) (en_US)
  • Inglés (británico) (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, 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 cadenas de IU localizadas coinciden con las configuraciones regionales a las que se puede acceder a través de Configuración.

    Skins 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, baja densidad, pantalla pequeña)
    • WQVGA (240 x 400, baja densidad, pantalla normal)
    • FWQVGA (240 x 432, densidad baja, pantalla normal)
    • HVGA (320 x 480, densidad media, pantalla normal)
    • WVGA800 (480 x 800, densidad alta, pantalla normal)
    • WVGA854 (480 x 854 de alta densidad, pantalla normal)

    Para obtener más información sobre cómo desarrollar una aplicación que se muestre y funcione correctamente en todos los dispositivos con 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 de plataforma de Android 2.0 descargable.

    Compatibilidad con Ant

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

    API de Framework

    En las siguientes secciones se brinda información sobre la API de marco de trabajo de aplicaciones proporcionada por la plataforma de Android 2.0.

    Nivel de API

    La plataforma de Android 2.0 ofrece una versión actualizada de la API del 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, 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 presentadas en Android 2.0 en tu aplicación, debes configurar 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 los cambios en la API

    Bluetooth

    • Cómo activar o desactivar Bluetooth
    • Descubrimiento de dispositivos y servicios
    • Cómo conectarse a un dispositivo remoto con RFCOMM y enviar o recibir datos
    • Anuncia servicios de RFCOMM y escucha la conexión entrante de RFCOMM

    Adaptadores de sincronización

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

    Administrador de cuentas

    • API del administrador de cuentas centralizado para almacenar y acceder de forma segura a tokens o contraseñas de autenticación

    Contactos

    • Nuevas APIs de contactos que permiten datos de varias cuentas
    • Las nuevas APIs del framework de Quick Contact permiten a los desarrolladores crear insignias de contacto en su app. Si se hace clic en la insignia, se abre una ventana con una lista de formas de comunicarse con la persona con un solo clic.

    WebView

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

    Cámara

    • Nuevos parámetros para efecto de color, modo panorámico, modo flash, modo de enfoque, balance de blancos, rotación y otros parámetros de configuración.
    • Nueva interfaz ZoomCallback para realizar acciones cuando 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 a pedido.

    Otro framework

    • Nuevos temas del sistema en android.R.style para mostrar actividades fácilmente sobre el fondo de pantalla actual del sistema o mantener la actividad anterior visible en segundo plano.
    • La nueva API de backgroundManager reemplaza y extiende las APIs de fondo de pantalla que estaban en Context para permitir que las aplicaciones soliciten y establezcan el fondo de pantalla del sistema.
    • Se agregaron nuevas APIs de Service para ayudar a las aplicaciones a controlar correctamente el ciclo de vida del Service, en particular situaciones de poca memoria en las que se puede cerrar un Service mientras se ejecuta.
      • Service.setForeground() dejó de estar disponible y ahora no realiza ninguna operación. Se reemplaza por una nueva API, startForeground(), que ayuda (y requiere) asociar una notificación en curso con el estado en primer plano.
    • MotionEvent ahora puede informar información de toques simultáneos para los dispositivos que lo admiten. Se puede hacer un seguimiento de hasta tres punteros de forma simultánea.
    • KeyEvent tiene nuevas APIs de envío de teclas para ayudar a implementar el comportamiento de acción al levantar y mantener presionada una tecla, así como 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 muestre incluso si está bloqueada. Esto permite que las aplicaciones implementen de forma más clara elementos como despertadores que deben activar el dispositivo.
    • Nuevas APIs de intents que transmiten el estado de la estación de carga del dispositivo y permiten que las aplicaciones inicien actividades especiales cuando el dispositivo se coloca en una estación de carga para computadoras de escritorio o automóviles.

    Eventos clave ejecutados cuando se suelta una 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 las teclas físicas. Para admitir la mejor experiencia del usuario en esos dispositivos, la plataforma de Android ahora ejecuta estos botones en el momento de levantar la tecla, para un par de teclas abajo/arriba, en lugar de la tecla abajo. Esto ayuda a evitar eventos de botones accidentales y permite que el usuario presione el área del botón y, luego, lo arrastre sin generar un evento.

    Este cambio de comportamiento solo debería afectar a tu aplicación si esta intercepta eventos de botones y realiza una acción cuando se presiona una tecla, en lugar de cuando se suelta. En especial si tu aplicación intercepta la tecla ATRÁS, debes asegurarte de que controle los eventos clave de forma correcta.

    En general, no se recomienda interceptar la tecla BACK en una aplicación. Sin embargo, si tu aplicación lo hace y, además, invoca alguna acción cuando se presiona una tecla, en lugar de cuando se suelta, debes modificar el código.

    Si tu aplicación 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 ATRAS en una actividad o un diálogo, solo implementa el nuevo método onBackPressed().
    • Si interceptas la tecla BACK en una vista, debes hacer un seguimiento del evento de tecla cuando se presiona (a través del nuevo método startTracking()) y, luego, invocar la acción cuando se suelta la tecla. Este es un patrón que puedes usar:
    • 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 manejo de la tecla BACK funcione correctamente en Android 2.0 y versiones anteriores de la plataforma, puedes usar un enfoque similar al que se muestra más arriba. Tu código puede detectar el evento del botón de destino cuando se presiona una tecla, establecer una marca para hacer un seguimiento del evento de tecla y, luego, detectar el evento cuando se suelta la tecla y ejecutar la acción deseada si se establece la marca de seguimiento. También deberás prestar atención a los cambios de enfoque y borrar la marca de seguimiento al obtener o perder el enfoque.

    Informe de diferencias de API

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