API per Android 3.1

Livello API: 12

Per gli sviluppatori, la piattaforma Android 3.1 (HONEYCOMB_MR1) è disponibile come 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. La piattaforma scaricabile non include librerie esterne.

Per gli sviluppatori, la piattaforma Android 3.1 è disponibile come 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 testare soluzioni rispetto ad Android 3.1, usa Android SDK Manager per scaricare la piattaforma nell'SDK.

Panoramica dell'API

Le sezioni che seguono forniscono una panoramica tecnica delle novità per gli sviluppatori in Android 3.1, incluse nuove funzionalità e modifiche all'API Framework da la versione precedente.

API USB

Android 3.1 introduce nuove potenti API per integrando periferiche connesse con le applicazioni in esecuzione sulla piattaforma. Le API si basano su uno stack USB (Universal Serial Bus) e sui servizi che integrate nella piattaforma, con supporto sia per host USB che per dispositivo e interazioni. Con le API, gli sviluppatori possono creare applicazioni in grado di rilevare, comunicare e gestire diversi tipi di dispositivi connessi USB.

Lo stack e le API distinguono due tipi base di hardware USB, basati su se il dispositivo Android funge da host o come hardware esterno agisce in qualità di host:

  • Un dispositivo USB è un componente hardware collegato che dipende dal Dispositivo Android da utilizzare come host. Ad esempio, la maggior parte dei dispositivi di input, i mouse, I joystick sono dispositivi USB, così come molte fotocamere, hub e così via.
  • Un accessorio USB è un componente hardware collegato dotato di una porta USB controller host, fornisce l'alimentazione ed è progettato per comunicare Dispositivi Android tramite USB. È possibile connettere una serie di periferiche accessori, dai controller per robotica alle apparecchiature musicali, dalle biciclette per l'allenamento e altro ancora.

Per entrambi i tipi (dispositivi USB e accessori USB), il le API USB della piattaforma supportano la funzionalità di rilevamento per intent se collegata o nonché interfacce standard, endpoint e modalità di trasferimento (controllo, collettivo e interruzione).

Le API USB sono disponibili nel pacchetto android.hardware.usb. La è UsbManager, che fornisce metodi di supporto per identificare e comunicare dispositivi USB e accessori USB. Le applicazioni possono acquisire un'istanza UsbManager, quindi esegui una query sull'elenco dei dispositivi o accessori e comunicare con questi ultimi o gestirli. UsbManager dichiara inoltre le azioni di intent che annunci di sistema, per annunciare quando un dispositivo o accessorio USB è collegato o scollegato.

Altri corsi includono:

  • UsbDevice, una classe che rappresenta gli elementi esterni collegato come un dispositivo USB (con il dispositivo Android che funge da ).
  • UsbAccessory, che rappresenta l'hardware esterno connesso come host USB (con il dispositivo Android che funge da host USB) dispositivo).
  • UsbInterface e UsbEndpoint, che forniscono accesso a un cavo USB standard interfacce ed endpoint per un dispositivo.
  • UsbDeviceConnection e UsbRequest, per l'invio e la ricezione di dati e il controllo messaggi da o verso un dispositivo USB, in modo sincrono e asincrono.
  • UsbConstants, che fornisce costanti per dichiarando i tipi di endpoint, le classi dei dispositivi e così via.

Tieni presente che, sebbene lo stack USB sia integrato nella piattaforma, il supporto effettivo per le modalità host USB e di accessori aperti su dispositivi specifici è determinata da i relativi produttori. In particolare, la modalità host si basa controller hardware nel dispositivo Android.

Inoltre, gli sviluppatori possono richiedere filtri su Google Play, in modo che le loro applicazioni non sono disponibili per gli utenti i cui dispositivi non forniscono il supporto USB appropriato. Per richiedere l'applicazione di filtri, aggiungi uno o entrambi gli elementi di seguito al manifest dell'applicazione, a seconda dei casi:

  • Se l'applicazione deve essere visibile soltanto ai dispositivi che supportano USB modalità host (connessione di dispositivi USB), dichiara questo elemento:

    <uses-feature android:name="android.hardware.usb.host" android:required="true">

  • Se l'applicazione deve essere visibile soltanto ai dispositivi che supportano USB (connessione di host USB), dichiara questo elemento:

    <uses-feature android:name="android.hardware.usb.accessory" android:required="true">

Per informazioni complete su come sviluppare applicazioni che interagiscono con Accessori USB, consulta documentazione per gli sviluppatori.

Per esaminare le applicazioni di esempio che utilizzano l'API host USB, fai riferimento a Test ADB e Missile Avvio app

API MTP/PTP

Android 3.1 espone una nuova API MTP che consente alle applicazioni di interagire direttamente tramite videocamere e altri dispositivi PTP connessi. La nuova API semplifica le attività per ricevere notifiche quando i dispositivi vengono collegati e rimossi, gestire file e spazio di archiviazione su tali dispositivi e trasferire file e metadati e da questi. L'API MTP implementa il sottoinsieme PTP (Picture Transfer Protocol) della specifica MTP (Media Transfer Protocol).

L'API MTP è disponibile nel pacchetto android.mtp e fornisce queste classi:

  • MtpDevice incapsula un dispositivo MTP che viene collegato tramite il bus host USB. Un'applicazione può creare un'istanza di un oggetto di questo tipo e utilizzare i relativi metodi per ottenere informazioni sul dispositivo archiviati al suo interno, nonché l'apertura della connessione e il trasferimento dei dati. Ecco alcuni metodi:
    • getObjectHandles() restituisce un elenco di handle per tutti gli oggetti sul dispositivo che corrispondono a un formato e a un padre specificati. Per ottenere informazioni su un oggetto, applicazione può passare un handle a getObjectInfo().
    • importFile() consente a un'applicazione di copiare i dati di un oggetto in un file all'interno archiviazione. Questa chiamata potrebbe bloccarsi per un periodo di tempo arbitrario, a seconda del le dimensioni dei dati e la velocità dei dispositivi, pertanto devono essere .
    • open() consente a un'applicazione di aprire un dispositivo MTP/PTP connesso.
    • Resi a getThumbnail() la miniatura dell'oggetto come array di byte.
  • MtpStorageInfo contiene informazioni su uno spazio di archiviazione su un dispositivo MTP, corrispondente al set di dati StorageInfo descritto in sezione 5.2.2 della specifica MTP. I metodi della classe consentono a un'applicazione ottenere la stringa descrittiva di un'unità di archiviazione, lo spazio libero, la capacità massima di archiviazione l'ID spazio di archiviazione e l'identificatore del volume.
  • MtpDeviceInfo contiene informazioni su un dispositivo MTP corrispondente al set di dati DeviceInfo descritto nella sezione 5.1.1 dell'MTP e la specifica del prodotto. I metodi utilizzati in classe consentono alle applicazioni di recuperare produttore, modello, numero di serie e versione.
  • MtpObjectInfo contiene informazioni su un oggetto archiviato su un dispositivo MTP, corrispondente al set di dati ObjectInfo descritto nella sezione 5.3.1 della specifica MTP. I metodi utilizzati in classe consentono alle applicazioni di dimensioni dell'oggetto, formato dei dati, tipo di associazione, data di creazione e miniatura informazioni.
  • MtpConstants fornisce costanti per la dichiarazione del file MTP codici di formato, tipo di associazione e stato di protezione.

Supporto di nuovi dispositivi di input ed eventi di movimento

Android 3.1 estende il sottosistema di input per supportare nuovi dispositivi di input e nuovi tipi di eventi di movimento, in tutte le visualizzazioni e finestre. Gli sviluppatori possono basarsi queste funzionalità per consentire agli utenti di interagire con le applicazioni tramite mouse, trackball, joystick, gamepad e altri dispositivi, oltre a tastiere e touchscreen.

Per gestire l'input di mouse, rotellina di scorrimento e trackball, la piattaforma supporta due nuove azioni relative agli eventi di movimento:

  • ACTION_SCROLL, che descrive il puntatore posizione in cui viene eseguito un movimento di scorrimento non touch, ad esempio la rotellina del mouse, che ha avuto luogo. In MotionEvent, il valore degli assi AXIS_HSCROLL e AXIS_VSCROLL specifica lo scorrimento relativo movimento.
  • ACTION_HOVER_MOVE indica lo stato attuale del mouse quando non viene premuto nessun pulsante, nonché qualsiasi elemento intermedio punti dall'ultimo evento HOVER_MOVE. Passa il mouse in entrata e in uscita Le notifiche non sono ancora supportate.

Per supportare joystick e gamepad, la classe InputDevice include queste nuove sorgenti di dispositivi di input:

Per descrivere gli eventi di movimento provenienti da queste nuove fonti e da quelli provenienti dai topi e trackball, la piattaforma ora definisce i codici degli assi su MotionEvent, in modo simile ai codici chiave su KeyEvent. Nuovi codici asse per i joystick e controller di gioco includono AXIS_HAT_X, AXIS_HAT_Y, AXIS_RTRIGGER, AXIS_ORIENTATION, AXIS_THROTTLE e molti altri. Gli assi MotionEvent esistenti sono rappresentati da AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR e AXIS_ORIENTATION.

Inoltre, MotionEvent definisce un numero di degli assi utilizzati quando il framework non sa come mappare un determinato asse. Dispositivi specifici possono utilizzare i codici generici dell'asse per trasmettere di movimento alle applicazioni. Per un elenco completo degli assi e delle loro interpretazioni, consulta la documentazione della classe MotionEvent.

La piattaforma fornisce eventi di movimento alle applicazioni in batch, quindi un singolo può contenere una posizione corrente e diversi movimenti cosiddetti storici. Le applicazioni devono usare getHistorySize() per recuperare il numero di campioni storici, quindi recupera ed elabora tutti i dati storici campioni in ordine utilizzando getHistoricalAxisValue(). Dopodiché, le candidature devono elaborare i dati esempio utilizzando getAxisValue().

Alcuni assi possono essere recuperati utilizzando metodi di accesso speciali. Ad esempio: anziché chiamare getAxisValue(), le applicazioni possono chiamare getX(). Gli assi con funzioni di accesso integrate includono AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR e AXIS_ORIENTATION.

Ogni dispositivo di input ha un ID univoco assegnato dal sistema e può anche fornire da più fonti. Quando un dispositivo fornisce più fonti, può fornire i dati dell'asse utilizzando lo stesso asse. Ad esempio, un evento touch in arrivo dalla sorgente touch utilizza l'asse X per i dati sulla posizione dello schermo, mentre un joystick proveniente dalla sorgente del joystick, utilizzerà l'asse X per la posizione dello stick . Per questo motivo, è importante che le applicazioni interpretino l'asse in base alla fonte di origine. Durante la gestione di un movimento le applicazioni devono usare metodi su InputDevice per determinare gli assi supportati da un dispositivo o da una fonte. In particolare, le applicazioni possono utilizzare getMotionRanges() per eseguire query su tutti gli assi di un dispositivo o su tutti gli assi di un determinato all'origine del dispositivo. In entrambi i casi, le informazioni sull'intervallo per gli assi restituite l'oggetto InputDevice.MotionRange specifica l'origine di ciascun valore dell'asse.

Infine, poiché gli eventi di movimento da joystick, gamepad, mouse e le trackball non sono eventi touch, la piattaforma aggiunge un nuovo metodo di callback per passando a un View come "generico" eventi di movimento. Nello specifico, segnala gli eventi di movimento non touch a View tramite una chiamata a onGenericMotionEvent(), anziché a onTouchEvent().

La piattaforma invia eventi di movimento generici in modo diverso, a seconda del della sorgente dell'evento. SOURCE_CLASS_POINTER di eventi vai a View sotto il puntatore, in modo simile al tocco funzionano. Tutti gli altri vanno all'elemento View attualmente attivo. Ad esempio, questo significa che View deve mettere in primo piano per poter ricevere eventi del joystick. Se necessario, le applicazioni possono gestire questi eventi a livello di attività o di dialogo implementando onGenericMotionEvent() lì.

Per esaminare un'applicazione di esempio che utilizza il movimento del joystick eventi, consulta GameControllerInput e GameView.

API RTP

Android 3.1 espone un'API al suo RTP (Real-time Transport Protocol) integrato , che le applicazioni possono utilizzare per gestire dati on demand o interattivi in modalità flusso. In particolare, le app che forniscono VOIP, push-to-talk, conferenze, e lo streaming audio possono utilizzare l'API per avviare sessioni e trasmettere o ricevere tramite flussi di dati su qualsiasi rete disponibile.

L'API RTP è disponibile nel pacchetto android.net.rtp. Classi include:

  • RtpStream, la classe base degli stream che inviano e ricevono pacchetti di rete con payload multimediali su RTP.
  • AudioStream, una sottoclasse di RtpStream che trasporta payload audio tramite RTP.
  • AudioGroup, un hub audio locale per la gestione e mixando l'altoparlante, il microfono e AudioStream del dispositivo.
  • AudioCodec, che contiene una raccolta di codec che che definisci per un AudioStream.

Per supportare le videoconferenze e utilizzi simili, un'applicazione crea un'istanza due classi come endpoint per il flusso:

L'utilizzo più semplice riguarda un unico endpoint remoto e un endpoint locale. Per usi più complessi, consulta le limitazioni descritte per AudioGroup.

Per utilizzare l'API RTP, le applicazioni devono richiedere l'autorizzazione all'utente tramite con la dichiarazione <uses-permission android:name="android.permission.INTERNET"> nei file manifest. Per acquisire il microfono del dispositivo, è necessaria anche l'autorizzazione <uses-permission android:name="android.permission.RECORD_AUDIO">.

Widget app ridimensionabili

A partire da Android 3.1, gli sviluppatori possono creare i widget nella schermata Home ridimensionabile: orizzontalmente, verticalmente o su entrambi gli assi. L'utente tiene premuto un widget per mostrare i relativi punti di manipolazione di ridimensionamento, quindi trascina l'orientamento orizzontale e/o verticale punti di manipolazione per modificare le dimensioni nella griglia di layout.

Gli sviluppatori possono rendere ridimensionabile qualsiasi widget della schermata Home definendo una Attributo resizeMode nei metadati AppWidgetProviderInfo del widget. Valori per l'attributo Gli attributi resizeMode includono "orizzontale", "verticale" e "nessuno". Per dichiarare un widget ridimensionabile orizzontalmente e verticalmente, specifica il valore "orizzontale|verticale".

Ecco un esempio:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical" >
</appwidget-provider>

Per ulteriori informazioni sui widget nella schermata Home, consulta la sezione Widget delle app. documentazione.

Framework animazione

  • Nuova classe ViewPropertyAnimator
    • Un nuovo corso ViewPropertyAnimator fornisce un comodo consente agli sviluppatori di animare proprietà selezionate su View oggetti. Il corso automatizza e ottimizza l'animazione delle proprietà, semplificando gestire più animazioni simultanee su un oggetto View.

      L'utilizzo di ViewPropertyAnimator è semplice. Per animare le proprietà per View, chiama animate() per costruisci un oggetto ViewPropertyAnimator per quell'elemento View. Utilizza la metodi su ViewPropertyAnimator per specificare quale proprietà e come animarlo. Ad esempio, per applicare una dissolvenza a View in trasparente, chiama alpha(0);. L'oggetto ViewPropertyAnimator gestisce i dettagli della configurazione della classe Animator sottostante e dell'avvio, quindi del rendering l'animazione.

  • Colore sfondo animazione
    • Nuovi getBackgroundColor() e setBackgroundColor(int) metodi consentono ottieni/imposta il colore di sfondo dietro le animazioni, per le animazioni delle finestre . Al momento lo sfondo deve essere nero con qualsiasi livello alfa desiderato.
  • Recupero della frazione animata da ViewAnimator
    • Un nuovo getAnimatedFraction() metodo consente di ottenere la frazione di animazione corrente: il tempo trascorso/interpolato frazione utilizzata nell'aggiornamento del frame più recente, da un valore di ValueAnimator.

Framework UI

  • Rendering forzato di un livello
    • Un nuovo metodo buildLayer() consente a un'applicazione forza la creazione di un livello della Vista e il rendering della Vista visualizzata immediatamente. Ad esempio, un'applicazione potrebbe usare questo metodo per eseguire il rendering di una vista nel suo prima di avviare un'animazione. Se la vista è complessa, esegui il rendering il livello prima di avviare l'animazione eviterai di saltare i frame.
  • Distanza fotocamera
    • Le applicazioni possono utilizzare un nuovo metodo setCameraDistance(float) per impostare la distanza dal fotocamera a una vista. Ciò consente alle applicazioni di controllare meglio le trasformazioni 3D la vista, come le rotazioni.
  • Visualizzazione del calendario da un selettore di date
  • Ricezione di callback quando le viste vengono scollegate
  • Listener di breadcrumb Fragment, nuova firma onInflate()
  • Visualizza i risultati di ricerca in una nuova scheda
  • Cursore di testo disegnabile
    • Ora puoi specificare un elemento disegnabile da utilizzare come cursore di testo utilizzando il nuovo attributo risorsa textCursorDrawable.
  • Impostazione del bambino mostrato nelle viste remote
  • Tasti generici per gamepad e altri dispositivi di input
    • KeyEvent aggiunge una serie di codici chiave generici a i pulsanti del gamepad. Il corso aggiunge anche isGamepadButton(int) e diversi altri di supporto per l'uso dei codici chiave.

Grafica

  • Supporti per la gestione delle bitmap
    • setHasAlpha(boolean) consente a un'app di indicare che tutti i pixel in una bitmap sono noti per essere opachi (false) o che alcuni dei i pixel possono contenere valori alfa non opachi (true). Nota: per alcune configurazioni (come come RGB_565), questa chiamata viene ignorata perché non supporta alpha per pixel e i relativi valori. Questo è inteso come un suggerimento di disegno, come in alcuni casi una bitmap nota all'opacità, può richiedere un caso di disegno più veloce rispetto a uno con un'immagine non opaca valori alfa per pixel.
    • getByteCount() ottiene le dimensioni di una bitmap in byte.
    • getGenerationId() consente a un'applicazione di trovare se una bitmap è stata modificata, ad esempio per la memorizzazione nella cache.
    • sameAs(android.graphics.Bitmap) determina se una determinata bitmap differisce da quella corrente, in termini di dimensioni, configurazione o dati dei pixel.
  • Impostazione della posizione e della rotazione della videocamera

Rete

  • Blocco del Wi-Fi ad alte prestazioni
    • Un nuovo blocco Wi-Fi ad alte prestazioni consente alle applicazioni di mantenere connessioni Wi-Fi ad alte prestazioni anche con lo schermo del dispositivo spento. Le applicazioni che riproducono in streaming musica, video o voce per lunghi periodi possono acquisire blocco del Wi-Fi ad alte prestazioni per garantire prestazioni di streaming ottimali anche quando lo schermo è disattivata. Poiché consuma più potenza, le applicazioni dovrebbero acquisire quando è necessario un Wi-Fi ad alte prestazioni connessione.

      Per creare un blocco ad alte prestazioni, passa WIFI_MODE_FULL_HIGH_PERF come modalità di blocco in un chiamata a createWifiLock().

  • Altre statistiche sul traffico
    • Ora le applicazioni possono accedere a statistiche su più tipi di utilizzo della rete utilizzando nuovi metodi in TrafficStats. Le applicazioni possono utilizzare metodi per ottenere le statistiche UDP, il conteggio dei pacchetti, i byte di payload per la trasmissione/ricezione TCP e segmenti per un determinato UID.
  • Nome utente autenticazione SIP
    • Ora le applicazioni possono recuperare e impostare il nome utente di autenticazione SIP per un profilo utilizzando i nuovi metodi getAuthUserName() e setAuthUserName().

Gestione download

  • Gestione dei download completati
    • Ora le applicazioni possono avviare download che inviano notifiche agli utenti solo su completamento. Per avviare questo tipo di download, le applicazioni superano VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION nel metodo setNotificationVisibility() di dell'oggetto a richiesta.
    • Un nuovo metodo, addCompletedDownload(), consente a un'applicazione di aggiungere un file alla scarica il database, in modo che possa essere gestito dall'applicazione Download.
  • Mostra i download ordinati per dimensioni

framework IME

  • Recupero della chiave valore aggiuntiva di un metodo di inserimento

Contenuti multimediali

  • Nuovi formati audio in streaming
    • Il framework multimediale aggiunge il supporto integrato per i contenuti ADTS AAC non elaborati, per audio in streaming migliorato, oltre al supporto dell'audio FLAC, per la massima qualità contenuti audio compressi (senza perdita di dati). Consulta la sezione Formati multimediali supportati per ulteriori informazioni.

Controlli di avvio disattivati applicazioni

A partire da Android 3.1, il gestore di pacchetti del sistema di applicazioni in stato arrestato che fornisce un mezzo per controllare il loro lancio da processi in background e altre applicazioni.

Tieni presente che lo stato interrotto di un'applicazione non è uguale allo stato di un'attività in stato interrotto. Il sistema gestisce questi due stati arrestati separatamente.

La piattaforma definisce due nuovi flag di intent che consentono a un mittente di specificare se consentire o meno all'intent di attivare componenti in un'applicazione.

Quando nessuno di questi flag o nessuno di questi flag viene definito in un intent, il valore predefinito il comportamento degli utenti consiste nell'includere i filtri delle applicazioni arrestate nell'elenco delle obiettivi potenziali.

Tieni presente che il sistema aggiunge FLAG_EXCLUDE_STOPPED_PACKAGES a tutte le trasmissioni intent. in modo da impedire le trasmissioni dai servizi in background avviare inavvertitamente o inutilmente componenti di applicazioni interrotte. Un servizio o un'applicazione in background può eseguire l'override di questo comportamento aggiungendo il metodo FLAG_INCLUDE_STOPPED_PACKAGES flag da trasmettere intent che dovrebbero essere autorizzati ad attivare applicazioni interrotte.

Le applicazioni si trovano in stato arrestato al momento della prima installazione, ma non vengono già avviato e quando vengono interrotti manualmente dall'utente (in Gestisci applicazioni).

Notifica del primo avvio e dell'upgrade dell'applicazione

La piattaforma aggiunge notifiche migliorate in caso di primo avvio dell'applicazione e upgrade tramite due nuove azioni per intent:

  • ACTION_PACKAGE_FIRST_LAUNCH - Inviato a il pacchetto di installazione di un'applicazione al primo avvio di quest'ultima (ovvero la prima volta che viene spostato fuori da uno stato interrotto). I dati contiene il nome del pacchetto.
  • ACTION_MY_PACKAGE_REPLACED - Invia una notifica un'applicazione che è stata aggiornata con una nuova versione una versione esistente. Viene inviato solo all'applicazione che è stata sostituita. it non contiene dati aggiuntivi. Per riceverlo, dichiara un filtro per intent per questa azione. Puoi utilizzare l'intent per attivare il codice che ti consente di ottenere dell'applicazione per tornare alla corretta esecuzione dopo un upgrade.

    Questo intent viene inviato direttamente all'applicazione, ma solo se quest'ultima è stato eseguito l'upgrade mentre era in stato avviato (non in stato arrestato).

Utilità principali

  • Cache LRU
    • Una nuova classe LruCache consente alle tue applicazioni di trarre vantaggio da una memorizzazione efficiente nella cache. Le applicazioni possono utilizzare la classe per ridurre il tempo trascorso calcolando o scaricando dati dalla rete, mantenendo un comportamento per i dati memorizzati nella cache.LruCache è una cache che contengono forti riferimenti a un numero limitato di valori. Ogni volta che un valore viene a cui si accede viene spostato in cima a una coda. Quando un valore viene aggiunto a un , il valore alla fine della coda viene rimosso e potrebbe diventare idoneo per garbage collection.
  • Descrittore del file come int

WebKit

  • Cookie dello schema di file
    • L'CookieManager ora supporta i cookie che utilizzano il Schema URI file:. Puoi utilizzare setAcceptFileSchemeCookies() per Abilita/disabilita il supporto per i cookie dello schema file, prima di creare un'istanza di WebView o CookieManager. In un CookieManager, puoi verificare se i cookie dello schema di file viene attivato chiamando allowFileSchemeCookies().
  • Notifica di richiesta di accesso
    • Per supportare le funzionalità di accesso automatico del browser introdotte in Android 3.0, la nuovo metodo onReceivedLoginRequest() invia una notifica all'organizzatore a cui è stata elaborata una richiesta di accesso automatico per l'utente.
  • Classi e interfacce rimosse
    • Diverse classi e interfacce sono state rimosse dall'API pubblica, che in precedenza era in stato deprecato. Consulta l'API Report Differenze per ulteriori informazioni.

Browser

L'applicazione Browser aggiunge le seguenti funzionalità per supportare il web applicazioni:

  • Supporto per la riproduzione in linea di video incorporati in HTML5 Tag <video>. La riproduzione è con accelerazione hardware, se possibile.
  • Supporto dei livelli per elementi con posizione fissa per tutti i siti (dispositivi mobili e desktop).

Costanti delle nuove caratteristiche

La piattaforma aggiunge nuove costanti di funzionalità hardware che gli sviluppatori possono dichiarare nei file manifest dell'applicazione, per informare entità esterne come Google Riproduzione dei requisiti dell'applicazione per le nuove funzionalità hardware supportate in questa versione della piattaforma. Gli sviluppatori dichiarano queste e altre funzionalità costanti negli elementi manifest di <uses-feature>.

Google Play filtra le applicazioni in base alle funzionalità dichiarate negli elementi manifest di <uses-feature>. Per ulteriori informazioni che dichiara le funzionalità in un file manifest dell'applicazione, leggi Google Play Filtri.

Report Differenze API

Per una visualizzazione dettagliata di tutte le modifiche API in Android 3.1 (API Livello 12), consulta l'API Report Differenze.

Livello API

La piattaforma Android 3.1 offre una versione aggiornata di l'API del framework. API per Android 3.1 viene assegnato un identificatore intero, 12, ossia archiviati nel sistema stesso. Questo identificatore, chiamato "livello API", consente sistema per determinare correttamente se un'applicazione è compatibile al sistema prima di installare l'applicazione.

Per utilizzare le API introdotte in Android 3.1 nella tua applicazione: devi compilare l'applicazione sulla base della libreria Android fornita in la piattaforma SDK Android 3.1. In base alle tue esigenze, puoi potrebbe devi aggiungere anche un android:minSdkVersion="12" all'elemento <uses-sdk> nel codice del file manifest.

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