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
ehNNNdp
: 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 tramitesaveFragmentInstanceState()
. - 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 cheonCreateView()
è 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()
edetach()
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.
- 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à può gestire le dimensioni dello schermo e le dimensioni dello schermo più piccole.ApplicationInfo
aggiunge i campilargestWidthLimitDp
,compatibleWidthLimitDp
erequiresSmallestWidthDp
, ricavati dagli attributi<supports-screens>
corrispondenti nel file manifest dell'applicazione.
- Aiuto per ottenere 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 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.
- 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 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
- Utilità parcellabili in Point e PointF
- Le classi
Point
ePointF
ora includono l'interfacciaParcelable
e i metodi di utilitàdescribeContents()
,readFromParcel()
ewriteToParcel()
.
- Le classi
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
- Costanti del tipo di rete
ConnectivityManager
aggiunge le costantiTYPE_ETHERNET
eTYPE_BLUETOOTH
.
Telefonia
- Nuova costante del tipo di rete
NETWORK_TYPE_HSPAP
.
Utilità di base
- Utilità per la suddivisione in lotti
- La nuova interfaccia
Parcelable.ClassLoaderCreator
consente all'applicazione di ricevere il ClassLoader in cui viene creato l'oggetto. - Nuovi elementi
adoptFd
,dup()
efromFd()
per la gestione degli oggettiParcelFileDescriptor
.
- La nuova interfaccia
- Binder e IBinder
- Il nuovo metodo
dumpAsync()
inBinder
eIBinder
consente alle applicazioni di eseguire il dump in un file specificato, garantendo l'esecuzione asincrona del target. - Il nuovo
IBinder
codice transazione del protocolloTWEET_TRANSACTION
consente alle applicazioni di inviare un tweet all'oggetto di destinazione.
- Il nuovo metodo
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.
android.hardware.screen.landscape
: l'applicazione richiede la visualizzazione con orientamento orizzontale.android.hardware.screen.portrait
: l'applicazione richiede la visualizzazione in orientamento verticale.
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à
android.hardware.faketouch.multitouch.distinct
: l'applicazione richiede il supporto dell'input multitouch simulato con il monitoraggio distinto di due o più punti.android.hardware.faketouch.multitouch.jazzhand
: l'applicazione richiede il supporto dell'input multitouch simulato con il monitoraggio distinto di cinque o più punti.
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?