Android 2.0, versione 1

Livello API: 5

Android 2.0 è una delle principali release della piattaforma di cui è possibile eseguire la distribuzione sui telefoni Android a partire da novembre 2009. La release include nuove funzionalità per utenti e sviluppatori, nonché modifiche all'API Framework Android.

Per gli sviluppatori, la piattaforma Android 2.0 è disponibile come componente scaricabile per l'SDK Android. La piattaforma scaricabile include una libreria e un'immagine di sistema Android completamente conformi, nonché un insieme di skin di emulatori, applicazioni di esempio e altro ancora. La piattaforma scaricabile è completamente conforme e non include librerie esterne.

Per iniziare a sviluppare o testare la piattaforma Android 2.0, utilizza l'SDK Android e lo strumento AVD Manager per scaricare la piattaforma nel tuo SDK.

Funzionalità principali della piattaforma

Per un elenco delle nuove funzionalità utente e delle caratteristiche principali della piattaforma, consulta il documento Caratteristiche principali della piattaforma Android 2.0.

Applicazioni integrate

L'immagine di sistema inclusa nella piattaforma scaricabile fornisce le seguenti applicazioni integrate:

  • Sveglia
  • Browser
  • Calcolatrice
  • Telecamera
  • Fotocamera
  • Contatti
  • Impostazioni internazionali personalizzate (app sviluppatore)
  • Strumenti per sviluppatori (app per sviluppatori)
  • Telefono
  • Email
  • Galleria
  • Generatore di gesti
  • IME per l'input di testo in giapponese
  • Messaggi
  • Musica
  • Impostazioni
  • Ricambi (app sviluppatore)

Locales

L'immagine di sistema inclusa nella piattaforma scaricabile offre diverse impostazioni internazionali integrate. In alcuni casi, sono disponibili stringhe specifiche per la regione. In altri casi, viene utilizzata una versione predefinita della lingua. Le lingue disponibili nell'immagine del sistema Android 2.0 sono elencate di seguito (con il descrittore locale language_country/region).

  • Cinese, Repubblica Popolare Democratica (zh_CN)
  • Cinese, Taiwan (zh_TW)
  • Ceco (cs_CZ)
  • Olandese, Paesi Bassi (nl_NL)
  • Olandese, Belgio (nl_BE)
  • Inglese, USA (en_US)
  • Inglese, Gran Bretagna (en_GB)
  • Inglese, Canada (en_CA)
  • Inglese, Australia (en_AU)
  • Inglese, Nuova Zelanda (en_NZ)
  • Inglese, Singapore(en_SG)
  • Francese, Francia (fr_FR)
  • Francese, Belgio (fr_BE)
  • Francese, Canada (fr_CA)
  • Francese, Svizzera (fr_CH)
  • Tedesco, Germania (de_DE)
  • Tedesco, Austria (de_AT)
  • Tedesco, Svizzera (de_CH)
  • Tedesco, Liechtenstein (de_LI)
  • Italiano, Italia (it_IT)
  • Italiano, Svizzera (it_CH)
  • Giapponese (ja_JP)
  • Coreano (ko_KR)
  • Polacco (pl_PL)
  • Russo (ru_RU)
  • Spagnolo (es_ES)
  • Le stringhe dell'interfaccia utente localizzate corrispondono alle impostazioni internazionali accessibili tramite le impostazioni.

    Skin per emulatori

    La piattaforma scaricabile include una serie di skin di emulatori che puoi utilizzare per modellare la tua applicazione in diverse dimensioni e risoluzioni dello schermo. Le skin dell'emulatore sono:

    • QVGA (240 x 320, bassa densità, schermo piccolo)
    • WQVGA (240 x 400, bassa densità, schermo normale)
    • FWQVGA (240 x 432, bassa densità, schermo normale)
    • HVGA (320 x 480, media densità, schermo normale)
    • WVGA800 (480 x 800, alta densità, schermo normale)
    • WVGA854 (alta densità 480 x 854, schermo normale)

    Per ulteriori informazioni su come sviluppare un'applicazione che sia visualizzata e funzioni correttamente su tutti i dispositivi Android, consulta la sezione Supporto di più schermi.

    Funzionalità per sviluppatori

    Le sezioni che seguono forniscono informazioni sulle nuove funzionalità per sviluppatori offerte dal componente scaricabile della piattaforma Android 2.0.

    Supporto per formiche

    • Firma dell'applicazione in modalità di debug e release. La firma in modalità di rilascio include il supporto integrato per l'ottimizzazione di zipalign. Per ulteriori informazioni, leggi l'articolo sulla firma delle applicazioni.
    • Aggiunge un nuovo sistema di build Ant con supporto per progetti di strumentazione Emma (copertura del codice).

    API Framework

    Le sezioni che seguono forniscono informazioni sull'API del framework dell'applicazione fornita dalla piattaforma Android 2.0.

    Livello API

    La piattaforma Android 2.0 offre una versione aggiornata dell'API framework. Come nelle versioni precedenti, all'API Android 2.0 viene assegnato un identificatore con numero intero (5) memorizzato nel sistema stesso. Questo identificatore, chiamato "livello API", consente al sistema di determinare correttamente se un'applicazione è compatibile con il sistema prima di installarla.

    Per utilizzare nella tua applicazione le API introdotte in Android 2.0, devi impostare il valore corretto, "5", negli attributi dell'elemento <uses-sdk> del manifest dell'applicazione.

    Per ulteriori informazioni su come utilizzare il livello API, consulta il documento Livelli API.

    Riepilogo delle modifiche all'API

    Bluetooth

    • Attiva/disattiva il Bluetooth
    • Rilevamento di dispositivi e servizi
    • Connettiti a un dispositivo remoto tramite RFCOMM e invia/ricevi dati
    • Pubblicizza i servizi RFCOMM e ascolta la connessione RFCOMM in entrata

    Adattatori di sincronizzazione

    • Nuove API per gli adattatori di sincronizzazione da connettere a qualsiasi backend

    Gestore dell'account

    • API Centralizzata Account Manager per accedere in modo sicuro a token/password di autorizzazione

    Contatti

    • Nuove API per i contatti che consentono i dati di più account
    • Le nuove API del framework Quick Contact consentono agli sviluppatori di creare badge di contatto nella loro app. Se fanno clic sul badge, si apre una finestra con un elenco di modi per contattare la persona con un clic.

    WebView

    • Classi obsolete: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Fotocamera

    • Nuovi parametri per effetto colore, modalità scena, modalità flash, modalità messa a fuoco, bilanciamento del bianco, rotazione e altre impostazioni.
    • Nuova interfaccia di ZoomCallback per eseguire azioni quando il livello di zoom è cambiato.

    Contenuti multimediali

    • MediaScanner ora genera miniature per tutte le immagini quando vengono inserite in MediaStore.
    • Nuova API Miniatura per recuperare miniature di immagini e video on demand.

    Altro framework

    • Nuovi temi di sistema in android.R.style per visualizzare facilmente le attività sopra lo sfondo di sistema attuale o mantenere visibile l'attività precedente in background.
    • La nuova API WallpaperManager sostituisce ed estende le API per gli sfondi precedentemente presenti in Context, per consentire alle applicazioni di richiedere e impostare lo sfondo del sistema.
    • Nuove API di servizio per aiutare le applicazioni a gestire correttamente il ciclo di vita del servizio, in particolare situazioni di memoria insufficiente in cui un servizio potrebbe essere interrotto mentre è in esecuzione.
      • La funzione Service.setForeground() è stata deprecata e ora non esegue alcuna operazione. Questa viene sostituita da una nuova API, startForeground(), che aiuta (e richiede) ad associare una notifica continua allo stato in primo piano.
    • MotionEvent ora può segnalare informazioni relative al tocco simultaneo per i dispositivi che la supportano. È possibile tracciare contemporaneamente fino a tre puntatori.
    • KeyEvent dispone di nuove API per l'esecuzione delle chiavi che consentono di implementare il comportamento di azione all'accensione e pressione prolungata, nonché un nuovo meccanismo per annullare la pressione dei tasti (per le chiavi virtuali).
    • WindowManager.LayoutParams ha nuove costanti che consentono a una finestra di riattivare lo schermo quando viene visualizzato e di mostrare la finestra anche se lo schermo è bloccato. Ciò consente alle applicazioni di implementare in modo più pulito elementi come sveglie che dovrebbero riattivare il dispositivo.
    • Nuove API per intent che trasmettono lo stato di inserimento del dispositivo nel dock e consentono alle applicazioni di avviare attività speciali quando il dispositivo viene inserito in un desktop o in un dock per auto.

    Eventi chiave eseguiti su key-up

    Android 2.0 è progettato per essere eseguito su dispositivi che usano tasti virtuali per CASA, MENU, INDIETRO e RICERCA, anziché tasti fisici. Per offrire la migliore esperienza utente su questi dispositivi, la piattaforma Android ora esegue questi pulsanti all'inizio, anziché per il tasto giù. In questo modo si evitano eventi accidentali relativi ai pulsanti e l'utente può premere l'area del pulsante per poi trascinarla fuori senza generare un evento.

    Questo cambiamento di comportamento dovrebbe interessare la tua applicazione solo se intercetta gli eventi dei pulsanti e intraprende un'azione sulla pressione del tasto anziché sul key-up. In particolare se l'applicazione intercetta la chiave Indietro, dovresti assicurarti che l'applicazione gestisca correttamente gli eventi chiave.

    In generale, non è consigliabile intercettare la chiave BACK in un'applicazione; tuttavia, se l'applicazione lo sta facendo e richiama un'azione sul keydown anziché sulla key-up, dovresti modificare il tuo codice.

    Se la tua applicazione utilizzerà API introdotte in Android 2.0 (Livello API 5), puoi sfruttare le nuove API per gestire le coppie chiave-evento:

    • Se stai intercettando la chiave BACK in un'attività o una finestra di dialogo, implementa semplicemente il nuovo metodo onBackPressed().
    • Se stai intercettando la chiave BACK in una vista, devi monitorare l'evento chiave in modalità keydown (tramite il nuovo metodo startTracking()), quindi richiamare l'azione nella chiave successiva. Ecco uno schema che puoi utilizzare:
    • 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 desideri aggiornare un'applicazione legacy in modo che la gestione della chiave BACK funziona correttamente sia per Android 2.0 che per le versioni della piattaforma precedenti, puoi utilizzare un approccio simile a quello mostrato sopra. Il codice può rilevare l'evento del pulsante target con il keydown, impostare un flag per monitorare l'evento chiave e quindi rilevare l'evento anche nel key-up, eseguendo l'azione desiderata se è impostato il flag di monitoraggio. Dovrai anche controllare se la messa a fuoco cambia e cancellare il flag di tracciamento.

    Report sulle differenze API

    Per una visualizzazione dettagliata delle modifiche all'API in Android 2.0 (Livello API 5), rispetto alla versione precedente, consulta il Report sulle differenze API.