Android 7.0 per sviluppatori

Android 7.0 Nougat introduce una serie di nuove funzioni per utenti e sviluppatori. Questo documento mette in evidenza le novità per gli sviluppatori.

Assicurati di consultare Cambiamenti del comportamento di Android 7.0 per scoprire di più sulle aree in cui la piattaforma cambia ciò potrebbe influire sulle tue app.

Per scoprire di più su per le funzionalità per i consumatori di Android 7.0, visita il sito www.android.com.

Supporto multi-finestra

In Android 7.0, stiamo introducendo un nuovo funzionalità multitasking nella piattaforma: supporto multi-finestra.

Ora gli utenti possono aprire contemporaneamente due app sullo schermo.

  • Su smartphone e tablet con Android 7.0, gli utenti possono eseguire due app affiancate uno sopra l'altro in modalità schermo diviso. Gli utenti possono ridimensionare le app trascinando il divisore tra loro.
  • Sui dispositivi Android TV, le app possono essere disponibili in Picture in picture , che consentono loro di continuare a mostrare i contenuti mentre l'utente naviga o interagisce con altre app.
App mobile in esecuzione in modalità schermo diviso

Figura 1. App in esecuzione in modalità schermo diviso.

Supporto multi-finestra, soprattutto su tablet e altri dispositivi con schermi più grandi offre nuovi modi per coinvolgere gli utenti. Puoi anche attivare il trascinamento dell'app per consentire agli utenti di trascinare facilmente i contenuti da o verso l'app: un'ottima soluzione per migliorare l'esperienza utente.

Aggiungere il supporto multi-finestra alla tua app e configurarne il modo è semplice gestisce la visualizzazione multi-finestra. Ad esempio, puoi specificare la configurazione dimensioni minime consentite, impedendo agli utenti di ridimensionare l'attività riportata di seguito di quelle dimensioni. Puoi anche disattivare la visualizzazione multi-finestra per la tua app, assicura che il sistema mostri la tua app soltanto in modalità a schermo intero.

Per ulteriori informazioni, consulta il Supporto Multi-finestra. documentazione per gli sviluppatori.

Miglioramenti alle notifiche

In Android 7.0 abbiamo riprogettato le notifiche per semplificarle più rapido da utilizzare. Di seguito sono riportate alcune delle modifiche:

  • Aggiornamenti dei modelli: stiamo aggiornando i modelli di notifica a dare nuova enfasi all'immagine hero e all'avatar. Gli sviluppatori potranno sfruttare i nuovi modelli con modifiche minime nel codice.
  • Personalizzazione dello stile dei messaggi: puoi personalizzare ulteriormente le etichette dell'interfaccia utente associate alle notifiche utilizzando MessagingStyle corso. Puoi configurare il messaggio, titolo della conversazione e visualizzazione dei contenuti.
  • Notifiche in bundle: il sistema può raggruppare i messaggi ad esempio in base all'argomento del messaggio, e visualizza il gruppo. Un utente può eseguire delle azioni, come Ignora o Archivia. Se hai per Android Wear, con le quali avrai già familiarità questo modello.
  • Risposta diretta: per le app per la comunicazione in tempo reale, la Il sistema Android supporta le risposte in linea per consentire agli utenti di rispondere rapidamente un SMS o un SMS direttamente all'interno dell'interfaccia di notifica.
  • Visualizzazioni personalizzate: due nuove API ti consentono di sfruttare il sistema come le intestazioni e le azioni delle notifiche, quando utilizzi di visualizzazioni nelle notifiche.
Dispositivo mobile su cui sono visualizzate le notifiche dei messaggi in bundle
Dispositivo mobile che mostra una notifica di messaggio singolo
Dispositivo mobile che mostra la risposta a un messaggio in linea nell'interfaccia di notifica

Figura 2. Notifiche raggruppate e risposta diretta.

Per scoprire come implementare le nuove funzionalità, consulta la Notifiche guida.

Compilation JIT/AOT guidata dal profilo

In Android 7.0 abbiamo aggiunto un compilatore Just in Time (JIT) con codice profilazione in ART, che consente di migliorare costantemente il rendimento App Android in esecuzione. Il compilatore JIT integra gli strumenti di Ahead of Time (AOT) e aiuta a migliorare le prestazioni di runtime, risparmiando di archiviazione e velocizzare gli aggiornamenti delle app e di sistema.

La compilazione guidata dal profilo consente ad ART di gestire la compilazione AOT/JIT per ogni app in base al suo utilizzo effettivo e alle condizioni sul dispositivo. Ad esempio, ART mantiene un profilo dei metodi attivi di ogni app e può precompilare e memorizzare nella cache questi metodi per ottenere le migliori prestazioni. Lascia altre parti dell'app non ancora compilate fino al loro effettivo utilizzo.

Oltre a migliorare le prestazioni per gli elementi principali dell'app, le visite guidate dal profilo la compilazione consente di ridurre l'ingombro complessivo di RAM di un'app, inclusi quelli associati file binari. Questa funzionalità è particolarmente importante sui dispositivi con memoria ridotta.

ART gestisce la compilazione guidata dal profilo in modo da ridurre al minimo l'impatto sulle batteria del dispositivo. Esegue la precompilazione solo quando il dispositivo è inattivo ricaricando il tuo dispositivo, risparmiando tempo e riducendo la batteria in anticipo.

Percorso rapido per l'installazione di app

Uno dei vantaggi più tangibili del compilatore JIT di ART è la velocità dell'app installazioni e aggiornamenti di sistema. Anche le app di grandi dimensioni che richiedevano diversi minuti ottimizzare e installare in Android 6.0 è ora possibile secondi. Inoltre, gli aggiornamenti di sistema sono più veloci, in quanto non c'è più un passaggio di ottimizzazione.

Sospendi ovunque ti trovi...

In Android 6.0 è stata introdotta la modalità Sospensione, una modalità di sistema che consente di risparmiare batteria differendo app Le attività di CPU e rete quando il dispositivo è inattivo, ad esempio quando è seduto su un tavolo o in un cassetto.

Ora su Android 7.0, Sospensione fa un ulteriore passo e risparmia batteria ovunque ti trovi. Ogni volta che lo schermo è spento per un certo periodo di tempo e il dispositivo è scollegato dall'alimentazione, La funzionalità Sospensione applica alle app un sottoinsieme delle consuete limitazioni di CPU e rete. Ciò significa che gli utenti possono risparmiare batteria anche quando portano i propri dispositivi al suo interno tasche.

Illustrazione di come la sospensione applica un primo livello di limitazioni dell'attività di sistema per migliorare la durata della batteria

Figura 3. Si applica ora la sospensione limitazioni per aumentare la durata della batteria anche quando il dispositivo non è fermo.

Poco tempo dopo lo spegnimento dello schermo mentre il dispositivo è alimentato a batteria, Sospensione limita l'accesso alla rete e rimanda i job e le sincronizzazioni. Durante una breve manutenzione finestre, alle applicazioni è consentito l'accesso alla rete e qualsiasi loro i job e le sincronizzazioni vengono eseguiti. L'attivazione dello schermo o il collegamento del dispositivo comporta il dispositivo da Sospensione.

Quando il dispositivo è di nuovo fermo, con lo schermo spento e la batteria per un periodo di tempo, Sospensione applica l'intera limitazione di CPU e rete agli allarmi PowerManager.WakeLock e AlarmManager, Ricerche con GPS/Wi-Fi.

Le best practice per adattare la tua app alla modalità Sospensione sono le stesse indipendentemente dal fatto che Il dispositivo è in movimento o meno, quindi se hai già aggiornato l'app in modo che gestire Sospensione, non devi fare altro. In caso contrario, inizia ad adattare la tua app su Sospensione.

Project Svelte: ottimizzazioni dello sfondo

Project Svelte è un impegno continuo per ridurre al minimo l'utilizzo della RAM da parte del sistema e delle app sulla gamma di dispositivi Android nell'ecosistema. In Android 7.0, Project Svelte si concentra sull'ottimizzazione della modalità di esecuzione delle app in background.

L'elaborazione in background è una parte essenziale della maggior parte delle app. Se gestita correttamente, possono rendere l'esperienza utente straordinaria, immediata, rapida e sensibile al contesto. Se non gestita correttamente, l'elaborazione in background può consumare inutilmente RAM (e batteria) e influiscono sulle prestazioni del sistema per altre app.

Da Android 5.0, JobScheduler è stata la il modo preferito per eseguire il lavoro in background nel modo migliore per gli utenti. Le app possono pianificare i job consentendo al sistema di ottimizzare in base le condizioni di memoria, alimentazione e connettività. JobScheduler offre il controllo semplicità e vogliamo che tutte le app la utilizzino.

Un'altra valida opzione è GCMNetworkManager, che fa parte di Google Play Services, offre una pianificazione dei job simile con compatibilità tra le versioni precedenti Android.

Stiamo continuando a estendere JobScheduler e GCMNetworkManager per incontrare altri partecipanti i tuoi casi d'uso; ad esempio, in Android 7.0 ora puoi pianificare la riproduzione in background funzionano in base ai cambiamenti nei Fornitori di contenuti. Allo stesso tempo, iniziamo a ritirare alcuni dei pattern meno recenti che possono ridurre le prestazioni del sistema, soprattutto sui dispositivi con poca memoria.

In Android 7.0 stiamo rimuovendo tre trasmissioni implicite di uso comune: CONNECTIVITY_ACTION, ACTION_NEW_PICTURE e ACTION_NEW_VIDEO, poiché possono riattivare il i processi in background di più app contemporaneamente e consumano memoria e batteria. Se la tua app riceve questi avvisi, sfrutta Android 7.0 per eseguire la migrazione a JobScheduler e alle API correlate.

Dai un'occhiata allo Sfondo Ottimizzazioni per maggiori dettagli.

Visualizzazione di superficie

Android 7.0 porta il movimento sincrono nel SurfaceView che offre prestazioni migliori della batteria rispetto a TextureView in alcuni casi: durante il rendering di video o I contenuti 3D, le app con scorrimento e la posizione video animata consumano meno energia con SurfaceView rispetto a TextureView.

La classe SurfaceView consente una composizione a minor consumo della batteria perché è composto in hardware dedicato, separatamente dall'app contenuto della finestra. Di conseguenza, rende meno copie rispetto a TextureView.

La posizione dei contenuti di un oggetto SurfaceView viene ora aggiornata in modo sincrono con i contenuti dell'app in questione. Uno dei risultati di questa modifica è che traduzioni o scale di un video riprodotto in un SurfaceView non produrrà più barre nere lungo la vista mentre si sposta.

A partire da Android 7.0, ti consigliamo vivamente di risparmiare energia utilizzando SurfaceView anziché TextureView.

Risparmio dati

Risparmio dati nelle Impostazioni

Figura 4. Risparmio dati in Impostazioni.

Durante il ciclo di vita di un dispositivo mobile, in genere il costo di un piano dati cellulare supera il costo del dispositivo stesso. Per molti utenti, la rete dati è una e le costose risorse da conservare.

Android 7.0 introduce la modalità Risparmio dati, un nuovo servizio di sistema che aiuta a ridurre utilizzo della rete dati da parte delle app, in roaming, verso la fine del ciclo di fatturazione; o un piccolo pacchetto dati prepagato. La funzionalità Risparmio dati consente agli utenti di controllare il modo in cui le app usano la rete dati e consentono agli sviluppatori di offrire un servizio più efficiente quando Il risparmio è attivo.

Quando un utente attiva Risparmio dati nelle Impostazioni e il dispositivo viene su una rete a consumo, il sistema blocca l'utilizzo dei dati in background e segnala le app di utilizzare meno dati in primo piano se possibile, ad esempio limitando velocità in bit per lo streaming, riduzione della qualità dell'immagine, differita della precaching ottimistica e così via. Gli utenti possono consentire ad app specifiche di consentire i dati misurati in background anche quando è attiva la funzionalità Risparmio dati.

Android 7.0 estende ConnectivityManager per fornire alle app un per recuperare le preferenze di Risparmio dati dell'utente e monitorare modifiche alle preferenze. Tutte le app devono controllare se l'utente ha attivato i dati Risparmia e cerchiamo di limitare l'utilizzo dei dati in primo piano e in background.

API Vulkan

Android 7.0 integra nella piattaforma VulkanTM, una nuova API per il rendering 3D. Mi piace OpenGLTM ES, Vulkan è uno standard aperto per la grafica 3D e il rendering del gruppo Khronos.

Vulkan è stato progettato da zero per ridurre al minimo l'overhead della CPU nel driver, e consentire alla tua applicazione di controllare il funzionamento della GPU in modo più diretto. Vulkan consente inoltre un migliore caricamento in contemporanea consentendo l'esecuzione di più thread come la creazione del buffer di comando.

Le librerie e gli strumenti di sviluppo Vulkan vengono integrati nell'SDK Android 7.0. Loro include:

  • Intestazioni
  • Livelli di convalida (librerie di debug)
  • Compilatore snapshot SPIR-V
  • Libreria di compilazione dello shaker di runtime SPIR-V

Vulkan è disponibile solo per le app su dispositivi con hardware compatibile, ad esempio Nexus 5X, Nexus 6P e Nexus Player. Lavoriamo a stretto contatto con i nostri partner per rendere disponibile Vulkan su più dispositivi il prima possibile.

Per ulteriori informazioni, consulta la documentazione dell'API.

API Tile Impostazioni rapide

Riquadri Impostazioni rapide nell'area notifiche

Figura 5. Riquadri Impostazioni rapide nell'area notifiche.

Le Impostazioni rapide sono un modo semplice e diffuso per esporre impostazioni e azioni chiave. direttamente dall'area notifiche. In Android 7.0, abbiamo esteso l'ambito Impostazioni rapide per renderlo ancora più utile e pratico.

Abbiamo aggiunto ulteriore spazio per altri riquadri delle Impostazioni rapide, che gli utenti possono per accedere in un'area di visualizzazione impaginata scorrendo verso sinistra o verso destra. Abbiamo anche dato agli utenti il controllo sui riquadri delle Impostazioni rapide visualizzati e sulla loro posizione visualizzati: gli utenti possono aggiungere o spostare riquadri semplicemente trascinandoli.

Per gli sviluppatori, Android 7.0 aggiunge anche una nuova API che consente di definire Riquadri Impostazioni rapide per consentire agli utenti di accedere facilmente alle azioni e ai controlli chiave dell'app.

I riquadri delle Impostazioni rapide sono riservati per controlli o azioni che sono urgente o utilizzate di frequente e non devono essere usate come scorciatoie per avviare un'app.

Dopo aver definito i riquadri, puoi mostrarli agli utenti, che possono aggiungerli e puoi spostarli nelle Impostazioni rapide con un semplice trascinamento.

Per informazioni sulla creazione di un riquadro dell'app, consulta la documentazione di riferimento per Tile.

Blocco numerico

Android 7.0 ora supporta il blocco dei numeri nella piattaforma e fornisce una del framework per consentire ai fornitori di servizi di gestire un elenco di numeri bloccati. La l'app SMS predefinita, l'app Telefono predefinita e le app dell'operatore possono leggere e scrivere nell'elenco dei numeri bloccati. L'elenco non è accessibile ad altre app.

Rendendo il blocco di numeri una funzione standard della piattaforma, Android fornisce un modo coerente per far sì che le app supportino il blocco dei numeri in un'ampia gamma dispositivi mobili. Tra gli altri vantaggi di cui le app possono usufruire sono:

  • I numeri bloccati durante le chiamate vengono bloccati anche sui messaggi
  • I numeri bloccati possono essere mantenuti tra le reimpostazioni e i dispositivi tramite le funzionalità di backup e Ripristina funzionalità
  • Più app possono usare lo stesso elenco di numeri bloccati

Inoltre, l'integrazione dell'app dell'operatore tramite Android consente agli operatori di leggere l'elenco dei numeri bloccati sul dispositivo ed eseguire il blocco lato servizio per impedire che chiamate e messaggi indesiderati raggiungano l'utente attraverso qualsiasi mezzo, come un endpoint VOIP o telefoni di inoltro.

Per ulteriori informazioni, consulta la documentazione di riferimento per BlockedNumberContract.

Screening delle chiamate

Android 7.0 consente all'app Telefono predefinita di filtrare le chiamate in arrivo. Il telefono per farlo implementando il nuovo CallScreeningService, che consente all'app per smartphone di eseguire una serie di azioni in base a una Call.Details della chiamata in arrivo, ad esempio:

  • Rifiuta la chiamata in arrivo
  • Non consentire la chiamata al registro chiamate
  • Non mostrare all'utente una notifica per la chiamata

Per ulteriori informazioni, consulta la documentazione di riferimento per CallScreeningService.

Supporto multilocale, altre lingue

Android 7.0 ora consente agli utenti di selezionare più impostazioni internazionali nelle Impostazioni, per supportare meglio i casi d'uso bilingue. Le app possono utilizzare una nuova API per ottenere le impostazioni internazionali selezionate dall'utente e offrire quindi un'esperienza più sofisticata esperienze utente per gli utenti multilocale, ad esempio mostrare i risultati di ricerca in più lingue e non proponendo la traduzione delle pagine web in una lingua già noto all'utente.

Oltre al supporto multilocale, Android 7.0 amplia anche la gamma di lingue disponibili per gli utenti. Offre più di 25 varianti, ciascuna in varie lingue come inglese, spagnolo, francese e arabo. Aggiunge inoltre una parte per oltre 100 nuove lingue.

Le app possono recuperare l'elenco di impostazioni internazionali impostate dall'utente chiamando LocaleList.GetDefault(). Per supportare il numero ampliato di lingue, Android 7.0 è modificando il modo in cui risolve le risorse. Assicurati di testare e verificare che le tue app funzionando come previsto con la nuova logica di risoluzione delle risorse.

Per scoprire il nuovo comportamento di risoluzione delle risorse e le best practice successivi, consulta la sezione Supporto multilingue.

Nuove emoji

Android 7.0 introduce ulteriori emoji e funzionalità relative alle emoji, tra cui emoji per le tonalità della pelle e supporto della variazione selettori. Se la tua app supporta le emoji, segui le linee guida riportate di seguito per sfruttare queste funzionalità relative alle emoji.

  • Verifica che un dispositivo contenga un'emoji prima di inserirlo. Per controllare quali emoji sono presenti nella di sistema, usa il metodo hasGlyph(String).
  • Verifica che un'emoji supporti i selettori delle varianti. I selettori di varianti consentono di presentare alcune emoji a colori o in bianco e nero. Sui dispositivi mobili, le app dovrebbero rappresentare le emoji a colori anziché in bianco e nero. Tuttavia, se la tua app mostra emoji incorporate nel testo, dovrebbe utilizzare la variante in bianco e nero. Per determinare se un'emoji ha una variante, utilizza il selettore di variante. Per un elenco completo dei caratteri con varianti, esamina le sezione delle sequenze di variazioni di emoji della . Documentazione Unicode sulle varianti.
  • Verifica che un'emoji supporti la tonalità della pelle. Android 7.0 consente agli utenti di modificare la tonalità della pelle delle emoji che preferiscono. Le app per tastiera devono offrire per emoji con più tonalità di pelle e che dovrebbero consentire agli utenti di selezionare la tonalità della pelle che preferiscono. Per determinare quali emoji di sistema hanno modificatori del colore della pelle, usa i hasGlyph(String) . Puoi determinare quali emoji usano i toni della pelle leggendo le documentazione Unicode.

API ICU4J in Android

Android 7.0 ora offre un sottoinsieme di API ICU4J nel framework Android in il pacchetto android.icu. La migrazione è facile e richiede soprattutto semplicemente passando dallo spazio dei nomi com.java.icu a android.icu. Se utilizzi già un bundle ICU4J nel tuo di app, passando alle API android.icu fornite in Android può produrre risparmi significativi nelle dimensioni dell'APK.

Per scoprire di più sulle API Android ICU4J, vedi Assistenza di ICU4J.

WebView

Chrome + WebView, insieme

A partire da Chrome versione 51 su Android 7.0 e versioni successive, l'APK di Chrome sul tuo dispositivo. viene utilizzato per fornire e visualizzare i componenti WebView di sistema Android. Questo approccio migliora la memoria l'utilizzo sul dispositivo stesso e riduce la larghezza di banda necessaria per WebView aggiornato (poiché l'APK WebView autonomo non verrà più aggiornato finché Chrome rimane attivo).

Puoi scegliere il tuo provider WebView attivando le Opzioni sviluppatore e selezionando Implementazione WebView. Puoi usare qualsiasi tipo di La versione di Chrome (Dev, Beta o Stabile) installata sul dispositivo o l'APK WebView autonomo che funge da implementazione di WebView.

Multiprocesso

A partire da Chrome versione 51 in Android 7.0, WebView eseguirà i contenuti web in un processo sandbox separato quando l'opzione sviluppatore "Multiprocess WebView" sia abilitato.

Vogliamo feedback sulla compatibilità e sulle prestazioni di runtime in N prima di attivare WebView multiprocesso in una versione futura di Android. In questo versione precedente, regressioni nel tempo di avvio, utilizzo totale della memoria e software di prestazioni di rendering previste.

Se riscontri problemi imprevisti in modalità multi-processo, vorremmo informarti che li rappresentano. Contatta il team di WebView riguardo allo strumento di segnalazione dei bug di Chromium.

Esecuzione di JavaScript prima del caricamento pagina

A partire dalle app destinate ad Android 7.0, il contesto JavaScript verrà reimpostato quando viene caricata una nuova pagina. Attualmente, il contesto viene trasferito la prima pagina caricata in una nuova istanza WebView.

Gli sviluppatori che vogliono inserire JavaScript in WebView devono eseguire lo script dopo l'inizio del caricamento della pagina.

Geolocalizzazione su origini non sicure

A partire dalle app destinate ad Android 7.0, l'API di geolocalizzazione verrà consentito su origini sicure (tramite HTTPS). Questo criterio è pensato per proteggere le informazioni private degli utenti quando utilizzano una connessione non sicura.

Test con WebView beta

WebView viene aggiornato regolarmente, quindi ti consigliamo di testare la compatibilità con la tua app di frequente usando il canale beta di WebView. Per iniziare i test versioni pre-release di WebView su Android 7.0, scaricare e installare Chrome Dev o Chrome Beta e selezionalo come implementazione WebView in opzioni sviluppatore come descritto sopra. Segnala i problemi tramite il servizio Chromium tracker dei bug per consentirci di correggerli prima che venga resa disponibile una nuova versione di WebView rilasciate.

API OpenGLTM ES 3.2

Android 7.0 aggiunge interfacce framework e supporto della piattaforma per OpenGL ES 3.2, tra cui:

  • Tutte le estensioni da Android Extension Pack (AEP), tranne EXT_texture_sRGB_decode.
  • Framebuffer con virgola mobile per HDR e ombreggiatura differita.
  • BaseVertex consente di tracciare le chiamate per migliorare processi batch e flussi di dati.
  • Solido controllo dell'accesso al buffer per ridurre l'overhead di WebGL.

L'API del framework per OpenGL ES 3.2 su Android 7.0 viene fornita con GLES32 corso. Quando utilizzi OpenGL ES 3.2, assicurati di dichiarare requisito nel file manifest, utilizzando il tag <uses-feature> e l'attributo android:glEsVersion.

Per informazioni sull'utilizzo di OpenGL ES, incluse informazioni su come controllare lo stato versione OpenGL ES supportata in fase di runtime, consulta la guida all'API OpenGL ES.

Registrazione su Android TV

Android 7.0 aggiunge la possibilità di registrare e riprodurre contenuti dall'ingresso di Android TV tramite le nuove API di registrazione. Sfruttare il time-shifting esistente le API, i servizi di input TV possono controllare quali dati dei canali possono essere registrati, sessioni registrate vengono salvate e gestiscono l'interazione degli utenti con i contenuti registrati.

Per ulteriori informazioni, vedi API Android TV Recording.

Android for Work

Android for Work aggiunge molte nuove funzionalità e API per i dispositivi che eseguono Android 7.0, Di seguito sono riportate alcune delle caratteristiche principali. Per un elenco completo delle funzionalità, vedi Funzionalità di Android Enterprise elenco predefinito.

Verifica della sicurezza del profilo di lavoro

Proprietari del profilo che hanno come target l'SDK N puoi specificare una verifica di sicurezza separata per le app in esecuzione il profilo di lavoro. La sfida di lavoro viene mostrata quando un utente tenta di aprire il file qualsiasi app di lavoro. Il completamento con esito positivo della verifica di sicurezza sblocca profilo di lavoro e, se necessario, lo decripta. Per i proprietari di profili, ACTION_SET_NEW_PASSWORD chiede all'utente di impostare un lavoro sfida e ACTION_SET_NEW_PARENT_PROFILE_PASSWORD prompt all'utente di impostare un blocco del dispositivo.

I proprietari del profilo possono impostare criteri per passcode distinti per la sfida di lavoro Ad esempio, la lunghezza del PIN o la possibilità di utilizzare un'impronta per sbloccare il profilo) utilizzando l'setPasswordQuality(), setPasswordMinimumLength() e metodi correlati. Il profilo il proprietario può anche impostare il blocco del dispositivo usando l'DevicePolicyManager Istanza restituita dal nuovo metodo getParentProfileInstance(). Inoltre, i proprietari del profilo possono personalizzare la schermata delle credenziali per sfida di lavoro utilizzando i nuovi setOrganizationColor() setOrganizationName() metodi.

Stacca dal lavoro

Su un dispositivo con un profilo di lavoro, gli utenti possono attivare/disattivare la modalità di lavoro. Quando la modalità Lavoro è l'utente gestito è stato chiuso temporaneamente e di conseguenza il profilo di lavoro viene disattivato app, sincronizzazione in background e notifiche. È incluso il proprietario del profilo un'applicazione. Quando la modalità di lavoro è disattivata, il sistema visualizza uno stato permanente per ricordare all'utente che non può avviare le app di lavoro. Avvio app indica che app e widget di lavoro non sono accessibili.

VPN sempre attiva

I proprietari dei dispositivi e dei profili possono assicurarsi che le app di lavoro si connettano sempre tramite una VPN specificata. Il sistema avvia automaticamente la VPN dopo all'avvio del dispositivo.

I nuovi metodi DevicePolicyManager sono setAlwaysOnVpnPackage() e getAlwaysOnVpnPackage().

Perché i servizi VPN possono essere associati direttamente dal sistema senza app un'interazione, i client VPN devono gestire nuovi entry point per la VPN sempre attiva. Come in precedenza, i servizi sono indicati al sistema da un filtro per intent azione android.net.VpnService.

Gli utenti possono anche impostare manualmente i client VPN sempre attivi che implementano VPNService metodi che utilizzano Impostazioni > Altro > VPN. L'opzione per abilitare la VPN sempre attiva dalla sezione Impostazioni è disponibile solo se il client VPN ha come target il livello API 24.

Provisioning personalizzato

Un'applicazione può personalizzare il proprietario del profilo e il provisioning del proprietario del dispositivo con colori e loghi aziendali. DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR personalizza il colore del flusso. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI personalizza il flusso con un logo aziendale.

Miglioramenti all'accessibilità

Ora Android 7.0 offre le impostazioni di Vision direttamente nella schermata di benvenuto per le nuove configurazione del dispositivo. In questo modo, per gli utenti è molto più facile scoprire e configurare funzioni di accessibilità sui loro dispositivi, tra cui gesto di ingrandimento, carattere dimensioni, dimensioni di visualizzazione e TalkBack.

Grazie alle funzioni di accessibilità che ottengono un posizionamento più evidente, i tuoi utenti è più propenso a provare la tua app con queste funzionalità attivate. Assicurati di testare le tue app in anticipo con queste impostazioni abilitate. Puoi abilitarle da Impostazioni > Accessibilità.

Sempre in Android 7.0, i servizi di accessibilità possono ora aiutare gli utenti con disabilità a toccare lo schermo. La nuova API consente di creare servizi con come riconoscimento facciale, tracciamento oculare, scansione per punto e così via, per per soddisfare le esigenze di questi utenti.

Per ulteriori informazioni, consulta la documentazione di riferimento per GestureDescription.

Avvio diretto

L'avvio diretto migliora i tempi di avvio del dispositivo e consente Le app hanno funzionalità limitate anche dopo un riavvio imprevisto. Ad esempio, se un dispositivo criptato si riavvia mentre l'utente è in modalità di sospensione, le sveglie, i messaggi e le chiamate in arrivo registrati possono ora continuare ad attivare le notifiche l'utente come di consueto. Ciò significa anche che i servizi di accessibilità possono disponibili subito dopo un riavvio.

Avvio diretto sfrutta la crittografia basata su file in Android 7.0 per attivare criteri di crittografia granulari sia per i dati di sistema sia per quelli delle app. Il sistema utilizza uno spazio di archiviazione criptato dal dispositivo per determinati dati di sistema e dati dell'app registrati. Per impostazione predefinita, viene utilizzato un archivio con crittografia delle credenziali altri dati di sistema, dati utente, app e dati delle app.

All'avvio, il sistema si avvia in modalità con restrizioni con accesso solo dati criptati sul dispositivo e senza accesso generale ad app o dati. Se hai dei componenti che desideri eseguire in questa modalità, puoi registrare impostando un flag nel manifest. Dopo il riavvio, il sistema si attiva componenti registrati trasmettendo LOCKED_BOOT_COMPLETED l'intento. Il sistema garantisce la disponibilità dei dati delle app criptati sul dispositivo registrati prima dello sblocco. Tutti gli altri dati non saranno disponibili finché l'utente non conferma il proprio blocco credenziali dello schermo per decriptarlo.

Per ulteriori informazioni, vedi Avvio diretto.

Attestazione chiave

Android 7.0 introduce l'attestazione chiave, un nuovo strumento di sicurezza che consente ti assicuri che le coppie di chiavi siano archiviate nell'hardware di un dispositivo keystore proteggi adeguatamente le informazioni sensibili che la tua app utilizzi. Se usi questo strumento, puoi avere la certezza che la tua app interagisce con chiavi che risiedono in hardware sicuro, anche se il dispositivo che la tua app è rooted. Se utilizzi chiavi provenienti dall'archivio chiavi supportato da hardware nelle tue app, ti consigliamo di usare questo strumento, in particolare se usi i tasti per verificare le informazioni sensibili all'interno dell'app.

L'attestazione delle chiavi consente di verificare che una coppia di chiavi RSA o EC sia stata vengono create e archiviate nell'archivio chiavi basato sull'hardware di un dispositivo all'interno del un ambiente di esecuzione affidabile. Lo strumento ti consente inoltre di utilizzare da un servizio esterno al dispositivo, come il server back-end dell'app, per determinare e verificare attentamente gli usi e la validità della coppia di chiavi. Queste funzioni offrono un ulteriore livello di sicurezza che protegge la coppia di token, anche se esegue il rooting del dispositivo o compromette la sicurezza della piattaforma Android sul dispositivo.

Nota: solo un numero limitato di dispositivi con Android 7.0 supportare l’attestazione chiave a livello di hardware; Tutti gli altri dispositivi con Android 7.0 utilizza invece l'attestazione della chiave a livello di software. Prima di verificare le proprietà delle chiavi basate su hardware di un dispositivo in un ambiente a livello di produzione, deve assicurarsi che il dispositivo supporti l'attestazione della chiave a livello di hardware. A devi verificare che la catena di certificati di attestazione contenga un indirizzo firmato dalla chiave radice di attestazione di Google e che Elemento attestationSecurityLevel nella chiave descrizione sia impostata sul livello di sicurezza di TrustedEnvironment livello.

Per ulteriori informazioni, consulta Attestazione chiave documentazione per gli sviluppatori.

Configurazione della sicurezza di rete

In Android 7.0, le app possono personalizzare il comportamento della protezione (HTTPS, TLS) connessioni in modo sicuro, senza alcuna modifica al codice, utilizzando il modello Configurazione della sicurezza di rete anziché utilizzare la configurazione API di pubblicità programmatica soggette a errori (ad es. X509TrustManager).

Funzionalità supportate:

  • Link di attendibilità personalizzati. Consente a un'applicazione di personalizzare Le autorità di certificazione (CA) sono ritenute attendibili per le connessioni protette. Per ad esempio il fatto di considerare attendibili determinati certificati autofirmati o un insieme limitato di CA pubbliche.
  • Override del solo debug. Consente a uno sviluppatore di applicazioni di eseguire il debug in modo sicuro le connessioni sicure della loro applicazione senza ulteriori rischi base.
  • Disattivazione del traffico con testo in chiaro. Consente a un'applicazione di proteggersi utilizzo accidentale di traffico con testo in chiaro.
  • Blocco dei certificati. Una funzionalità avanzata che consente a un'applicazione limitare le chiavi server ritenute attendibili per le connessioni sicure.

Per ulteriori informazioni, vedi Configurazione della sicurezza di rete.

Autorità di certificazione attendibile predefinita

Per impostazione predefinita, le app destinate ad Android 7.0 considerano attendibili solo i certificati forniti dal sistema e non considerano più attendibile le autorità di certificazione (CA) aggiunte dagli utenti. App che hanno come target Android 7.0 (livello API 24) che vogliono fidarsi delle CA aggiunte dagli utenti devono utilizzare lo Configurazione della sicurezza di rete su per specificare come devono essere attendibili le CA dell'utente.

Schema di firma dell'APK v2

Android 7.0 introduce lo schema di firma dell'APK v2, un nuovo schema di firma dell'app che offre tempi di installazione delle app più rapidi e una maggiore protezione contro modifiche ai file APK. Per impostazione predefinita, Android Studio 2.2 e la versione Il plug-in per Gradle 2.2 firma la tua app utilizzando sia lo schema di firma dell'APK v2 che il tradizionale schema di firma, che usa la firma JAR.

Anche se consigliamo di applicare lo schema di firma dell'APK v2 alla tua app, questa nuova non è obbligatorio. Se la tua app non viene creata correttamente quando utilizzi l'APK schema di firma v2, puoi disabilitare il nuovo schema. La procedura di disattivazione fa sì che Android Studio 2.2 e il plug-in Android per Gradle 2.2 firmino usando solo lo schema di firma tradizionale. Per firmare solo con schema tradizionale, apri il file build.gradle a livello di modulo, quindi aggiungi la riga v2SigningEnabled false alla firma della release configurazione:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

Attenzione: se firmi l'app utilizzando l'APK schema di firma v2 e apportare ulteriori modifiche all'app, alla firma dell'app invalidato. Per questo motivo, utilizza strumenti come zipalign prima di firmare l'app utilizzando lo schema di firma dell'APK v2, non dopo.

Per ulteriori informazioni, leggi i documenti di Android Studio che descrivono come firmare un'app in Android Studio e come configurarla il file di build per la firma delle app con il plug-in Android per Gradle.

Accesso alla directory con ambito

In Android 7.0, le app possono utilizzare nuove API per richiedere l'accesso a di archiviazione, incluse le directory su supporti rimovibili come schede. Le nuove API semplificano notevolmente il modo in cui la tua applicazione accede allo standard directory di archiviazione esterne, ad esempio la directory Pictures. App app per le foto possono usare queste API invece di usare READ_EXTERNAL_STORAGE, che concede l'accesso a tutto lo spazio di archiviazione o Storage Access Framework, che consente all'utente di accedere nella directory.

Inoltre, le nuove API semplificano i passaggi seguiti da un utente per concedere l'accesso allo spazio di archiviazione per la tua app. Quando utilizzi le nuove API, il sistema utilizza una semplice UI delle autorizzazioni che specifichi chiaramente la directory in cui si trova l'applicazione richiedendo l'accesso.

Per ulteriori informazioni, consulta Ambito Accesso alla directory per gli sviluppatori.

Assistente scorciatoie da tastiera

In Android 7.0, l'utente può premere Meta + / per attivare un'opzione Schermata Scorciatoie da tastiera che mostra tutte le scorciatoie disponibili dal sistema e dall'app in primo piano. Il sistema recupera questi automaticamente dal menu dell'app, se esistono. Puoi fornisce anche elenchi di scorciatoie ottimizzati per lo schermo. Cosa puoi fare eseguendo l'override del metodo onProvideKeyboardShortcuts().

Nota: la chiave Meta non è presente su tutte tastiere: su una tastiera Macintosh, è il tasto Comando, sulla tastiera Windows, il tasto Windows, mentre Pixel C e le tastiere di ChromeOS, è il tasto Cerca.

Per attivare l'Assistente scorciatoie da tastiera da qualsiasi punto dell'app, chiama requestShowKeyboardShortcuts() dall'attività pertinente.

API Custom Pointer

Android 7.0 introduce l'API Custom Pointer, che consente di personalizzare l'aspetto, la visibilità e il comportamento del puntatore. Questa funzionalità è particolarmente utile quando un utente utilizza un mouse o un touchpad per interagire oggetti UI. Il puntatore predefinito utilizza un'icona standard. Questa API include anche di funzionalità avanzate, come la modifica dell'aspetto dell'icona del puntatore in caso di movimenti specifici del mouse o del touchpad.

Per impostare un'icona del puntatore, sostituisci onResolvePointerIcon() della classe View. Questo metodo utilizza un parametro PointerIcon per disegnare l'icona corrispondente a un di un determinato evento di movimento.

API Sustained Performance

Le prestazioni possono variare notevolmente per le app di lunga durata, poiché limita i motori system-on-chip quando i componenti del dispositivo raggiungono di temperatura ambiente. Questa fluttuazione rappresenta un bersaglio mobile per l'app sviluppatori che creano app di lunga durata e ad alte prestazioni.

Per far fronte a questi limiti, Android 7.0 include il supporto per modalità di esecuzione sostenuta, che consente agli OEM di fornire suggerimenti per le app di lunga durata. Sviluppatori di app puoi usare questi suggerimenti per ottimizzare le app e ottenere di prestazioni del dispositivo in modo costante per lunghi periodi di tempo.

Gli sviluppatori di app possono provare questa nuova API in Android 7.0 su Solo dispositivi Nexus 6P. Per usare questa funzionalità: imposta il flag della finestra di prestazioni sostenute per la finestra vuoi eseguire le prestazioni in modalità sostenuta. Imposta questo flag utilizzando Window.setSustainedPerformanceMode(). Il sistema esegue automaticamente disattiva questa modalità quando la finestra non è più attiva.

Supporto VR

Android 7.0 aggiunge supporto della piattaforma e ottimizzazioni per una nuova modalità VR che consente agli sviluppatori creare esperienze VR mobile di alta qualità per gli utenti. Ci sono vari tipi di prestazioni miglioramenti, incluso l'accesso a un core CPU esclusivo per le app VR. Nelle tue app puoi sfruttare il rilevamento intelligente della testa, e notifiche stereo che funzionano per la VR. Ma soprattutto, Android 7.0 offre le immagini con latenza molto bassa. Per informazioni complete sulla creazione di app VR per Android 7.0, consulta Google VR SDK per Android.

In Android 7.0, gli sviluppatori di servizi di stampa possono ora mostrare informazioni aggiuntive su singole stampanti e processi di stampa.

Quando vengono elencate singole stampanti, ora è possibile impostare un servizio di stampa per ciascuna stampante. in due modi:

Inoltre, puoi fornire un'attività per stampante per visualizzare ulteriori informazioni chiamando setInfoIntent().

Puoi indicare l'avanzamento e lo stato dei processi di stampa nel processo di stampa notifica chiamando setProgress() e rispettivamente setStatus().

API Frame Metrics

L'API Frame Metrics consente a un'app di monitorare il rendering dell'UI le prestazioni dei dispositivi. L'API fornisce questa funzionalità esponendo un'API Pub/Sub in modalità flusso per trasferire il frame informazioni sui tempi per la finestra attuale dell'app. I dati restituiti sono equivalente a quello visualizzato da adb shell dumpsys gfxinfo framestats, ma non è limitato agli ultimi 120 frame.

Puoi usare l'API Frame Metrics per misurare l'UI a livello di interazione in produzione, senza connessione USB. Questa API consente di raccogliere dati con una granularità molto più elevata rispetto a adb shell dumpsys gfxinfo. Questa granularità è possibile perché il sistema può raccogliere dati per determinate interazioni all'interno dell'app. il sistema non è necessario acquisire un riepilogo globale delle funzionalità le prestazioni o cancellare lo stato globale. Puoi utilizzare questo capacità di raccogliere dati sulle prestazioni e rilevare regressioni nelle prestazioni dell'interfaccia utente per casi d'uso reali all'interno di un'app.

Per monitorare una finestra, implementa la funzione OnFrameMetricsAvailableListener.onFrameMetricsAvailable() di callback e lo registri in quella finestra.

L'API fornisce un oggetto FrameMetrics, che contiene dati sui tempi segnalati dal sottosistema di rendering per vari obiettivi in un ciclo di vita di un frame. Le metriche supportate sono: UNKNOWN_DELAY_DURATION, INPUT_HANDLING_DURATION, ANIMATION_DURATION LAYOUT_MEASURE_DURATION, DRAW_DURATION, SYNC_DURATION COMMAND_ISSUE_DURATION, SWAP_BUFFERS_DURATION, TOTAL_DURATION e FIRST_DRAW_FRAME.

File virtuali

Nelle versioni precedenti di Android, la tua app poteva utilizzare Storage Access Framework per consentire agli utenti di selezionare file dai propri account Cloud Storage, come Google Drive. Tuttavia, non c'era modo per rappresentare i file che non hanno una rappresentazione bytecode diretta; che ogni file doveva fornire un flusso di input.

Android 7.0 aggiunge il concetto di file virtuali a Storage Access . La funzionalità dei file virtuali consente DocumentsProvider per restituire gli URI dei documenti che possono essere utilizzati con un intent ACTION_VIEW anche se non hanno una rappresentazione bytecode diretta. Android 7.0 ti consente inoltre di fornire formati alternativi per i file degli utenti, virtuali o di altro tipo.

Per ulteriori informazioni sull'apertura di file virtuali, vedi Apri i file virtuali nel Guida di Storage Access Framework.