API per Android 2.3

Livello API: 9

Per gli sviluppatori, l'app Android 2.3 (GINGERBREAD) è disponibile come piattaforma componente scaricabile per l'SDK Android. La piattaforma scaricabile include una libreria Android e un'immagine di sistema, nonché una serie di skin di emulazione altro ancora. Per iniziare a sviluppare o eseguire test su Android 2.3, utilizza Android SDK Manager per scaricare la piattaforma nel tuo SDK.

Panoramica dell'API

Le sezioni seguenti forniscono una panoramica tecnica delle novità per gli sviluppatori nella versione 2.3, incluse le nuove funzionalità e le modifiche all'API del framework rispetto alla versione precedente.

VoIP basato su SIP

La piattaforma ora include uno stack di protocolli SIP e un'API framework che consente agli sviluppatori di creare applicazioni di telefonia su internet. Tramite l'API, le applicazioni possono offrire funzionalità di chiamate vocali senza dover gestire sessioni, comunicazioni a livello di trasporto o audio, che vengono gestite in modo trasparente dall'API e dai servizi SIP della piattaforma.

L'API SIP è disponibile in android.net.sip pacchetto. La classe della chiave è SipManager, che le applicazioni utilizzano per configurare e gestire i profili SIP, quindi per avviare le chiamate audio e ricevere chiamate audio. Una volta stabilita una chiamata audio, le applicazioni possono disattivare l'audio delle chiamate, attiva la modalità altoparlante, invia toni DTMF e altro ancora. Le applicazioni possono anche utilizzare SipManager per creare connessioni SIP generiche.

I servizi e lo stack SIP sottostante della piattaforma sono disponibili sui dispositivi su a discrezione del produttore e dell'operatore associato. Per questo motivo, le applicazioni devono utilizzare il metodo isApiSupported() per verificare se è disponibile il supporto SIP, prima di esporre la funzionalità di chiamata agli utenti.

Per utilizzare l'API SIP, le applicazioni devono richiedere l'autorizzazione all'utente dichiarando <uses-permission android:name="android.permission.INTERNET"> e <uses-permission android:name="android.permission.USE_SIP"> nei file manifest.

Inoltre, gli sviluppatori possono richiedere filtri su Google Play, in modo che le loro applicazioni non sono rilevabili da parte degli utenti i cui dispositivi non includono lo stack e i servizi SIP della piattaforma. Per richiedere il filtro, aggiungi <uses-feature android:name="android.software.sip" android:required="true"> e <uses-feature android:name="android.software.sip.voip"> al file manifest dell'applicazione.

Per saperne di più, consulta la guida per gli sviluppatori di SIP.

Near Field Communication (NFC)

Android 2.3 include uno stack NFC e un'API framework che consente agli sviluppatori di leggere i tag NDEF rilevati quando un utente tocca un dispositivo NFC per taggare elementi incorporati in adesivi, poster intelligenti e persino altri dispositivi.

La piattaforma fornisce i servizi NFC sottostanti che funzionano con il dispositivo per rilevare i tag quando rientrano nel raggio d'azione. Quando viene rilevato un tag, la piattaforma invia una notifica alle applicazioni trasmettendo un Intent e aggiungendo i messaggi NDEF del tag all'Intent come extra. Le applicazioni possono creare filtri per intent riconoscere e gestire i tag e i messaggi scelti come target. Ad esempio, dopo aver ricevuto un tag per intent, le applicazioni estraggono i messaggi NDEF, li archiviano, avvisano utente o gestirle in altri modi.

L'API NFC è disponibile nel pacchetto android.nfc. Le classi principali sono:

  • NfcAdapter, che rappresenta l'hardware NFC sul dispositivo.
  • NdefMessage, che rappresenta un messaggio di dati NDEF, il formato standard in cui i "record" che portano dati vengono trasmessi tra dispositivi e tag. Le applicazioni possono ricevere questi messaggi dagli intent ACTION_TAG_DISCOVERED.
  • NdefRecord, inviati in un NdefMessage, che descrive il tipo di dati condivisi e contiene i dati stessi.

La comunicazione NFC si basa sulla tecnologia wireless nell'hardware del dispositivo, pertanto il supporto delle funzionalità NFC della piattaforma su dispositivi specifici è determinato dai rispettivi produttori. Per determinare il supporto NFC sul dispositivo corrente: le applicazioni possono chiamare isEnabled() a esegui una query sul NfcAdapter. L'API NFC è sempre presente, tuttavia, indipendentemente dal supporto hardware sottostante.

Per utilizzare l'API NFC, le applicazioni devono richiedere l'autorizzazione all'utente tramite con la dichiarazione <uses-permission android:name="android.permission.NFC"> nei propri file manifest.

Inoltre, gli sviluppatori possono richiedere il filtraggio su Google Play in modo che le loro applicazioni non siano rilevabili dagli utenti i cui dispositivi non supportano la tecnologia NFC. Per richiedere un filtro, aggiungi <uses-feature android:name="android.hardware.nfc" android:required="true"> al manifest dell'applicazione.

Per esaminare un'applicazione di esempio che utilizza l'API NFC, vedi NFCDemo.

Giroscopio e altri sensori

Android 2.3 aggiunge il supporto della piattaforma e dell'API per diversi nuovi tipi di letture dei sensori: giroscopio, vettore di rotazione, accelerazione lineare, gravità e barometro. Gli sviluppatori possono utilizzare le nuove letture dei sensori per creare applicazioni che rispondano rapidamente e senza problemi a variazioni precise della posizione e del movimento del dispositivo. La L'API Sensor segnala le modifiche al giroscopio e ad altre variazioni dei sensori per l'interesse applicazioni, in esecuzione nel framework dell'applicazione o in applicazioni le API nel tuo codice.

Tieni presente che il gruppo specifico di sensori hardware disponibili su ogni dispositivo varia a discrezione del produttore del dispositivo.

Gli sviluppatori possono richiedere l'applicazione di filtri su Google Play, in modo che le loro applicazioni non siano rilevabili dagli utenti i cui dispositivi non offrono un sensore giroscopico. Per farlo, aggiungi <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> al file manifest dell'applicazione.

Per i dettagli sull'API, vedi Sensor.

Supporto di più videocamere

Ora le applicazioni possono utilizzare qualsiasi fotocamera disponibile su un dispositivo, per l'acquisizione di foto o video. Camera consente alle applicazioni di eseguire query sul numero di videocamere disponibili e sulle caratteristiche uniche di ciascuna.

  • La nuova classe Camera.CameraInfo memorizza le informazioni della videocamera caratteristiche posizionali (orientamento, fronte o retro).
  • I nuovi metodi getNumberOfCameras() e getCameraInfo() nella classe Camera consentono alle applicazioni di eseguire query sulle videocamere disponibili e di aprire la videocamera di cui hanno bisogno.
  • Il nuovo metodo get() consente applicazioni recuperano un CamcorderProfile per una videocamera specifica.
  • Il nuovo getJpegEncodingQualityParameter() consente alle applicazioni di ottenere il livello di qualità di acquisizione di immagini fisse per una videocamera specifica.

Per esaminare il codice di esempio per accedere a una fotocamera anteriore, vedi CameraPreview.java nell'applicazione di esempio ApiDemos.

L'API Camera aggiunge anche:

Effetti audio mischiabili

Il framework multimediale della piattaforma aggiunge il supporto di nuovi effetti audio per traccia o globali, tra cui Bassi più intensi, virtualizzazione cuffie, equalizzazione e riverbero.

Per esaminare il codice di esempio per gli effetti audio, consulta AudioFxDemo.java nell'applicazione di esempio ApiDemos.

Il framework multimediale aggiunge anche:

  • Nuovo supporto per il tag altitudine nei metadati EXIF per i file JPEG. Nuovo metodo getAltitude() per recuperare il valore del tag altezza EXIF.
  • Il nuovo metodo setOrientationHint() consente a un'applicazione di indicare a MediaRecorder l'orientamento durante l'acquisizione video.

Gestore dei download

La piattaforma include un nuovo servizio di sistema DownloadManager che gestisce i download HTTP di lunga durata. Le applicazioni possono richiedere che un URI venga scaricate in uno specifico file di destinazione. DownloadManager eseguirà il download in background, occupandosi delle interazioni HTTP e riprovando i download dopo gli errori o le modifiche alla connettività e i riavvii del sistema.

  • Le applicazioni possono ottenere un'istanza dell'oggetto DownloadManager chiamata getSystemService(String) e superando DOWNLOAD_SERVICE. Le applicazioni che richiedono i download tramite questa API devono registrare un'entità di ricezione di annunci per ACTION_NOTIFICATION_CLICKED per gestire in modo appropriato il momento in cui l'utente fa clic su un download in esecuzione in una notifica o nell'interfaccia utente dei download.
  • La classe DownloadManager.Request consente a un'applicazione di fornire tutte le informazioni necessarie per richiedere un nuovo download, come l'URI della richiesta e la destinazione del download. Un URI richiesta è l'unico parametro obbligatorio. Tieni presente che la destinazione di download predefinita è un volume condiviso in cui il sistema può eliminare il file se deve recuperare spazio per l'utilizzo del sistema. Per per l'archiviazione permanente di un download, specificare una destinazione spazio di archiviazione (vedi setDestinationUri(Uri)).
  • La classe DownloadManager.Query offre metodi che consentono una query dell'applicazione per i download attivi e filtrarli.

StrictMode

Per aiutare gli sviluppatori a monitorare e migliorare le prestazioni delle loro applicazioni, la piattaforma offre una nuova struttura di sistema chiamata StrictMode. Se viene implementato in un'applicazione, StrictMode rileva e comunica allo sviluppatore attività accidentali sul disco o sulla rete che potrebbero ridurre le prestazioni dell'applicazione, ad esempio le attività che si verificano nel thread principale dell'applicazione (dove vengono ricevute le operazioni dell'interfaccia utente e si verificano anche le animazioni). Gli sviluppatori possono valutare i problemi di utilizzo della rete e del disco rilevati in StrictMode e correggerli se necessario, mantenendo il thread principale più reattivo e impedendo la visualizzazione delle finestre di dialogo ANR agli utenti.

  • StrictMode è la classe di base ed è il punto di integrazione principale con il sistema e la VM. Il corso offre metodi pratici gestire i criteri di thread e VM applicabili all'istanza.
  • StrictMode.ThreadPolicy e StrictMode.VmPolicy contengono i criteri che definisci e applichi ai thread e alle istanze VM.

Per ulteriori informazioni su come utilizzare StrictMode per ottimizzare dell'applicazione, consulta la documentazione del corso e il codice campione alla pagina android.os.StrictMode.

Framework UI

  • Supporto per lo scorrimento eccessivo
    • Nuovo supporto per lo scorrimento eccessivo in Visualizzazioni e Widget. In Views, le applicazioni possono attivare/disattivare lo scorrimento oltre i limiti per una determinata visualizzazione, impostare la modalità di scorrimento oltre i limiti, controllare la distanza di scorrimento oltre i limiti e gestire i risultati dello scorrimento oltre i limiti.
    • In Widget, le applicazioni possono controllare le caratteristiche di scorrimento eccessivo, come animazione, ritorno elastico e distanza di scorrimento eccessivo. Per ulteriori informazioni, vedi android.view.View e android.widget.OverScroller.
    • ViewConfiguration fornisce anche i metodi getScaledOverflingDistance() e getScaledOverscrollDistance().
    • Nuovi attributi overScrollMode, overScrollFooter e overScrollHeader per gli elementi <ListView>, per controllare il comportamento di scorrimento eccessivo.
  • Supporto per il filtro touch
    • Nuovo supporto per i filtri tocco, che consente a un'applicazione di migliorare la sicurezza delle visualizzazioni che forniscono l'accesso a funzionalità sensibili. Ad esempio: i filtri touch sono appropriati per garantire la sicurezza delle azioni degli utenti, come quando si concede una richiesta di autorizzazione, fare un acquisto o fare clic su pubblicità. Per maggiori dettagli, consulta la sezione Visualizzare il corso documentazione.
    • Nuovo attributo filterTouchesWhenObscured per gli elementi della visualizzazione, che indica se filtrare i tocchi quando la finestra della visualizzazione è oscurata da un'altra finestra visibile. Se impostato su "true", la visualizzazione non riceverà tocchi ogni volta che viene visualizzata una notifica, una finestra di dialogo o un'altra finestra sopra la finestra della visualizzazione. Per informazioni dettagliate, consulta la documentazione sulla sicurezza.

    Per esaminare il codice di esempio per il filtro touch, consulta SecureView.java nell'applicazione di esempio ApiDemos.

  • Gestione degli eventi migliorata
    • Nuova classe base per gli eventi di input, InputEvent. La classe fornisce metodi che consentono alle applicazioni di determinare il significato dell'evento, ad esempio eseguendo una query sull'InputDevice da cui è originato l'evento. KeyEvent e MotionEvent sono sottoclassi di InputEvent.
    • Nuova classe base per i dispositivi di input, InputDevice. La classe memorizza le informazioni sulle funzionalità di un determinato dispositivo di input e fornisce metodi che consentono alle applicazioni di determinare come interpretare gli eventi di un dispositivo di input.
  • Eventi di movimento migliorati
    • L'API MotionEvent è stata estesa per includere le informazioni sull'"ID cursore", che consente alle applicazioni di tenere traccia dei singoli dita mentre si muovono verso l'alto e verso il basso. La classe aggiunge una serie di metodi che consentono a un'applicazione di lavorare in modo efficiente con gli eventi di movimento.
    • Il sistema di input ora dispone di una logica per generare eventi di movimento con le nuove informazioni sull'ID del cursore, sintetizzando gli identificatori man mano che i nuovi cursori non sono attivi. La il sistema tiene traccia separatamente di più ID puntatore durante un evento di movimento, garantisce la corretta continuità dei puntatori, valutando a distanza tra l'ultimo e il successivo insieme di puntatori.
  • Controlli di selezione del testo
    • Un nuovo metodo setComposingRegion consente a un'applicazione di contrassegnare una regione di testo come testo in fase di composizione, mantenendo lo stile corrente. Un metodo getSelectedText restituisce il testo selezionato all'applicazione. I metodi sono disponibili in BaseInputConnection, InputConnection e InputConnectionWrapper.
    • Nuovo textSelectHandle, textSelectHandleLeft, textSelectHandleRight e textSelectHandleWindowStyle attributi per <TextView>, per fare riferimento agli elementi drawable che saranno utilizzato per visualizzare gli ancoraggi di selezione del testo e lo stile per il finestra.
  • Gestione attività
  • Stili di testo e icona delle notifiche
  • Schermi extra large

    La piattaforma ora supporta schermi di dimensioni molto grandi, come quelli che si trovano sui tablet. Gli sviluppatori possono indicare che le loro applicazioni sono progettate per supportare schermi di grandi dimensioni aggiungendo un elemento <supports screens ... android:xlargeScreens="true"> ai file manifest. Le applicazioni possono utilizzare un nuovo qualificatore delle risorse, xlarge, per contrassegnare le risorse specifiche per gli schermi extra large. Per per maggiori dettagli su come supportare schermi molto grandi e di altre dimensioni, consulta l'articolo Supporto di schermi Schermate.

    Grafica

    Fornitori di contenuti

    • Nuova classe di provider AlarmClock per impostare o gestire una sveglia. Il provider contiene un intent ACTION_SET_ALARM azioni ed extra che possono essere usati per avviare un'attività e impostare una nuova sveglia in un applicazione sveglia. Le applicazioni che vogliono ricevere l'intentSET_ALARM devono creare un'attività che richieda l'autorizzazione SET_ALARM. Le applicazioni che vogliono creare una nuova sveglia devono utilizzare Context.startActivity(), in modo che l'utente possa scegliere quale applicazione sveglia utilizzare.
    • MediaStore supporta una nuova azione Intent, PLAY_FROM_SEARCH, che consente a un'applicazione di cercare contenuti multimediali musicali e riproducono automaticamente i contenuti dei risultati, se possibile. Ad esempio, un'applicazione potrebbe attivare questo Intent come risultato di un comando di riconoscimento vocale per ascoltare musica.
    • MediaStore aggiunge anche un nuovo flag MEDIA_IGNORE_FILENAME che indica ai contenuti multimediali scanner per ignorare i contenuti multimediali nella directory contenitore e nelle relative sottodirectory. Gli sviluppatori possono usare questa funzionalità per evitare la visualizzazione di elementi grafici nella Galleria e Allo stesso modo, impedire la visualizzazione di suoni e musica dell'applicazione dell'app.
    • Il fornitore Settings aggiunge le nuove azioni Attività APPLICATION_DETAILS_SETTINGS e MANAGE_ALL_APPLICATIONS_SETTINGS, che consentono a un'applicazione di mostrare i dettagli schermata di un'applicazione specifica o mostrare la schermata Gestisci applicazioni.
    • Il provider ContactsContract aggiunge il tipo di dati ContactsContract.CommonDataKinds.SipAddress per memorizzare l'indirizzo SIP (telefonia su internet) di un contatto.

    Posizione

    • LocationManager ora monitora le richieste di applicazioni che generano wakelock o blocchi Wi-Fi in base a WorkSource, una classe gestita dal sistema che identifica l'applicazione.

      LocationManager tiene traccia di tutti i clienti che richiedono aggiornamenti periodici e comunica ai propri fornitori come parametro WorkSource, quando impostano il loro valore minimo orari di aggiornamento. Il fornitore di servizi di geolocalizzazione di rete utilizza WorkSource per monitorare le chiusure di riattivazione e Wi-Fi avviate da un'applicazione e le aggiunge all'utilizzo della batteria dell'applicazione registrato in Gestisci applicazioni.

    • LocationManager aggiunge diversi nuovi metodi che consentono a un'attività di registrarsi per ricevere aggiornamenti della posizione periodici o una tantum in base a criteri specificati (vedi di seguito).
    • Una nuova classe Criteria consente a un'applicazione di specificare un insieme di criteri per la selezione di un fornitore di servizi di geolocalizzazione. Ad esempio, i fornitori possono essere ordinati in base ad accuratezza, consumo energetico, capacità di segnalare altitudine, velocità e rotta e costo monetario.

    Spazio di archiviazione

    • Android 2.3 aggiunge un nuovo StorageManager che supporta i file OBB (Opaque Binary Blob). Sebbene il supporto della piattaforma per i file OBB sia disponibile in Android 2.3, gli strumenti di sviluppo per la creazione e la gestione di questi file non saranno disponibili fino all'inizio del 2011.
    • La piattaforma Android 2.3 aggiunge il supporto ufficiale per i dispositivi che non includono schede SD (sebbene fornisca una partizione della scheda SD virtuale, se non è disponibile una scheda SD fisica). Un metodo di utilità, isExternalStorageRemovable(), consente alle applicazioni di determinare se è presente una scheda SD fisica.

    Gestione pacchetti

    Telefonia

    • TelephonyManager aggiunge la costante NETWORK_TYPE_EVDO_B per specificare il CDMA Tipo di rete EVDO Rev B.
    • Il nuovo metodo getPsc() restituisce il codice di scrambling principale della cella di servizio su una rete UMTS.

    Accesso nativo al ciclo di vita delle attività, finestre

    Android 2.3 espone una vasta gamma di API alle applicazioni che utilizzano le API nel tuo codice. Le classi del framework di interesse per queste applicazioni includono:

    • NativeActivity è un nuovo tipo di classe Activity, i cui callback del ciclo di vita sono implementati direttamente in codice nativo. Un'NativeActivity e il relativo codice nativo di base vengono eseguiti nel sistema come le altre attività, nello specifico nel processo di sistema dell'applicazione Android e nel thread dell'interfaccia utente principale dell'applicazione, nonché ricevono gli stessi callback del ciclo di vita delle altre attività.
    • La nuova classe e interfaccia di callback InputQueue consente al codice nativo di gestire la coda di eventi.
    • La nuova interfaccia di SurfaceHolder.Callback2 consente di generare codice nativo gestire un SurfaceHolder.
    • I nuovi metodi takeInputQueue e takeSurface() in Window consentono la gestione del codice nativo eventi e piattaforme.

    Per informazioni complete sull'utilizzo del codice nativo o per scaricare l'NDK, consulta la pagina Android NDK.

    Dalvik Runtime

    Nuovi elementi e attributi del file manifest

    • Nuovo attributo xlargeScreens per <supports-screens> per indicare se l'applicazione supporta fattori di forma per schermi di grandi dimensioni. Per maggiori dettagli, vedi Supporto di più screen.
    • Nuovi valori per l'attributo android:screenOrientation dell'elemento <activity>:
      • "reverseLandscape": l'attività vorrebbe che schermo con orientamento orizzontale, capovolto nella direzione opposta rispetto a quella normale in un paesaggio.
      • "reversePortrait": l'attività vorrebbe che lo schermo fosse in orientamento verticale, ruotato nella direzione opposta rispetto al normale verticale.
      • "sensorLandscape": l'attività vorrebbe avere lo schermo in orientamento orizzontale, ma può utilizzare il sensore per cambiare la direzione in cui è rivolto lo schermo.
      • "sensorPortrait": l'attività vorrebbe avere lo schermo in orientamento verticale, ma può utilizzare il sensore per cambiare la direzione in cui è rivolto.
      • "fullSensor": l'orientamento viene determinato da un sensore di orientamento fisico: il display ruota in base al modo in cui l'utente muove il dispositivo. Ciò consente qualsiasi delle 4 rotazioni possibili, indipendentemente da ciò che fa normalmente il dispositivo (ad esempio, alcuni dispositivi di solito non utilizzano la rotazione di 180 gradi).

    Nuove autorizzazioni

    • com.android.permission.SET_ALARM: consente a un'applicazione trasmettere un intent per impostare una sveglia per l'utente. Un'attività che gestisce l'azione Intent SET_ALARM dovrebbe richiedere questa autorizzazione.
    • android.permission.USE_SIP: consente a un'applicazione di utilizzareSIP API per effettuare o ricevere chiamate su internet.
    • android.permission.NFC: consente a un'applicazione di utilizzare NFC API per leggere i tag NFC.

    Costanti delle nuove funzionalità

    La piattaforma aggiunge diverse nuove funzionalità hardware che gli sviluppatori possono dichiarare nella propria applicazione si manifesta come richiesto dalle applicazioni. Questo consente agli sviluppatori di controllare in che modo la loro applicazione viene filtrata quando viene pubblicata su Google Play.

    Per informazioni complete su come dichiarare le caratteristiche e utilizzarle per dei filtri, consulta la documentazione relativa a <uses-feature>.

    Report sulle differenze API

    Per una visualizzazione dettagliata di tutte le modifiche API in Android 2.3 (API livello 9), consulta l'API Report Differenze.

    Livello API

    La piattaforma Android 2.3 offre una versione aggiornata di l'API del framework. All'API Android 2.3 viene assegnato un identificatore intero (9) 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 2.3 nella tua applicazione: devi compilare l'applicazione sulla base della libreria Android fornita in la piattaforma SDK Android 2.3. A seconda delle tue esigenze, potresti anche dover aggiungere un attributo android:minSdkVersion="9" all'elemento <uses-sdk> nel file manifest dell'applicazione. Se la tua applicazione è progettata per essere eseguita solo su Android 2.3 e versioni successive, la dichiarazione dell'attributo impedisce l'installazione dell'applicazione in precedenza più versioni della piattaforma.

    Per saperne di più, consulta la pagina Che cos'è l'API Livello?