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".
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
ehNNNdp
: 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 tramitesaveFragmentInstanceState()
. - 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 cheonCreateView()
è 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()
edetach()
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.
- La nuova classe
- Informazioni sulle dimensioni dello schermo in ActivityInfo e ApplicationInfo
ActivityInfo
aggiungeCONFIG_SCREEN_SIZE
eCONFIG_SMALLEST_SCREEN_SIZE
come maschere di bit inconfigChanges
. I bit indicano se un'attività è in grado di gestire autonomamente le dimensioni e le dimensioni minime dello schermo.ApplicationInfo
aggiunge i campilargestWidthLimitDp
,compatibleWidthLimitDp
erequiresSmallestWidthDp
, derivati dagli attributi<supports-screens>
corrispondenti nel file manifest dell'applicazione.
- Supporti per recuperare le dimensioni di visualizzazione da WindowManager
- I nuovi metodi
getSize()
egetRectSize()
consentono alle applicazioni di ottenere le dimensioni non elaborate del display.
- I nuovi metodi
- 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.
- La piattaforma ora espone una varietà di stili "olografici" pubblici per testo, widget e schede della barra delle azioni e altro ancora. Consulta
LocalActivityManager
,ActivityGroup
eLocalActivityManager
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
- Utility complottista in Point e PointF
- Ora le classi
Point
ePointF
includono l'interfacciaParcelable
e i metodi di utilitàdescribeContents()
,readFromParcel()
ewriteToParcel()
.
- Ora le classi
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
- Costanti del tipo di rete
ConnectivityManager
somma le costantiTYPE_ETHERNET
eTYPE_BLUETOOTH
.
Telefonia
- Nuova costante del tipo di rete
NETWORK_TYPE_HSPAP
.
Utilità di base
- Utility comprimibili
- La nuova interfaccia
Parcelable.ClassLoaderCreator
consente all'applicazione di ricevere il ClassLoader in cui l'oggetto viene creato. - Nuovi oggetti
adoptFd
,dup()
efromFd()
per la gestione diParcelFileDescriptor
oggetti.
- La nuova interfaccia
- Binder e IBinder
- Il nuovo metodo
dumpAsync()
inBinder
eIBinder
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.
- Il nuovo metodo
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.
android.hardware.screen.landscape
- L'applicazione richiede la visualizzazione con orientamento orizzontale.android.hardware.screen.portrait
: l'applicazione richiede la visualizzazione con orientamento verticale.
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à
android.hardware.faketouch.multitouch.distinct
- L'applicazione richiede il supporto per l'input multitouch emulato con monitoraggio distinto di due o più punti.android.hardware.faketouch.multitouch.jazzhand
: l'applicazione richiede il supporto per l'input multitouch emulato con monitoraggio distinto di cinque o più punti.
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?