API per 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 riportate di seguito 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 e un'immagine di sistema Android, nonché una serie di skin dell'emulatore e altro ancora. Per iniziare a sviluppare o testare su Android 3.2, utilizza Android SDK Manager per scaricare la piattaforma nel tuo SDK.

Aspetti principali della piattaforma

Nuove funzionalità per gli utenti

  • Ottimizzazioni per una gamma più ampia di tablet

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

  • Zoom di compatibilità 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à offre un'alternativa basata su pixel allo stretching dell'interfaccia utente standard per le app non progettate per funzionare su schermi di dimensioni maggiori, ad esempio sui tablet. La nuova modalità è accessibile agli utenti tramite un'icona del menu nella barra di sistema, per le app che richiedono il supporto della compatibilità.

  • Sincronizzazione dei contenuti multimediali dalla scheda SD

    Sui dispositivi che supportano una scheda SD, ora gli utenti possono caricare file multimediali direttamente dalla scheda SD alle app che la utilizzano. Un'utilità di sistema rende i file accessibili alle app dal media store di sistema.

Nuove funzionalità per gli sviluppatori

  • API estesa per la gestione del supporto degli schermi

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

    Per garantire la migliore visualizzazione possibile per le app di dimensioni fisse e le app con supporto limitato per varie dimensioni dello schermo, la piattaforma fornisce anche una nuova modalità di compatibilità con lo 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, consulta le sezioni seguenti.

Panoramica dell'API

API Screens Support

Android 3.2 introduce nuovi schermi che supportano le API che offrono un maggiore controllo sulla modalità di visualizzazione delle loro applicazioni su schermi di dimensioni diverse. L'API si basa sull'API esistente che supporta gli schermi, compreso il modello generalizzato di densità dello schermo della piattaforma, ma la estende con la possibilità di scegliere come target 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 dello schermo (ad esempio, grande o xlarge).

Quando progetti l'interfaccia utente di un'applicazione, puoi comunque fare affidamento sulla piattaforma per fornire l'astrazione della densità, il che significa che le applicazioni non devono compensare le differenze nella densità effettiva dei pixel tra i dispositivi. Puoi progettare l'interfaccia utente dell'applicazione in base allo spazio orizzontale o verticale disponibile. La piattaforma esprime la quantità di spazio disponibile utilizzando tre nuove caratteristiche: smallestWidth, width e height.

  • smallestWidth di uno schermo è la sua dimensione minima fondamentale, misurata in unità di pixel indipendenti dalla densità ("dp"). L'altezza o la larghezza dello schermo, la più corta delle due. Per uno schermo in orientamento verticale, solitamente la larghezza minima si basa sulla larghezza, mentre in orientamento orizzontale si basa sull'altezza. In tutti i casi, l'elemento 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 dovrà essere disegnata l'interfaccia utente dell'applicazione, escluse le aree dello schermo riservate al sistema.
  • Al contrario, la larghezza e l'altezza di uno schermo rappresentano lo spazio orizzontale o verticale corrente disponibile per il layout dell'applicazione, misurato in unità "dp", senza includere 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 e viceversa.

L'API di supporto delle nuove schermate è progettata per consentirti di gestire l'interfaccia utente dell'applicazione in base alla larghezza minima della schermata corrente. Puoi anche gestire l'UI in base alla larghezza o all'altezza attuale, se necessario. Per questi scopi, l'API offre questi strumenti:

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

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

Poiché la nuova API ti consente di scegliere come target le schermate in modo più diretto tramite smallestWidth, width e height, è utile comprendere le caratteristiche tipiche dei diversi tipi di schermo. La tabella seguente fornisce alcuni esempi, misurati in unità "dp".

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

Digitazione Densità (generalizzata) Dimensioni (dp) smallestWidth (dp)
Telefono di riferimento mdpi 320x480 320
Tablet piccolo/smartphone grande 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 attributi manifest e sui nuovi qualificatori di schermata. Per informazioni complete su come utilizzare l'API di supporto dello schermo, consulta Supporto di più schermi.

Nuovi qualificatori delle risorse per il supporto degli schermi

I nuovi qualificatori delle risorse in Android 3.2 ti consentono di scegliere meglio come target i layout per intervalli di dimensioni dello schermo. Utilizzando i qualificatori, puoi creare configurazioni di risorse progettate per una larghezza minima, una larghezza corrente o un'altezza corrente specifiche, misurate in pixel indipendenti dalla densità.

I nuovi qualificatori sono:

  • swNNNdp: specifica la larghezza minima minima su cui deve essere utilizzata la risorsa, misurata in unità "dp". Come già detto, la larghezza più piccola di uno schermo rimane 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 accennato sopra, la larghezza e l'altezza di uno schermo sono relative all'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, potresti taggare alcune risorse per l'utilizzo su qualsiasi schermo più largo di 480 dp, altre per uno più largo di 600 dp e altre ancora per uno più largo di 720 dp. Quando per una determinata schermata sono qualificate più configurazioni di risorse, il sistema seleziona la configurazione più pertinente. 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 puoi 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 in base alle tue esigenze per assicurarti che la tua app sia perfetta 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 Utilizzare i nuovi quantificatori delle dimensioni.

Nuovi attributi manifest per la compatibilità con le dimensioni dello schermo

Il framework offre un nuovo insieme di attributi manifest <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 è progettata per funzionare senza bisogno della nuova modalità di compatibilità dello schermo del sistema. Come i qualificatori delle risorse descritti sopra, i nuovi attributi manifest specificano l'intervallo di schermi supportati dall'applicazione, come specificato da smallestWidth.

I nuovi attributi manifest per il supporto dello schermo sono:

  • android:compatibleWidthLimitDp="numDp": questo attributo consente di specificare il valore smallestWidth massimo su cui l'applicazione può essere eseguita senza richiedere la modalità di compatibilità. Se la schermata corrente è più grande del valore specificato, il sistema mostra l'applicazione in modalità normale, ma consente all'utente di passare facoltativamente alla modalità di compatibilità tramite un'impostazione nella barra di sistema.
  • android:largestWidthLimitDp="numDp": questo attributo consente di specificare il valore smallestWidth massimo su cui è progettata l'esecuzione dell'applicazione. Se la schermata corrente è più grande del valore specificato, il sistema forza l'applicazione in modalità di compatibilità dello schermo per garantire una visualizzazione ottimale sulla schermata corrente.
  • android:requiresSmallestWidthDp="numDp": questo attributo consente di specificare la larghezza minima su cui può essere eseguita l'applicazione. Se lo schermo corrente è più piccolo del 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 agli attributi sopra indicati. Il supporto per i filtri verrà aggiunto in una release successiva 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 Dichiarare il 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 uguali a quelle su cui sono in esecuzione. Questa nuova modalità "zoom" è basata su una scala in pixel: visualizza l'applicazione in un'area dello schermo più piccola e poi scala i pixel per riempire lo schermo corrente.

Per impostazione predefinita, il sistema offre la modalità di compatibilità dello schermo come opzione per l'utente, per le app che lo 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 gli attributi manifest. Se disattivato dall'app, il sistema non offre la modalità di compatibilità "zoom" per gli utenti quando l'app è in esecuzione.

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

Nuova densità dello schermo per i televisori con risoluzione 720p e dispositivi simili

Per soddisfare le esigenze delle applicazioni in esecuzione su TV 720p o simili con screen di densità moderata, Android 3.2 introduce una nuova densità generalizzata,tvdpi, con un dpi approssimativo di 213. Le applicazioni possono eseguire query per la nuova densità in densityDpi e possono utilizzare il nuovo qualificatore tvdpi per taggare risorse per televisori e dispositivi simili. Ad esempio:

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

In genere, le applicazioni non dovrebbero dover funzionare con questa densità. Per le situazioni in cui è necessaria l'uscita per uno schermo a 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 corrente dell'istanza del Fragment specificato. Lo stato può essere utilizzato in un secondo momento per creare una nuova istanza del frammento corrispondente allo stato corrente.
    • Il nuovo metodo setInitialSavedState() imposta lo stato salvato iniziale per un frammento al momento della prima costruzione.
    • Il nuovo metodo di callback onViewCreated() comunica al frammento che onCreateView() è tornato, ma prima che qualsiasi stato salvato sia stato ripristinato nella vista.
    • Il metodo isDetached() determina se il frammento è stato scollegato esplicitamente dall'interfaccia utente.
    • I nuovi metodi attach() e detach() consentono a un'applicazione di ricollegare o scollegare i frammenti nell'interfaccia utente.
    • Un nuovo metodo di sovraccarico di setCustomAnimations() ti consente di impostare risorse di animazione specifiche da eseguire per le operazioni di invio e uscita, in particolare quando apri lo stack posteriore. L'implementazione esistente non tiene conto del diverso comportamento dei frammenti quando viene espulsa la pila precedente.
  • Informazioni sulle dimensioni dello schermo in ActivityInfo e ApplicationInfo
  • Aiuto per ottenere 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 pubblici "olografici"
    • 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 devono utilizzare i frammenti anziché queste classi. Per continuare a eseguire l'app su versioni precedenti della piattaforma, puoi utilizzare la v4 Support Library (libreria di compatibilità), disponibile nell'SDK Android. La libreria di supporto v4 fornisce una versione dell'API Fragment compatibile fino ad Android 1.6 (livello API 4).
    • Per le app sviluppate per Android 3.0 (livello API 11) o versioni successive, le schede vengono in genere visualizzate nell'interfaccia utente utilizzando il nuovo ActionBar.newTab() e le API correlate per posizionarle nell'area della barra delle app.

Framework multimediale

  • Le applicazioni che utilizzano il provider multimediale 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 corrente dei tasti di modifica.

Framework USB

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

Rete

Telefonia

Utilità di base

  • Utilità per la suddivisione in lotti
  • Binder e IBinder
    • Il nuovo metodo dumpAsync() in Binder e IBinder consente alle applicazioni di eseguire il dump in un file specificato, garantendo l'esecuzione asincrona del target.
    • Il nuovo IBinder codice transazione del protocollo TWEET_TRANSACTION consente alle applicazioni di inviare un tweet all'oggetto di destinazione.

Costanti di nuove funzionalità

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

Google Play filtra le applicazioni in base ai relativi attributi <uses-feature> per assicurarsi che siano disponibili solo sui dispositivi su cui sono soddisfatti i relativi requisiti.

  • Costanti delle funzionalità per i requisiti di orientamento orizzontale o verticale

    Android 3.2 introduce nuove costanti di funzionalità che consentono alle applicazioni di specificare se richiedono la visualizzazione in 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 sono 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.

    In genere, un'applicazione che funziona correttamente sia in orizzontale che in verticale non deve dichiarare un requisito di orientamento. Piuttosto, un'applicazione progettata principalmente per un determinato orientamento, ad esempio un'app progettata per 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 con un orientamento specifico, utilizzando l'attributo android:screenOrientation, viene dichiarato anche che l'applicazione richiede questo orientamento.

  • Altre costanti di funzionalità

Report sulle differenze dell'API

Per una visualizzazione dettagliata di tutte le modifiche all'API in Android 3.2 (livello API 13), consulta il report Differenze nell'API.

Livello API

La piattaforma Android 3.2 fornisce una versione aggiornata dell'API del 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 SDK Android 3.2. A seconda delle tue esigenze, potrebbe essere necessario aggiungere anche un attributo android:minSdkVersion="13" all'elemento <uses-sdk> nel manifest dell'applicazione.

Per saperne di più, consulta Che cos'è il livello API?