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 attivate in Picture in picture , che consentono loro di continuare a mostrare i contenuti mentre l'utente naviga o interagisce con altre app.
Supporto multi-finestra, in particolare su tablet e altri dispositivi con schermi più grandi offre nuovi modi per coinvolgere gli utenti. Puoi anche attivare il trascinamento nella tua app per consentire agli utenti di trascinare facilmente i contenuti verso o dalla tua app, un ottimo modo 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 le dimensioni minime consentite per l'attività, impedendo agli utenti di ridimensionarla al di sotto di queste 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, il titolo della conversazione e la 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 azioni, come ignorare o archiviare, direttamente all'interno. 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.
Per scoprire come implementare le nuove funzionalità, consulta la guida alle notifiche.
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 gestisce un profilo dei metodi più utilizzati di ogni app e può precompilarli e memorizzarli nella cache per ottenere le migliori prestazioni. Lascia altre parti dell'app non ancora compilate fino al loro effettivo utilizzo.
Oltre a migliorare le prestazioni delle parti chiave dell'app, la compilazione basata su profilo contribuisce a ridurre l'impronta RAM complessiva di un'app, inclusi i file binari associati. Questa funzionalità è particolarmente importante sui dispositivi con poca memoria.
ART gestisce la compilazione basata su profilo in modo da ridurre al minimo l'impatto sulla 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.
Sospensione 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, in Android 7.0, Sospensione fa un passo avanti e risparmia la batteria quando sei in viaggio. Ogni volta che lo schermo è spento per un determinato periodo di tempo e il dispositivo è scollegato dalla corrente, la modalità Sospensione applica alle app un sottoinsieme delle consuete limitazioni per CPU e rete. Ciò significa che gli utenti possono risparmiare batteria anche quando portano i propri dispositivi al suo interno tasche.
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 brevi finestre di manutenzione, alle applicazioni è consentito l'accesso alla rete ed eventuali job/sincronizzazioni differiti 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 l'app a Sospensione sono le stesse indipendentemente dal movimento o meno del dispositivo, quindi se hai già aggiornato l'app per gestire correttamente la modalità 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 del modo in cui le app vengono eseguite 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 influire 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 soddisfare un maggior numero di
casi d'uso. Ad esempio, in Android 7.0 ora puoi programmare il lavoro
in background in base alle modifiche apportate ai 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 introduce il movimento sincrono nella classe SurfaceView
, che offre prestazioni della batteria migliori rispetto a TextureView
in alcuni casi: durante il rendering di video o contenuti 3D, le app con scorrimento e posizione video animata consumano meno energia con SurfaceView
rispetto a TextureView
.
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
Durante la vita utile di un dispositivo mobile, il costo di un piano dati cellulare in genere 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 degli shader di runtime SPIR-V
Vulkan è disponibile solo per le app su dispositivi con hardware compatibile, ad esempio Nexus 5X, Nexus 6P e Nexus Player. Stiamo collaborando strettamente con i nostri partner per portare Vulkan su più dispositivi il prima possibile.
Per ulteriori informazioni, consulta la documentazione dell'API.
API riquadro Impostazioni rapide
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 per smartphone 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 per le chiamate vengono bloccati anche per gli SMS
- I numeri bloccati possono essere mantenuti invariati dopo i reset e sui vari dispositivi tramite la funzionalità Backup e ripristino
- Più app possono utilizzare lo stesso elenco di numeri bloccati
Inoltre, l'integrazione delle app degli operatori tramite Android consente agli operatori di leggere l'elenco dei numeri bloccati sul dispositivo ed eseguire il blocco lato servizio per l'utente al fine di impedire che chiamate e messaggi indesiderati raggiungano l'utente tramite qualsiasi mezzo, ad esempio 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. L'app Telefono lo fa implementando il nuovo CallScreeningService
, che consente all'app di eseguire una serie di azioni in base al Call.Details
di una chiamata in arrivo, ad esempio:
- Rifiutare 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 multilingue, più lingue
Android 7.0 ora consente agli utenti di selezionare più lingue 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 ottenere l'elenco delle lingue 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 nel carattere di sistema, utilizza il metodo
hasGlyph(String)
. - Verifica che un'emoji supporti i selettori delle varianti. I selettori di variazioni ti consentono di presentare determinate 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 modifocatori della tonalità della pelle, utilizza il metodo
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 di 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 nel tracker 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 a testare le versioni pre-release di WebView su Android 7.0, scarica e installa Chrome Dev o Chrome Beta e selezionalo come implementazione di WebView nelle opzioni per gli sviluppatori, 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 del
Android Extension Pack (AEP), ad eccezione di
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, inclusa la verifica della versione di OpenGL ES supportata di un dispositivo in fase di esecuzione, 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 di sicurezza del profilo di lavoro
I proprietari di profili che hanno come target l'SDK N possono specificare una verifica di sicurezza separata per le app in esecuzione nel 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
da Impostazioni è disponibile solo se il client VPN ha come target il livello API 24.
Provisioning personalizzato
Un'applicazione può personalizzare i flussi di provisioning del proprietario del profilo e del proprietario del dispositivo con i colori e i 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, gli utenti possono scoprire e configurare molto più facilmente le funzionalità di accessibilità sui propri dispositivi, tra cui il gesto di ingrandimento, le dimensioni dei caratteri, le dimensioni del display 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 saperne di più, 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 assicura che i dati delle app criptati sul dispositivo registrati siano disponibili
prima dello sblocco. Tutti gli altri dati non sono disponibili finché l'utente non conferma le credenziali della schermata di blocco per decriptarli.
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 la documentazione per gli sviluppatori relativa alla Convalida delle chiavi.
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. Ad esempio, la fiducia in determinati certificati autofirmati o in un insieme limitato di CA pubbliche.
- Sostituzioni solo per il 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, consulta 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. Le app che hanno come target Android 7.0 (livello API 24) e che vogliono considerare attendibili le CA aggiunte dall'utente devono utilizzare la configurazione della sicurezza di rete per specificare in che modo devono essere considerate 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
come le 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
puoi anche creare 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 Ricerca.
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 che funzionano a lungo, perché il sistema riduce la velocità dei motori System-on-Chip quando i componenti del dispositivo raggiungono i limiti di temperatura. Questa fluttuazione rappresenta un bersaglio mobile per l'app sviluppatori che creano app di lunga durata e ad alte prestazioni.
Per risolvere questi problemi, Android 7.0 include il supporto della modalità di prestazioni sostenute, che consente agli OEM di fornire suggerimenti sulle funzionalità di prestazioni del dispositivo per le app che funzionano a lungo. 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 e notifiche stereo che funzionano per la VR. Soprattutto, Android 7.0 offre una grafica con latenza molto bassa. Per informazioni complete sulla creazione di app VR per Android 7.0, consulta Google VR SDK per Android.
Miglioramenti al servizio di stampa
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:
- Puoi impostare un'icona da un ID risorsa richiamando
setIconResourceId()
. - Puoi mostrare un'icona della rete chiamando
setHasCustomPrinterIcon()
, e impostare un callback per quando viene richiesta l'icona utilizzandoonRequestCustomPrinterIcon()
.
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 cancellerai lo stato globale. Puoi utilizzare questa funzionalità per raccogliere dati sul rendimento e rilevare le regressioni nel rendimento dell'interfaccia utente per casi d'uso reali all'interno di un'app.
Per monitorare una finestra, implementa il metodo callback
OnFrameMetricsAvailableListener.onFrameMetricsAvailable()
e registralo nella finestra in questione.
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 i file dai loro account di archiviazione sul cloud, 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 utente, virtuali o di altro tipo.
Per ulteriori informazioni sull'apertura di file virtuali, vedi Apri i file virtuali nel Guida di Storage Access Framework.