API 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 un set di skin per emulatori e altro ancora. Per iniziare a sviluppare o testare la versione di Android 3.2, utilizza Android SDK Manager per scaricare la piattaforma nel tuo SDK.

Caratteristiche principali della piattaforma

Funzionalità per i nuovi utenti

  • Ottimizzazioni per una gamma più ampia di tablet

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

  • Zoom compatibile per app di dimensioni fisse

    Android 3.2 introduce una nuova modalità di zoom di compatibilità che offre agli utenti un nuovo modo per visualizzare le app di dimensioni fisse su dispositivi più grandi. La nuova modalità fornisce un'alternativa con scalabilità in pixel all'interfaccia utente standard per le app non progettate per essere eseguite su schermi di dimensioni maggiori, ad esempio sui tablet. La nuova modalità è accessibile agli utenti da un'icona di menu nella barra di sistema per le app che richiedono supporto della compatibilità.

  • Sincronizzazione dei contenuti multimediali dalla scheda SD

    Sui dispositivi che supportano una scheda SD, ora gli utenti possono caricare i file multimediali direttamente dalla scheda SD nelle 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 la gestione del supporto degli schermi

    Android 3.2 introduce estensioni nell'API di supporto degli schermi della piattaforma per offrire agli sviluppatori ulteriori modi per gestire l'UI delle applicazioni su tutta la gamma di dispositivi Android. L'API include nuovi qualificatori delle risorse e nuovi attributi manifest che ti offrono un controllo più preciso su come le app vengono visualizzate 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 schermi di varie dimensioni, la piattaforma offre anche una nuova modalità di compatibilità dello zoom che mostra l'UI su un'area dello schermo più piccola, quindi la ingrandisce per riempire lo spazio disponibile sul display. Consulta le sezioni seguenti per ulteriori informazioni sull'API di supporto dello schermo e sui controlli che fornisce.

Panoramica dell'API

API di supporto schermate

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

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'UI dell'applicazione in base alla quantità di spazio orizzontale o verticale disponibile. La piattaforma esprime la quantità di spazio disponibile utilizzando tre nuove caratteristiche: smallestwidth, width e height.

  • La dimensione smallestwidth di uno schermo è la dimensione minima fondamentale di uno schermo, misurata in unità di pixel indipendenti dalla densità ("dp"). L'altezza o la larghezza dello schermo è la più corta tra le due. Per uno schermo con orientamento verticale, la larghezza più piccola di solito si basa sulla larghezza, mentre in orientamento orizzontale la larghezza si basa sull'altezza. In tutti i casi, il valore smallestwidth deriva da una caratteristica fissa della schermata 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, misurate 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 tra orizzontale e verticale.

La nuova API di supporto delle schermate è progettata per consentirti di gestire l'UI dell'applicazione in base alla larghezza minima della schermata corrente. Puoi anche gestire l'UI in base alla larghezza o all'altezza attuali, se necessario. A tal fine, l'API fornisce i seguenti strumenti:

  • Nuovi qualificatori di risorse per il targeting di layout e altre risorse con i valori minimi di larghezza, larghezza o altezza.
  • Nuovi attributi del file manifest, per specificare l'intervallo di compatibilità massima dello schermo dell'app

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

Poiché la nuova API consente di scegliere come target le schermate in modo più diretto grazie ai valori più piccoli (larghezza, larghezza e altezza), è utile comprendere le caratteristiche tipiche dei diversi tipi di schermate. 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 più piccola (dp)
Telefono di riferimento MDPI 320x480 320
Tablet di piccole dimensioni/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 delle schermate e sugli attributi del file manifest. Per informazioni complete su come utilizzare l'API di supporto degli schermi, consulta la pagina Supporto di più schermi.

Nuovi qualificatori di risorse per il supporto degli schermi

I nuovi qualificatori di risorse in Android 3.2 ti consentono di definire meglio il target dei layout per determinati intervalli di dimensioni dello schermo. Utilizzando i qualificatori, puoi creare configurazioni di risorse progettate per una specifica larghezza minima, larghezza corrente o altezza attuale, misurate 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 già detto, 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 utilizzare 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 600 dp e altre 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 sulle 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 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 la sezione 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 del file manifest di <supports-screens> che ti consentono di gestire il supporto della tua app per diverse dimensioni dello schermo. Nello specifico, puoi specificare gli schermi più grandi e più piccoli su cui è progettata l'app, nonché lo schermo più grande su cui è stata progettata per funzionare, senza bisogno della nuova modalità di compatibilità degli schermi del sistema. Come i qualificatori delle risorse descritti sopra, i nuovi attributi del file manifest specificano l'intervallo di schermate supportato dall'applicazione, come specificato dal valore smallestLarghezza.

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

  • android:compatibleWidthLimitDp="numDp": questo attributo consente di specificare la larghezza minima su cui può essere eseguita l'applicazione senza bisogno della modalità di compatibilità. Se la schermata corrente supera il valore specificato, il sistema visualizza l'applicazione in modalità normale, ma consente all'utente, facoltativamente, di passare alla modalità di compatibilità tramite un'impostazione nella barra di sistema.
  • android:largestWidthLimitDp="numDp" - Questo attributo consente di specificare la larghezza minima più piccola su cui deve essere eseguita l'applicazione. Se la schermata corrente è superiore al valore specificato, il sistema forza l'applicazione in modalità di compatibilità dello schermo per garantire una visualizzazione migliore sulla schermata corrente.
  • android:requiresSmallestWidthDp="numDp" - Questo attributo consente di specificare la larghezza minima, ossia la larghezza minima, 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: al momento Google Play non filtra le app in base agli attributi sopra indicati. Il supporto per i filtri verrà aggiunto in una release futura della piattaforma. 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 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 grandi dimensioni come quello su cui sono in esecuzione. Questa nuova modalità di "zoom" è scalabile in base ai pixel: visualizza l'applicazione in un'area dello schermo più piccola e poi ne ridimensiona i pixel per riempire lo schermo 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 disabilitarla utilizzando attributi del file 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 tue applicazioni, leggi l'articolo Nuova modalità per le app su schermi di grandi dimensioni sul blog per sviluppatori Android.

Nuova densità dello schermo per televisori da 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 una DPI approssimativa di 213. Le applicazioni possono interrogare la 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 devono funzionare con questa densità. Nei casi in cui è 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 lo stato attuale 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() informa il frammento che onCreateView() è stato restituito, ma prima che qualsiasi stato salvato venga ripristinato nella vista.
    • Il metodo isDetached() determina se il frammento è stato scollegato esplicitamente dalla UI.
    • I nuovi metodi attach() e detach() consentono a un'applicazione di ricollegare o scollegare frammenti nell'interfaccia utente.
    • Un nuovo metodo di overload di setCustomAnimations() consente di impostare risorse di animazione specifiche da eseguire per le operazioni di entrata/uscita e in particolare durante l'estrazione dello stack posteriore. L'implementazione esistente non tiene conto del diverso comportamento dei frammenti quando si apre lo stack posteriore.
  • Informazioni sulle dimensioni dello schermo in ActivityInfo e ApplicationInfo
  • Aiutanti 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 mostra una varietà di stili "olografici" pubblici per testo, widget e schede della barra delle azioni e altro ancora. Consulta R.style per l'elenco completo.
  • I criteri LocalActivityManager, ActivityGroup e LocalActivityManager sono ora deprecati
    • Le nuove applicazioni dovrebbero utilizzare i frammenti al posto di queste classi. Per continuare a eseguire su versioni precedenti della piattaforma, puoi utilizzare la libreria di supporto v4 (libreria di compatibilità), disponibile nell'SDK Android. La libreria di assistenza v4 fornisce una versione dell'API Fragment compatibile fino ad Android 1.6 (livello API 4).
    • Per le app che si sviluppano per 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 all'interno dell'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à principali

  • Società di servizi catastali
  • 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 delle funzionalità

La piattaforma aggiunge nuove costanti delle funzionalità hardware che puoi dichiarare nei manifest delle applicazioni per informare le entità esterne come Google Play delle funzionalità hardware e software necessarie. Puoi dichiarare queste e altre costanti di funzionalità negli elementi manifest <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 requisiti.

  • Costanti di caratteristiche per i requisiti relativi all'orientamento orizzontale o verticale

    Android 3.2 introduce nuove costanti di funzionalità 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 le offre.

    Per un'applicazione tipica che funziona correttamente con l'orientamento orizzontale e verticale non è necessario dichiarare un requisito di orientamento. Un'applicazione progettata principalmente per un 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 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 Differenze API.

Livello API

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

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