Android 2.0, Versão 1

Nível da API: 5

O Android 2.0 é uma versão importante da plataforma que pode ser implantada em aparelhos com Android a partir de novembro de 2009. A versão inclui novos recursos para usuários e desenvolvedores, bem como mudanças na API do framework do Android.

Para desenvolvedores, a plataforma Android 2.0 está disponível como um componente para download do SDK do Android. A plataforma para download inclui uma biblioteca Android totalmente compatível e uma imagem do sistema, além de um conjunto de skins de emulador, apps de exemplo e muito mais. A plataforma para download é totalmente compatível e não inclui bibliotecas externas.

Para começar a desenvolver ou testar na plataforma Android 2.0, use o SDK do Android e a ferramenta AVD Manager para fazer o download da plataforma no SDK.

Destaques da plataforma

Para uma lista de novos recursos do usuário e destaques da plataforma, consulte o documento Destaques da Plataforma Android 2.0.

Aplicativos integrados

A imagem do sistema incluída na plataforma para download oferece estes aplicativos integrados:

  • Despertador
  • Navegador
  • Calculadora
  • Filmadora
  • Câmera
  • Contatos
  • Localidade personalizada (app para desenvolvedores)
  • Ferramentas para desenvolvedores (app para desenvolvedores)
  • Telefone
  • E-mail
  • Galeria
  • Criador de gestos
  • IME para entrada de texto em japonês
  • Mensagens
  • Música
  • Configurações
  • Spare Parts (app para desenvolvedores)

Localidades

A imagem do sistema incluída na plataforma para download oferece várias localidades integradas. Em alguns casos, strings específicas da região estão disponíveis para as localidades. Em outros, é usada uma versão padrão do idioma. Os idiomas disponíveis na imagem do sistema Android 2.0 estão listados abaixo (com o descritor de localidade language_country/region).

  • Chinês, RPC (zh_CN)
  • Chinês (Taiwan) (zh_TW)
  • Tcheco (cs_CZ)
  • Holandês, Países Baixos (nl_NL)
  • Holandês (Bélgica) (nl_BE)
  • Inglês, EUA (en_US)
  • Inglês (Reino Unido) (en_GB)
  • Inglês, Canadá (en_CA)
  • Inglês (Austrália) (en_AU)
  • Inglês (Nova Zelândia) (en_NZ)
  • Inglês, Singapura(en_SG)
  • Francês, França (fr_FR)
  • Francês (Bélgica) (fr_BE)
  • Francês (Canadá) (fr_CA)
  • Francês da Suíça (fr_CH)
  • Alemão, Alemanha (de_DE)
  • Alemão, Áustria (de_AT)
  • Alemão, Suíça (de_CH)
  • Alemão, Liechtenstein (de_LI)
  • Italiano (Itália) (it_IT)
  • Italiano (Suíça) (it_CH)
  • Japonês (ja_JP)
  • Coreano (ko_KR)
  • Polonês (pl_PL)
  • Russo (ru_RU)
  • Espanhol (es_ES)
  • As strings da interface localizadas correspondem às localidades que podem ser acessadas nas Configurações.

    Skins do emulador

    A plataforma para download inclui um conjunto de aparências de emulador que podem ser usadas para modelar seu aplicativo em diferentes tamanhos e resoluções de tela. As skins do emulador são:

    • QVGA (240 x 320, densidade baixa, tela pequena)
    • WQVGA (240x400, baixa densidade, tela normal)
    • FWQVGA (240 x 432, densidade baixa, tela normal)
    • HVGA (320 x 480, densidade média, tela normal)
    • WVGA800 (480 x 800, alta densidade, tela normal)
    • WVGA854 (480 x 854 de alta densidade, tela normal)

    Para mais informações sobre como desenvolver um aplicativo que aparece e funciona corretamente em todos os dispositivos Android, consulte Oferecer suporte a várias telas.

    Recursos para desenvolvedores

    As seções abaixo fornecem informações sobre novos recursos ao desenvolvedor oferecidos pelo componente da plataforma Android 2.0 disponível para download.

    Suporte do Ant

    • Assinatura de aplicativos no modo de depuração e de lançamento. A assinatura do modo de lançamento inclui suporte integrado para a otimização do zipalign. Para mais informações, consulte Assinar seus apps.
    • Adiciona o novo sistema de compilação Ant com suporte para projetos de instrumentação Emma (cobertura de código).

    API Framework

    As seções abaixo oferecem informações sobre a API do framework do aplicativo fornecida pela plataforma Android 2.0.

    Nível da API

    A plataforma Android 2.0 oferece uma versão atualizada da API do framework. Assim como as versões anteriores, a API do Android 2.0 recebe um identificador de número inteiro (5), que é armazenado no próprio sistema. Esse identificador, chamado de "nível de API", permite que o sistema determine corretamente se um aplicativo é compatível com o sistema antes de instalá-lo.

    Para usar as APIs introduzidas no Android 2.0 no seu aplicativo, é necessário definir o valor adequado, "5", nos atributos do elemento <uses-sdk> no manifesto do aplicativo.

    Para mais informações sobre como usar o nível da API, consulte o documento Níveis da API.

    Resumo de mudanças na API

    Bluetooth

    • Ativar/desativar o Bluetooth
    • Descoberta de dispositivos e serviços
    • Conectar a um dispositivo remoto usando RFCOMM e enviar/receber dados
    • Anunciar serviços RFCOMM e ouvir a conexão RFCOMM de entrada

    Adaptadores de sincronização

    • Novas APIs para que os adaptadores de sincronização se conectem a qualquer back-end

    Gerente da conta

    • API centralizada de gerenciamento de contas para armazenar e acessar tokens/senhas de autenticação com segurança

    Contatos

    • Novas APIs de contato que permitem dados de várias contas
    • As novas APIs do framework de contato rápido permitem que os desenvolvedores criem selos de contato no app. Ao clicar no selo, uma janela com uma lista de maneiras de entrar em contato com a pessoa é aberta.

    WebView

    • Classes descontinuadas: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Câmera

    • Novos parâmetros para efeito de cor, modo de cena, modo de flash, modo de foco, balanço de branco, rotação e outras configurações.
    • Nova interface do ZoomCallback para realizar ações quando o nível de zoom é alterado.

    Mídia

    • O MediaScanner agora gera miniaturas de todas as imagens quando elas são inseridas na MediaStore.
    • Nova API Thumbnail para recuperar miniaturas de imagens e vídeos sob demanda.

    Outro framework

    • Novos temas do sistema em android.R.style para mostrar atividades com facilidade na parte de cima do plano de fundo do sistema atual ou manter a atividade anterior visível em segundo plano.
    • A nova API BackgroundManager substitui e estende as APIs de plano de fundo que estavam anteriormente no contexto, para permitir que os aplicativos solicitem e definam o plano de fundo do sistema.
    • Novas APIs de serviço para ajudar os aplicativos a processar corretamente o ciclo de vida do serviço, principalmente em situações de pouca memória em que um serviço pode ser encerrado durante a execução.
      • Service.setForeground() foi descontinuado e agora não executa efetivamente nenhuma operação. Ela foi substituída por uma nova API, startForeground(), que ajuda (e exige) a associação de uma notificação em andamento ao estado do primeiro plano
    • O MotionEvent agora pode relatar informações de toque simultâneo para dispositivos compatíveis. É possível rastrear até três ponteiros simultaneamente.
    • O KeyEvent tem novas APIs de envio de teclas para ajudar a implementar o comportamento de ação ao levantar e de toque longo, além de um novo mecanismo para cancelar pressionamentos de tecla (para teclas virtuais).
    • O WindowManager.LayoutParams tem novas constantes que permitem que uma janela ative a tela quando ela é exibida, mesmo que a tela esteja bloqueada. Isso permite que os aplicativos implementem de maneira mais limpa coisas como despertadores que precisam ativar o dispositivo.
    • Novas APIs Intent que transmitem o estado de acoplamento do dispositivo e permitem que os aplicativos iniciem atividades especiais quando o dispositivo é colocado em uma base para computador ou carro.

    Eventos de tecla executados ao levantar a tecla

    O Android 2.0 foi projetado para ser executado em dispositivos que usam chaves virtuais para HOME, MENU, BACK e SEARCH, em vez de teclas físicas. Para oferecer a melhor experiência do usuário nesses dispositivos, a plataforma Android agora executa esses botões ao levantar a tecla, para um par de teclas pressionadas/levantadas, em vez de pressionar a tecla. Isso ajuda a evitar eventos acidentais do botão e permite que o usuário pressione a área do botão e arraste para fora dele sem gerar um evento.

    Essa mudança de comportamento só vai afetar seu app se ele estiver interceptando eventos de botão e realizando uma ação ao pressionar a tecla, em vez de pressionar a tecla. Principalmente se o aplicativo estiver interceptando a tecla BACK, verifique se ele está processando os eventos de tecla corretamente.

    Em geral, interceptar a tecla BACK em um app não é recomendado. No entanto, se o aplicativo fizer isso e invocar alguma ação ao pressionar a tecla para baixo, em vez de pressionar o botão, você precisará modificar seu código.

    Caso seu aplicativo use APIs introduzidas no Android 2.0 (nível 5 da API), você pode aproveitar as novas APIs para gerenciar pares de eventos de chaves:

    • Se você estiver interceptando a tecla VOLTAR em uma atividade ou caixa de diálogo, implemente o novo método onBackPressed().
    • Se você estiver interceptando a tecla BACK em uma visualização, rastreie o evento durante o pressionamento da tecla para baixo (usando o novo método startTracking()) e invoque a ação quando a tecla for pressionada. Confira um padrão que você pode 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);
          }
      

    Se você quiser atualizar um aplicativo legado para que o processamento da tecla BACK funcione corretamente para o Android 2.0 e versões mais antigas da plataforma, use uma abordagem semelhante à mostrada acima. O código pode detectar o evento do botão de destino ao pressionar a tecla, definir uma flag para rastrear o evento de tecla e também detectar o evento ao soltar a tecla, executando a ação desejada se a flag de rastreamento estiver definida. Também é bom observar as mudanças de foco e limpar a sinalização de rastreamento ao ganhar/perder o foco.

    Relatório de diferenças da API

    Para conferir uma visão detalhada das mudanças de API no Android 2.0 (nível 5 da API), em comparação com a versão anterior, consulte o Relatório de diferenças de API.