Livello API: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
)
è una release incrementale della famiglia di piattaforme
Android 4.0 (ICE_CREAM_SANDWICH
). Questa release include nuove funzionalità per utenti e sviluppatori, modifiche all'API e varie correzioni di bug.
Per gli sviluppatori, la piattaforma Android 4.0.3 è 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 piattaforma Android 4.0.3, utilizza Android SDK Manager per scaricare la piattaforma nel tuo SDK.
Panoramica dell'API
Le sezioni seguenti forniscono una panoramica tecnica delle nuove API in Android 4.0.3.
API Social Stream nel provider di contatti
Le applicazioni che utilizzano i dati degli stream social, come gli aggiornamenti di stato e i check-in, ora possono sincronizzare questi dati con ciascuno dei contatti dell'utente, fornendo gli elementi in uno stream insieme alle foto per ciascuno.
La tabella di database che contiene lo stream social di un singolo contatto è definita da android.provider.ContactsContract.StreamItems, l'URI per il quale è nidificato all'interno della directory ContactsContract.RawContacts
a cui appartengono gli elementi del flusso. Ogni tabella di stream social include diverse colonne per i metadati relativi a ogni elemento dello stream, ad esempio un'icona che rappresenta la fonte (un avatar), un'etichetta per l'elemento, i contenuti testuali principali, commenti sull'elemento (ad esempio le risposte di altre persone) e altro ancora. Le foto associate a uno stream sono archiviate in un'altra tabella, definita da
android.provider.ContactsContract.StreamItemPhotos, che è disponibile come sottodirectory dell'URI android.provider.ContactsContract.StreamItems.
Vedi android.provider.ContactsContract.StreamItems e android.provider.ContactsContract.StreamItemPhotos per ulteriori informazioni.
Per leggere o scrivere elementi dello stream social per un contatto, un'applicazione deve richiedere l'autorizzazione all'utente dichiarando <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
e/o <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
nei file manifest.
Provider di calendari
- Aggiunge la classe
CalendarContract.Colors
per rappresentare una tabella dei colori nel provider di calendario. La classe fornisce i campi per accedere
ai colori disponibili per un determinato account. I colori fanno riferimento a COLOR_KEY
, che deve essere univoco per un determinato nome/tipo di account. Questi valori possono essere
aggiornati solo dall'adattatore di sincronizzazione.
- Aggiunge
ALLOWED_AVAILABILITY
e
ALLOWED_ATTENDEE_TYPES
per il supporto di scambio/sincronizzazione.
- Aggiunge
TYPE_RESOURCE
(ad esempio le sale conferenze) per i partecipanti e
AVAILABILITY_TENTATIVE
,
nonché EVENT_COLOR_KEY
per gli eventi.
CalendarContract.Colors
per rappresentare una tabella dei colori nel provider di calendario. La classe fornisce i campi per accedere
ai colori disponibili per un determinato account. I colori fanno riferimento a COLOR_KEY
, che deve essere univoco per un determinato nome/tipo di account. Questi valori possono essere
aggiornati solo dall'adattatore di sincronizzazione.ALLOWED_AVAILABILITY
e
ALLOWED_ATTENDEE_TYPES
per il supporto di scambio/sincronizzazione.TYPE_RESOURCE
(ad esempio le sale conferenze) per i partecipanti e
AVAILABILITY_TENTATIVE
,
nonché EVENT_COLOR_KEY
per gli eventi.Widget schermata Home
A partire da Android 4.0, i widget della schermata Home non devono più includere la propria spaziatura interna. Il sistema ora aggiunge automaticamente spaziatura interna per ogni widget, in base alle caratteristiche della schermata corrente. Questo porta a una presentazione più uniforme
e coerente dei widget in una griglia. Per assistere le applicazioni che ospitano widget della schermata Home, la piattaforma fornisce un nuovo metodo getDefaultPaddingForWidget()
. Le applicazioni possono chiamare questo metodo per ottenere la spaziatura interna definita dal sistema e tenerne conto durante il calcolo del numero di celle da allocare al widget.
Controllo ortografico
- Per le app che accedono ai servizi di controllo ortografico, un nuovo metodo
cancel()
annulla tutte le attività di controllo ortografico in sospeso ed in esecuzione in una sessione. - Per i servizi di controllo ortografico, un nuovo flag di suggerimenti,
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
, consente ai servizi di distinguere i suggerimenti con affidabilità maggiore da quelli con confidenza minore. Ad esempio, un controllo ortografico potrebbe impostare il flag se una parola di input non è presente nel dizionario utente ma contiene probabili suggerimenti, oppure potrebbe non impostare il flag se una parola di input non è nel dizionario e contiene suggerimenti che probabilmente saranno meno utili.Le app collegate al controllo ortografico possono usare il flag
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
insieme ad altri attributi di suggerimento, nonché i metodigetSuggestionsAttributes()
egetSuggestionsCount()
, per stabilire se contrassegnare le parole inserite come errori di battitura e offrire suggerimenti. - Un nuovo stile
FLAG_AUTO_CORRECTION
per le sezioni di testo indica che sta per essere applicata la correzione automatica a una parola o un testo che l'utente sta digitando o scrivendo. Questo tipo di suggerimento viene visualizzato in modo diverso, per indicare che è in corso la correzione automatica.
Bluetooth
I nuovi metodi pubblici fetchUuidsWithSdp()
e getUuids()
consentono alle app di determinare le funzionalità (UUID) supportate da un dispositivo remoto. Nel caso di fetchUuidsWithSdp()
, il sistema esegue un
service rilevamento sul dispositivo remoto per ottenere il supporto degli UUID, quindi
trasmette il risultato in un intent ACTION_UUID
.
Toolkit dell'interfaccia utente
I nuovi metodi setUserVisibleHint()
e getUserVisibleHint()
consentono a un frammento di impostare un suggerimento che indica se è attualmente visibile all'utente o meno. Il
sistema evita l'inizio dei frammenti non visibili all'utente finché non vengono eseguiti i caricatori
per i frammenti visibili. Il suggerimento sulla visibilità è "true" per impostazione predefinita.
Grafica
- Il nuovo metodo
setDefaultBufferSize(int, int)
inSurfaceTexture
imposta la dimensione predefinita dei buffer dell'immagine. Questo metodo può essere usato per impostare le dimensioni dell'immagine durante la produzione di immagini conCanvas
(tramitelockCanvas(Rect)
) o OpenGL ES (tramite EGLSurface). - Aggiunge le definizioni per le enum dell'estensione OpenGL ES GL_OES_EGL_image_external:
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
eGL_TEXTURE_EXTERNAL_OES
.
Accessibilità
- I client di
RemoteViews
possono ora utilizzare il metodosetContentDescription()
per impostare e ricevere la descrizione dei contenuti di qualsiasi vista nel layout ingrandito. - I metodi
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
esetMaxScrollY()
consentono alle app di ottenere e impostare l'offset di scorrimento massimo per un oggettoAccessibilityRecord
. - Quando è attiva la modalità di esplorazione al tocco, una nuova impostazione di sicurezza
ACCESSIBILITY_SPEAK_PASSWORD
indica se l'utente richiede all'IME di pronunciare il testo inserito nei campi delle password, anche quando le cuffie non sono in uso. Per impostazione predefinita, il testo della password non viene pronunciato, a meno che non siano in uso le cuffie.
Sintesi vocale
- Aggiunge il nuovo metodo
getFeatures()
per eseguire query e abilitare il supporto della sintesi vocale di rete. - Aggiunge una nuova classe listener,
UtteranceProgressListener
, che i motori possono registrare per ricevere notifiche di errori di sintesi vocale.
Database
- Una nuova classe
CrossProcessCursorWrapper
consente ai fornitori di contenuti di restituire i risultati per una query cross-process in modo più efficiente. La nuova classe è un componente di base utile per il wrapping dei cursori che verranno inviati ai processi da remoto. Può anche trasformare normali oggettiCursor
in oggettiCrossProcessCursor
in modo trasparente.La classe
CrossProcessCursorWrapper
corregge problemi di prestazioni e bug comuni riscontrati dalle applicazioni durante l'implementazione dei fornitori di contenuti. - Il costruttore
CursorWindow(java.lang.String)
ora accetta una stringa nome come input. Il sistema non fa più distinzione tra le finestre di cursore locali e quelle di cursore remoto, pertantoCursorWindow(boolean)
è deprecato.
Situazioni
Aggiunge nuove categorie per il targeting dei tipi comuni di applicazioni sul
dispositivo, come CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
, CATEGORY_APP_MAPS
e altre.
Fotocamera
MediaMetadataRetriever
aggiunge la nuova costanteMETADATA_KEY_LOCATION
per consentire alle app di accedere e recuperare le informazioni sulla posizione di un'immagine o un video.CamcorderProfile
aggiunge i profili di risoluzione QVGA (320 x 240). Il livello di qualità è rappresentato dalle costantiQUALITY_QVGA
.eQUALITY_TIME_LAPSE_QVGA
.- I nuovi metodi
setVideoStabilization()
,getVideoStabilization()
eisVideoStabilizationSupported()
ti consentono di controllare e gestire la stabilizzazione video perCamera
.
Autorizzazioni
Di seguito sono riportate nuove autorizzazioni:
- android.Manifest.permission#READ_SOCIAL_STREAM e android.Manifest.permission#WRITE_SOCIAL_STREAM: consenti a un adattatore di sincronizzazione di leggere e scrivere dati dello stream social in un contatto nel fornitore di contatti condiviso.
Per una visualizzazione dettagliata di tutte le modifiche all'API in Android 4.0.3 (livello API 15), consulta il report Differenze API.
Livello API
All'API Android 4.0.3 viene assegnato un identificatore di numero intero (15) 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 nella tua applicazione le API introdotte in Android 4.0.3, devi compilare l'applicazione su una piattaforma Android che supporti il livello API 15 o versioni successive. A seconda delle esigenze, potresti anche dover aggiungere un attributo android:minSdkVersion="15"
all'elemento <uses-sdk>
.
Per ulteriori informazioni, consulta il documento Livelli API.