API di Android 3.2

Livello API: 13

Android 3.2 (HONEYCOMB_MR2) è una release incrementale della piattaforma che aggiunge nuove funzionalità per utenti e sviluppatori. Le sezioni che seguono forniscono una panoramica delle nuove funzionalità e delle API per sviluppatori.

Per gli sviluppatori, la piattaforma Android 3.2 è disponibile come componente scaricabile per l'SDK Android. La piattaforma scaricabile include una libreria Android e un'immagine di sistema, oltre a una serie di skin di emulatori e altro ancora. Per iniziare a sviluppare o testare versioni su Android 3.2, utilizza Android SDK Manager per scaricare la piattaforma nel tuo SDK.

Funzionalità principali della piattaforma

Nuove funzionalità per gli utenti

  • Ottimizzazioni per una gamma più ampia di tablet

    Android 3.2 include una serie di ottimizzazioni nel sistema per garantire un'esperienza utente ottimale su una gamma più ampia di tablet.

  • Zoom compatibilità per app con dimensioni fisse

    Android 3.2 introduce una nuova modalità di zoom di compatibilità che offre agli utenti un nuovo modo per visualizzare le app con dimensioni fisse su dispositivi più grandi. La nuova modalità fornisce un'alternativa in scala di pixel all'estensione dell'interfaccia utente standard per le app che non sono progettate per l'esecuzione su schermi di dimensioni maggiori, come i tablet. Gli utenti possono accedere alla nuova modalità tramite un'icona del menu nella barra di sistema per le app che richiedono supporto per la compatibilità.

  • Sincronizzazione dei contenuti multimediali dalla scheda SD

    Sui dispositivi che supportano una scheda SD, gli utenti ora possono caricare file multimediali direttamente dalla scheda SD alle app che li utilizzano. Una struttura di sistema rende i file accessibili alle app dal media store del sistema.

Nuove funzionalità per sviluppatori

  • API estesa per il supporto della gestione degli schermi

    Android 3.2 introduce estensioni nell'API di supporto dello schermo della piattaforma per offrire agli sviluppatori ulteriori modi per gestire l'interfaccia utente dell'applicazione sulla gamma di dispositivi Android. L'API include nuovi qualificatori di risorse e nuovi attributi manifest che ti offrono un controllo più preciso sulla modalità di visualizzazione delle app in dimensioni diverse, anziché fare affidamento su categorie di dimensioni generalizzate.

    Per garantire la migliore visualizzazione possibile per app di dimensioni fisse e app con supporto limitato per diverse dimensioni dello schermo, la piattaforma offre anche una nuova modalità di compatibilità dello zoom che esegue il rendering dell'interfaccia utente su un'area dello schermo più piccola, quindi la ridimensiona per riempire lo spazio disponibile sul display. Per ulteriori informazioni sull'API di supporto dello schermo e sui controlli che fornisce, vedi le sezioni seguenti.

Panoramica dell'API

API Screens Support

Android 3.2 introduce nuovi schermi che supportano API che offrono un maggiore controllo sulla modalità di visualizzazione delle applicazioni su schermi di dimensioni diverse. L'API si basa sull'API esistente per il supporto degli schermi, incluso il modello di densità dello schermo generalizzata della piattaforma, ma lo estende con la capacità di scegliere come target con precisione intervalli di schermo specifici in base alle dimensioni, misurate in unità di pixel indipendenti dalla densità (ad esempio 600 dp o 720 dp di larghezza), anziché in base alle dimensioni generalizzate dello schermo (ad esempio, large o xlarge).

Durante la progettazione dell'interfaccia utente di un'applicazione, puoi comunque affidarti alla piattaforma per fornire l'astrazione della densità, il che significa che le applicazioni non devono compensare le differenze effettive di densità dei pixel tra i dispositivi. Puoi progettare l'interfaccia utente dell'applicazione in base alla quantità di spazio orizzontale o verticale disponibile. La piattaforma esprime la quantità di spazio disponibile utilizzando tre nuove caratteristiche: smallestLarghezza, width e height.

  • Il valore smallestwidth di uno schermo rappresenta la dimensione minima fondamentale, misurata in unità di pixel indipendenti dalla densità ("dp"). L'altezza o la larghezza dello schermo è quella più corta. Per uno schermo con orientamento verticale, la larghezza più piccola si basa normalmente sulla larghezza, mentre in orientamento orizzontale si basa sull'altezza. In tutti i casi, il valore smallestwidth deriva da una caratteristica fissa dello schermo e il valore non cambia, indipendentemente dall'orientamento. La larghezza minima è importante per le applicazioni perché rappresenta la larghezza minima possibile in cui deve essere disegnata l'interfaccia utente dell'applicazione, escluse le aree dello schermo riservate dal sistema.
  • Al contrario, la larghezza e l'altezza di uno schermo rappresentano lo spazio orizzontale o verticale corrente disponibile per il layout dell'applicazione, misurati in unità "dp", escluse le aree dello schermo riservate dal sistema. La larghezza e l'altezza di uno schermo cambiano quando l'utente cambia l'orientamento da orizzontale a verticale.

La nuova API di supporto delle schermate è progettata per consentirti di gestire l'interfaccia utente dell'applicazione in base alla larghezza più piccola della schermata corrente. Puoi anche gestire l'interfaccia utente in base alla larghezza o all'altezza corrente, se necessario. Per questi scopi, l'API fornisce i seguenti strumenti:

  • Nuovi qualificatori di risorse per il targeting di layout e altre risorse con il valore minimo di larghezza, larghezza o altezza
  • Nuovi attributi manifest, per specificare l'intervallo massimo di compatibilità dello schermo dell'app

Inoltre, le applicazioni possono comunque eseguire query sul sistema e gestire il caricamento dell'interfaccia utente e delle risorse in fase di runtime, come nelle versioni precedenti della piattaforma.

Poiché la nuova API consente di scegliere come target gli schermi in modo più diretto tramite piccoli valori di larghezza, larghezza e altezza, è utile comprendere le caratteristiche tipiche dei diversi tipi di schermata. La tabella seguente fornisce alcuni esempi, misurati in unità "dp".

Tabella 1. Dispositivi tipici, con densità e dimensioni in dp.

Tipo Densità (generalizzata) Dimensioni (dp) Larghezza minore (dp)
Telefono di riferimento mdpi 320x480 320
Piccolo tablet/telefono di grandi dimensioni mdpi 480x800 480
tablet da 7 pollici mdpi 600x1024 600
tablet da 10 pollici mdpi 800x1280 800

Le sezioni seguenti forniscono ulteriori informazioni sui nuovi qualificatori di schermata e sugli attributi del file manifest. Per informazioni complete su come utilizzare l'API di supporto dello schermo, consulta la sezione Supporto di più schermi.

Nuovi qualificatori di risorse per il supporto degli schermi

I nuovi qualificatori delle risorse in Android 3.2 ti consentono di definire meglio il targeting dei layout per intervalli di dimensioni dello schermo. Utilizzando i qualificatori, puoi creare configurazioni di risorse progettate per un valore minimo specifico di smallestwidth, larghezza attuale o altezza corrente, misurato in pixel indipendenti dalla densità.

I nuovi qualificatori sono:

  • swNNNdp: specifica la larghezza minima su cui deve essere utilizzata la risorsa, misurata in unità "dp". Come accennato in precedenza, la larghezza minima di uno schermo è costante, indipendentemente dall'orientamento. Esempi: sw320dp, sw720dp, sw720dp.
  • wNNNdp e hNNNdp: specifica la larghezza o l'altezza minima su cui deve essere utilizzata la risorsa, misurata in unità "dp". Come indicato in precedenza, la larghezza e l'altezza di uno schermo dipendono dall'orientamento dello schermo e cambiano ogni volta che cambia l'orientamento. Esempi: w320dp, w720dp, h1024dp.

Se necessario, puoi anche creare più configurazioni di risorse sovrapposte. Ad esempio, puoi taggare alcune risorse da utilizzare su schermi di larghezza superiore a 480 dp, altre di dimensioni superiori a 600 dp e altre ancora di 720 dp. Quando più configurazioni di risorse sono idonee per una determinata schermata, il sistema seleziona la configurazione più vicina. Per un controllo preciso delle risorse caricate in una determinata schermata, puoi taggare le risorse con un qualificatore o combinare più qualificatori nuovi o esistenti.

In base alle dimensioni tipiche elencate in precedenza, ecco alcuni esempi di come potresti utilizzare i nuovi qualificatori:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

Le versioni precedenti della piattaforma ignoreranno i nuovi qualificatori, quindi puoi combinarli secondo necessità per assicurarti che la tua app venga visualizzata correttamente su qualsiasi dispositivo. Ecco alcuni esempi:

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

Per informazioni complete su come utilizzare i nuovi qualificatori, consulta Utilizzo dei nuovi qualificatori di dimensione.

Nuovi attributi del file manifest per la compatibilità delle dimensioni dello schermo

Il framework offre un nuovo insieme di attributi manifest di <supports-screens> che ti consentono di gestire il supporto della tua app per schermi di dimensioni diverse. In particolare, puoi specificare gli schermi più grandi e più piccoli su cui è progettata l'esecuzione della tua app, nonché lo schermo più grande su cui è stata progettata per essere eseguita, senza bisogno della nuova modalità di compatibilità dello schermo del sistema. Come i qualificatori di risorse descritti sopra, i nuovi attributi del file manifest specificano l'intervallo di schermate supportato dall'applicazione, come specificato da smallestwidth.

I nuovi attributi del file manifest per il supporto dello schermo sono:

  • android:compatibleWidthLimitDp="numDp" - Questo attributo consente di specificare il valore smallestwidth massimo su cui può essere eseguita l'applicazione senza bisogno della modalità di compatibilità. Se la schermata corrente è superiore al valore specificato, il sistema visualizza l'applicazione in modalità normale, ma consente all'utente di passare alla modalità di compatibilità facoltativamente tramite un'impostazione nella barra di sistema.
  • android:largestWidthLimitDp="numDp" - Questo attributo consente di specificare la larghezza minima della larghezza su cui è progettata l'applicazione. Se la schermata corrente è superiore al valore specificato, il sistema forza l'applicazione in modalità di compatibilità dello schermo per garantire la migliore visualizzazione della schermata corrente.
  • android:requiresSmallestWidthDp="numDp" - Questo attributo consente di specificare il valore smallestwidth minimo su cui può essere eseguita l'applicazione. Se la schermata corrente è inferiore al valore specificato, il sistema considera l'applicazione incompatibile con il dispositivo, ma non ne impedisce l'installazione e l'esecuzione.

Nota: attualmente Google Play non filtra le app in base a nessuno degli attributi sopra indicati. Il supporto per i filtri verrà aggiunto in una release della piattaforma successiva. Le applicazioni che richiedono il filtro in base alle dimensioni dello schermo possono utilizzare gli attributi <supports-screens> esistenti.

Per informazioni complete su come utilizzare i nuovi attributi, consulta la sezione Dichiarazione del supporto delle dimensioni dello schermo.

Modalità di compatibilità dello schermo

Android 3.2 fornisce una nuova modalità di compatibilità dello schermo per le applicazioni che dichiarano esplicitamente di non supportare schermi di dimensioni grandi come quello su cui sono in esecuzione. Questa nuova modalità di "zoom" scala in pixel: visualizza l'applicazione in un'area più piccola dello schermo, quindi ridimensiona i pixel per riempire la schermata corrente.

Per impostazione predefinita, il sistema offre la modalità di compatibilità dello schermo come opzione utente per le app che la richiedono. Gli utenti possono attivare e disattivare la modalità zoom utilizzando un controllo disponibile nella barra di sistema.

Poiché la nuova modalità di compatibilità dello schermo potrebbe non essere appropriata per tutte le applicazioni, la piattaforma consente all'applicazione di disattivarla utilizzando attributi manifest. Se disattivato dall'app, il sistema non offre la modalità di compatibilità "zoom" come opzione per gli utenti quando l'app è in esecuzione.

Nota. Per informazioni importanti su come controllare la modalità di compatibilità nelle applicazioni, leggi l'articolo Nuova modalità per le app su schermi di grandi dimensioni sul blog di Android for Developers.

Nuova densità dello schermo per televisori a 720p e dispositivi simili

Per soddisfare le esigenze delle applicazioni eseguite su televisori da 720p o simili con schermi a densità moderata, Android 3.2 introduce una nuova densità generalizzata, tvdpi, con un DPI approssimativo di 213. Le applicazioni possono eseguire query sulla nuova densità in densityDpi e utilizzare il nuovo qualificatore tvdpi per taggare le risorse per televisori e dispositivi simili. Ecco alcuni esempi:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

In generale, le applicazioni non dovrebbero funzionare con questa densità. Nei casi in cui sia necessario un output per uno schermo da 720p, gli elementi dell'interfaccia utente possono essere scalati automaticamente dalla piattaforma.

Framework UI

  • Frammenti
    • La nuova classe Fragment.SavedState contiene le informazioni sullo stato recuperate da un'istanza del frammento tramite saveFragmentInstanceState().
    • Il nuovo metodo saveFragmentInstanceState() salva l'attuale stato dell'istanza del frammento specificato. Lo stato può essere utilizzato in un secondo momento durante la creazione di una nuova istanza del frammento corrispondente allo stato attuale.
    • Il nuovo metodo setInitialSavedState() imposta lo stato salvato iniziale di un frammento quando viene creato per la prima volta.
    • Il nuovo metodo di callback onViewCreated() notifica al frammento che onCreateView() è stato restituito, ma prima che qualsiasi stato salvato venga ripristinato nella vista.
    • isDetached() determina se il frammento è stato scollegato esplicitamente dalla UI.
    • I nuovi metodi attach() e detach() consentono a un'applicazione di ricollegare o scollegare i frammenti nell'interfaccia utente.
    • Un nuovo metodo di overload setCustomAnimations() consente di impostare risorse di animazione specifiche da eseguire per le operazioni di entrata/uscita e in particolare per l'esecuzione di popolazioni dallo stack posteriore. L'implementazione esistente non tiene conto del diverso comportamento dei frammenti durante l'apertura dello stack di supporto.
  • Informazioni sulle dimensioni dello schermo in ActivityInfo e ApplicationInfo
  • Supporti per recuperare le dimensioni di visualizzazione da WindowManager
    • I nuovi metodi getSize() e getRectSize() consentono alle applicazioni di ottenere le dimensioni non elaborate del display.
  • Nuovi stili "olografici" pubblici
    • La piattaforma ora espone una varietà di stili "olografici" pubblici per testo, widget e schede della barra delle azioni e altro ancora. Consulta R.style per un elenco completo.
  • LocalActivityManager, ActivityGroup e LocalActivityManager sono ora deprecati
    • Le nuove applicazioni dovrebbero utilizzare i frammenti invece di queste classi. Per continuare a essere eseguita sulle versioni precedenti della piattaforma, puoi utilizzare la libreria di supporto v4 (libreria di compatibilità), disponibile nell'SDK Android. La v4 Support Library fornisce una versione dell'API Fragment compatibile fino ad Android 1.6 (livello API 4).
    • Per le app che si sviluppano su Android 3.0 (livello API 11) o versioni successive, le schede vengono in genere presentate nell'interfaccia utente utilizzando il nuovo ActionBar.newTab() e le API correlate per posizionare le schede nell'area della barra delle azioni.

Framework multimediale

  • Le applicazioni che utilizzano il fornitore di contenuti multimediali della piattaforma (MediaStore) ora possono leggere i dati multimediali direttamente dalla scheda SD rimovibile, se supportata dal dispositivo. Le applicazioni possono anche interagire direttamente con i file della scheda SD utilizzando l'API MTP.

Grafica

Framework IME

  • Nuovo metodo getModifiers() per recuperare lo stato attuale dei tasti di modifica.

Framework USB

  • Nuovo metodo getRawDescriptors() per recuperare i descrittori USB non elaborati per il dispositivo. Puoi utilizzare il metodo per accedere ai descrittori non supportati direttamente tramite le API di livello superiore.

Rete

Telefonia

Utilità di base

  • Utility comprimibili
  • Binder e IBinder
    • Il nuovo metodo dumpAsync() in Binder e IBinder consente alle applicazioni di eseguire il dump in un file specificato, garantendo che la destinazione venga eseguita in modo asincrono.
    • Il nuovo codice di transazione del protocollo IBinder TWEET_TRANSACTION consente alle applicazioni di inviare un tweet all'oggetto di destinazione.

Nuove costanti funzionalità

La piattaforma aggiunge nuove costanti di funzionalità hardware che puoi dichiarare nei manifest dell'applicazione per informare entità esterne come Google Play delle funzionalità hardware e software necessarie. Queste e altre costanti delle funzionalità vengono dichiarate negli elementi manifest di <uses-feature>.

Google Play filtra le applicazioni in base ai loro attributi <uses-feature>, per garantire che siano disponibili solo per i dispositivi che soddisfano i relativi requisiti.

  • Costanti delle caratteristiche in base ai requisiti relativi all'orientamento orizzontale o verticale

    Android 3.2 introduce nuove funzionalità costanti che consentono alle applicazioni di specificare se devono essere visualizzate con orientamento orizzontale, verticale o entrambi. La dichiarazione di queste costanti indica che l'applicazione non deve essere installata su un dispositivo che non offre l'orientamento associato. Al contrario, se una o entrambe le costanti non vengono dichiarate, significa che l'applicazione non ha una preferenza per gli orientamenti non dichiarati e potrebbe essere installata su un dispositivo che non li offre.

    Per un'applicazione tipica che funziona correttamente sia con l'orientamento orizzontale che verticale, non è necessario dichiarare un requisito di orientamento. Piuttosto, un'applicazione progettata principalmente per un determinato orientamento, ad esempio un'app destinata a un televisore, potrebbe dichiarare una delle costanti per garantire che non sia disponibile per i dispositivi che non forniscono tale orientamento.

    Se una qualsiasi delle attività dichiarate nel file manifest richiede di essere eseguita in un orientamento specifico, utilizzando l'attributo android:screenOrientation, significa anche che l'applicazione richiede quell'orientamento.

  • Altre costanti delle funzionalità

Report Differenze API

Per una visualizzazione dettagliata di tutte le modifiche all'API in Android 3.2 (Livello API 13), consulta il Report sulle differenze API.

Livello API

La piattaforma Android 3.2 offre una versione aggiornata dell'API framework. All'API Android 3.2 viene assegnato un identificatore intero (13) 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 3.2, devi compilare l'applicazione in base alla libreria Android fornita nella piattaforma Android 3.2 SDK. A seconda delle tue esigenze, potrebbe essere necessario aggiungere anche un attributo android:minSdkVersion="13" all'elemento <uses-sdk> nel file manifest dell'applicazione.

Per ulteriori informazioni, consulta Che cos'è il livello API?