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 e un'immagine di sistema Android, nonché una serie di skin per emulatori e altro ancora. Per iniziare a sviluppare o eseguire test su 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 in Provider di contatti
Le applicazioni che utilizzano i dati degli stream di social, come aggiornamenti di stato e check-in, ora possono sincronizzarli con ciascuno dei contatti dell'utente, fornendo gli elementi in uno stream insieme alle foto di ciascuno.
La tabella del database che contiene lo stream social di un singolo contatto è definita da android.provider.ContactsContract.StreamItems, il cui URI è nidificato all'interno della directory ContactsContract.RawContacts
a cui appartengono gli elementi dello stream. Ogni tabella del feed social include diverse colonne per i metadati di ogni elemento dello stream, ad esempio un'icona che rappresenta l'origine (un avatar), un'etichetta per l'elemento, i contenuti di testo principali, i commenti sull'elemento (ad esempio le risposte di altre persone) e altro ancora. Le foto associate a uno stream vengono archiviate in un'altra tabella, definita da
android.provider.ContactsContract.StreamItemPhotos, che è disponibile
come sottodirectory dell'URI android.provider.ContactsContract.StreamItems.
Per ulteriori informazioni, consulta android.provider.ContactsContract.StreamItems e android.provider.ContactsContract.StreamItemPhotos.
Per leggere o scrivere elementi dello stream di 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.
Fornitore di calendario
- Aggiunge la classe
CalendarContract.Colors
per rappresentare
una tabella di colori nel Calendar
Provider. La classe fornisce i campi per accedere ai colori disponibili per un determinato account. I colori vengono richiamati tramite 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 sale conferenze) per i partecipanti e
AVAILABILITY_TENTATIVE
,
nonché EVENT_COLOR_KEY
per gli eventi.
CalendarContract.Colors
per rappresentare
una tabella di colori nel Calendar
Provider. La classe fornisce i campi per accedere ai colori disponibili per un determinato account. I colori vengono richiamati tramite 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 sale conferenze) per i partecipanti e
AVAILABILITY_TENTATIVE
,
nonché EVENT_COLOR_KEY
per gli eventi.Widget della schermata Home
A partire da Android 4.0, i widget della schermata Home non devono più includere il proprio padding. Ora il sistema aggiunge automaticamente i margini per ogni widget in base alle caratteristiche della schermata corrente. Ciò comporta una presentazione più uniforme e coerente dei widget in una griglia. Per aiutare le applicazioni che ospitano
widget della schermata Home, la piattaforma fornisce un nuovo metodo
getDefaultPaddingForWidget()
. Le applicazioni possono chiamare questo metodo per ottenere il padding definito dal sistema e tenerlo 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 attesa e in esecuzione in una sessione. - Per i servizi di controllo ortografico, un nuovo indicatore dei suggerimenti,
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
, consente ai servizi di distinguere i suggerimenti con un livello di attendibilità più elevato da quelli con un livello di attendibilità inferiore. Ad esempio, un correttore ortografico potrebbe impostare il flag se una parola inserita non è presente nel dizionario dell'utente, ma presenta suggerimenti probabili, oppure non impostare il flag se una parola inserita non è presente nel dizionario e presenta suggerimenti che probabilmente sono meno utili.Le app collegate al correttore ortografico possono utilizzare l'indicatore
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
in combinazione con altri attributi di suggerimento, nonché i metodigetSuggestionsAttributes()
egetSuggestionsCount()
, per determinare se contrassegnare le parole inserite come errori ortografici e offrire suggerimenti. - Un nuovo stile
FLAG_AUTO_CORRECTION
per gli intervalli di testo indica che la correzione automatica sta per essere applicata a una parola/un testo che l'utente sta digitando/componendo. 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 rilevamento dei servizi sul dispositivo remoto per ottenere gli UUID supportati, quindi trasmette il risultato in un'intent ACTION_UUID
.
Toolkit per l'interfaccia utente
I nuovi metodi setUserVisibleHint()
e
getUserVisibleHint()
consentono a un
fragment di impostare un suggerimento su se è attualmente visibile all'utente o meno. Il sistema posticipa l'avvio dei frammenti non visibili all'utente finché non sono stati eseguiti i caricatori per i frammenti visibili. L'indicazione della visibilità è "true" per impostazione predefinita.
Grafica
- Il nuovo metodo
setDefaultBufferSize(int, int)
inSurfaceTexture
imposta le dimensioni predefinite dei buffer di immagini. Questo metodo può essere utilizzato per impostare le dimensioni delle immagini durante la produzione di immagini conCanvas
(tramitelockCanvas(Rect)
) o OpenGL ES (tramite un'EGLSurface). - Aggiunge le definizioni per gli 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
ora possono utilizzare il metodosetContentDescription()
per impostare e recuperare la descrizione dei contenuti di qualsiasi vista nel layout espanso. - I metodi
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
esetMaxScrollY()
consentono alle app di ottenere e impostare l'offset di scorrimento massimo per un oggettoAccessibilityRecord
. - Quando la modalità di esplorazione tocco è attivata, una nuova impostazione sicura
ACCESSIBILITY_SPEAK_PASSWORD
indica se l'utente richiede all'IME di leggere il testo inserito nei campi della password, anche quando non è in uso un auricolare. Per impostazione predefinita, il testo della password non viene letto, a meno che non sia in uso un auricolare.
Sintesi vocale
- Aggiunge il nuovo metodo
getFeatures()
per eseguire query e attivare il supporto della sintesi vocale di rete. - Aggiunge una nuova classe di 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 di una query tra processi 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 gli oggettiCursor
normali in oggettiCrossProcessCursor
in modo trasparente.La classe
CrossProcessCursorWrapper
corregge i problemi di prestazioni e i bug comuni riscontrati dalle applicazioni durante l'implementazione dei fornitori di contenuti. - Il costruttore
CursorWindow(java.lang.String)
ora accetta una stringa di nome come input. Il sistema non distingue più tra le finestre del cursore locale e remoto, pertantoCursorWindow(boolean)
è ora deprecato.
Situazioni
Aggiunge nuove categorie per scegliere come target tipi comuni di applicazioni sul
dispositivo, ad esempio 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 al recupero delle 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
.andQUALITY_TIME_LAPSE_QVGA
.- I nuovi metodi
setVideoStabilization()
,getVideoStabilization()
eisVideoStabilizationSupported()
ti consentono di controllare e gestire la stabilizzazione video per unCamera
.
Autorizzazioni
Di seguito sono riportate le nuove autorizzazioni:
- android.Manifest.permission#READ_SOCIAL_STREAM e android.Manifest.permission#WRITE_SOCIAL_STREAM: consentono a un adattatore di sincronizzazione di leggere e scrivere i dati dello stream di social a un contatto nel fornitore di servizi di contatto 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 identificativo intero (15) 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 le API introdotte in Android 4.0.3 nella tua applicazione, devi compilarla per una piattaforma Android che supporti il livello API 15 o superiore. A seconda delle tue esigenze, potresti anche dover aggiungere un attributo android:minSdkVersion="15"
all'elemento <uses-sdk>
.
Per ulteriori informazioni, consulta il documento Livelli API.