Android 10 introduce funzionalità e vantaggi eccezionali per utenti e sviluppatori. Questo documento mette in evidenza le funzionalità disponibili per gli sviluppatori.
Per scoprire di più sulle API, leggi il report sulle differenze delle API o consulta il riferimento all'API Android: cerca le API "aggiunte nel livello API 29". Inoltre, assicurati di controllare le modifiche al comportamento di Android 10 (per le app che hanno come target il livello API 29 e per tutte le app), nonché le modifiche relative alla privacy, per scoprire le aree in cui le modifiche alla piattaforma potrebbero influire sulle tue app.
Miglioramenti alla sicurezza
Android 10 introduce una serie di funzionalità di sicurezza, riassunte nelle sezioni seguenti.
Finestre di dialogo di autenticazione biometrica migliorate
Android 10 introduce i seguenti miglioramenti al supporto dell'autenticazione biometrica:
- Un controllo della funzionalità di autenticazione biometrica.
- Un meccanismo di riserva che consente a un utente di autenticarsi utilizzando il PIN, la sequenza o la password del dispositivo se non riesce ad autenticarsi tramite input biometrico.
- Un suggerimento che indica al sistema di non richiedere la conferma dell'utente dopo che l'utente si è autenticato utilizzando una modalità biometrica implicita. Ad esempio, potresti indicare al sistema che non è richiesta alcuna ulteriore conferma dopo che un utente si è autenticato utilizzando l'autenticazione volti.
Esegui il codice DEX incorporato direttamente dall'APK
A partire da Android 10, puoi chiedere alla piattaforma di eseguire il codice DEX incorporato direttamente dal file APK della tua app. Questa opzione può contribuire a prevenire un attacco se un malintenzionato riesce a manomettere il codice compilato localmente sul dispositivo.
Per ulteriori informazioni, consulta Eseguire il codice DEX incorporato direttamente dall'APK.
Supporto di TLS 1.3
Android 10 aggiunge il supporto per TLS 1.3. TLS 1.3 è una revisione importante dello standard TLS che include vantaggi in termini di prestazioni e maggiore sicurezza. I nostri benchmark indicano che con TLS 1.3 è possibile stabilire connessioni sicure fino al 40% più velocemente rispetto a TLS 1.2.
Per ulteriori dettagli sulla nostra implementazione di TLS 1.3, consulta la sezione TLS nella pagina delle modifiche al comportamento per tutte le app.
API Conscrypt pubblica
A partire da Android 10, il provider di sicurezza Conscrypt include un'API pubblica per la funzionalità TLS.
La raccolta di classi in android.net.ssl
contiene metodi statici per accedere alle funzionalità non disponibili nelle API javax.net.ssl
generiche. I nomi di queste classi possono essere dedotti come plurale
della classe javax.net.ssl
corrispondente. Ad esempio, il codice che opera su javax.net.ssl.SSLSocket
può utilizzare i metodi di SSLSockets
.
Funzionalità di connettività
Android 10 include diversi miglioramenti relativi alla rete e alla connettività.
API di connessione alla rete Wi-Fi
Android 10 aggiunge il supporto per le connessioni peer-to-peer. Questa
funzionalità consente alla tua app di chiedere all'utente di modificare il punto di accesso a cui è collegato il
dispositivo utilizzando
WifiNetworkSpecifier
per descrivere le proprietà di una rete richiesta. La connessione peer-to-peer viene utilizzata per scopi non di fornitura della rete, ad esempio la configurazione di bootstrap per dispositivi secondari come Chromecast e l'hardware Google Home.
Per ulteriori informazioni, consulta l'API Wi-Fi Network Request per la connettività peer-to-peer.
API di suggerimento di reti Wi-Fi
Android 10 aggiunge il supporto per consentire alla tua app di chiedere all'utente di connettersi a un punto di accesso Wi-Fi. Puoi fornire suggerimenti su quale rete collegare. Sarà la piattaforma a scegliere quale punto di accesso accettare in base all'input delle tue e di altre app.
Per saperne di più su questa funzionalità, consulta Suggerimento Wi-Fi.
Miglioramenti alle modalità Wi-Fi ad alte prestazioni e bassa latenza
Android 10 ti consente di fornire un suggerimento al modem sottostante per ridurre al minimo la latenza.
Android 10 estende l'API di blocco Wi-Fi per supportare efficacemente la modalità ad alte prestazioni e la modalità a bassa latenza. Il risparmio energetico del Wi-Fi è disattivato per le modalità ad alte prestazioni e a bassa latenza e un'ulteriore ottimizzazione della latenza può essere attivata in modalità a bassa latenza, a seconda del supporto del modem.
La modalità a bassa latenza viene attivata solo quando l'applicazione che acquisisce il blocco è in esecuzione in primo piano e lo schermo è attivo. La modalità a bassa latenza è particolarmente utile per le applicazioni di giochi mobile in tempo reale.
Ricerche specializzate nel resolver DNS
Android 10 aggiunge il supporto nativo per le ricerche DNS specializzate utilizzando sia le ricerche in testo non cifrato sia la modalità DNS su TLS. In precedenza, il resolver DNS della piattaforma supportava solo i record A e AAAA, che consentono di cercare solo gli indirizzi IP associati a un nome, ma non supportava altri tipi di record.
L'API DnsResolver
fornisce una risoluzione generica e asincrona, che ti consente di cercare SRV
, NAPTR
e altri tipi di record. Tieni presente che l'analisi della risposta è lasciata all'app.
Per le app basate su NDK, consulta
android_res_nsend
.
Wi-Fi Easy Connect
Android 10 ti consente di utilizzare Easy Connect per eseguire il provisioning delle credenziali Wi-Fi su un dispositivo peer, in sostituzione del protocollo WPS, che è stato ritirato.
Le app possono integrare Easy Connect nel flusso di configurazione e provisioning utilizzando
l'intent
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
.
Per saperne di più su questa funzionalità, consulta Wi-Fi Easy Connect.
API di connessione Wi-Fi Direct
Le classi API WifiP2pConfig
e WifiP2pManager
sono state aggiornate in Android 10 per supportare le funzionalità di creazione rapida di connessioni a Wi-Fi Direct utilizzando informazioni predeterminate. Queste informazioni vengono condivise tramite un canale secondario, come Bluetooth o NFC.
Il seguente esempio di codice mostra come creare un gruppo utilizzando informazioni predeterminate:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
Per partecipare a un gruppo utilizzando le credenziali, sostituisci manager.createGroup()
con quanto segue:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Canali Bluetooth LE orientati alla connessione (CoC)
Android 10 consente alla tua app di utilizzare le connessioni CoC BLE per trasferire stream di dati più grandi tra due dispositivi BLE. Questa interfaccia esegue l'astrazione delle meccaniche di Bluetooth e connettività per semplificare l'implementazione.
Funzionalità di telefonia
Android 10 include diversi miglioramenti relativi alla telefonia.
Miglioramenti alla qualità delle chiamate
Android 10 aggiunge la possibilità di raccogliere informazioni sulla qualità delle chiamate IMS (IP Multimedia Subsystem) in corso, inclusa la qualità verso e dalla rete, sui dispositivi che supportano la funzionalità.
Filtro delle chiamate e ID chiamante
Android 10 fornisce alla tua app un mezzo per identificare le chiamate non presenti nella rubrica dell'utente come potenziali chiamate indesiderate e per rifiutarle silenziosamente per conto dell'utente. Le informazioni su queste chiamate bloccate vengono registrate come chiamate bloccate nel registro chiamate per offrire maggiore trasparenza all'utente quando mancano chiamate. L'utilizzo di questa API elimina il requisito di ottenere dall'utente le autorizzazioni READ_CALL_LOG
per fornire la funzionalità di identificazione delle chiamate e di controllo delle chiamate.
API del servizio di reindirizzamento delle chiamate
Android 10 modifica la modalità di gestione degli intent di chiamata. La trasmissione NEW_OUTGOING_CALL
è deprecata e viene sostituita dall'API CallRedirectionService
. L'API CallRedirectionService
fornisce interfacce per modificare le chiamate in uscita effettuate dalla piattaforma Android. Ad esempio, le app di terze parti potrebbero annullare le chiamate e reindirizzarle tramite VoIP.
Miglioramenti alla creazione di file sullo spazio di archiviazione esterno
Oltre a introdurre l'archiviazione mirata, Android 10 aggiunge le seguenti funzionalità relative allo spazio di archiviazione esterno:
- Puoi utilizzare il
IS_PENDING
flag per concedere alla tua app accesso esclusivo a un file multimediale durante la sua scrittura sul disco. - Se conosci una posizione specifica in cui devono essere archiviati i file, puoi fornire un suggerimento al sistema su dove archiviare i file appena scritti.
- Ogni dispositivo di archiviazione esterno ha un nome del volume univoco.
Contenuti multimediali e grafica
Android 10 introduce le seguenti nuove API e funzionalità multimediali e grafiche:
Condivisione dell'input audio
Android 10 aggiunge la possibilità per due app di condividere contemporaneamente l'input audio. Per informazioni complete, vedi Condividere l'input audio.
Acquisizione della riproduzione audio
Android 10 consente a un'app di acquisire la riproduzione audio da altre app. Per informazioni complete, vedi Acquisizione di riproduzione.
Barra di scorrimento nelle notifiche MediaStyle
A partire da Android 10, le notifiche di MediaStyle
mostrano una barra di scorrimento. La barra di ricerca mostra
l'avanzamento della riproduzione da
PlaybackState.getPosition()
,
e in alcuni casi può essere utilizzata per cercare una posizione nel
programma in riproduzione. L'aspetto e il comportamento della barra di scorrimento sono controllati da queste regole:
- La barra di scorrimento viene visualizzata se è presente un
MediaSession
attivo e la relativa durata (specificata daMediaMetadata.METADATA_KEY_DURATION
) è maggiore di zero. Ciò significa che la barra non viene visualizzata per stream indefiniti come live streaming e trasmissioni radiofoniche. - Se la sessione implementa
ACTION_SEEK_TO
, l'utente può trascinare la barra di ricerca per controllare la posizione di riproduzione.
API MIDI nativa
L'API MIDI nativa per Android (AMidi) consente agli sviluppatori di applicazioni di inviare e ricevere dati MIDI con codice C/C++, integrandosi più strettamente con la logica di controllo/audio C/C++ e riducendo al minimo la necessità di JNI.
Per ulteriori informazioni, consulta l'API Android Native MIDI.
Miglioramenti a MediaCodecInfo
Android 10 aggiunge metodi a MediaCodecInfo
che forniscono maggiori informazioni su un codec.
Per ulteriori informazioni, consulta Codec multimediali.
API Thermal
Quando i dispositivi si surriscaldano, potrebbero ridurre la velocità della CPU e/o della GPU, il che può influire su app e giochi in modi imprevisti. Le app che utilizzano grafica complessa, calcoli pesanti o attività di rete prolungate hanno maggiori probabilità di riscontrare problemi, che possono variare da un dispositivo all'altro in base a chipset e frequenze dei core, livelli di integrazione, nonché confezionamento e fattore di forma del dispositivo.
In Android 10, le app e i giochi possono utilizzare un'API termica per monitorare le modifiche sul dispositivo e intervenire per mantenere un consumo energetico ridotto e ripristinare la temperatura normale. Le app registrano un ascoltatore in PowerManager, tramite il quale il sistema segnala lo stato termico in corso da lieve e moderato a grave, critico, di emergenza e di arresto.
Quando il dispositivo segnala uno stress termico, le app e i giochi possono essere d'aiuto riducendo le attività in corso per ridurre il consumo di energia in vari modi. Ad esempio, le app di streaming potrebbero ridurre la risoluzione/la velocità in bit o il traffico di rete, un'app per la fotocamera potrebbe disattivare il flash o il miglioramento intensivo delle immagini, un gioco potrebbe ridurre la frequenza dei fotogrammi o la tessellatura dei poligoni, un'app multimediale potrebbe ridurre il volume dello speaker e un'app di mappe potrebbe disattivare il GPS.
L'API Thermal richiede un nuovo livello HAL del dispositivo. Al momento è supportata su Pixel con Android 10 e stiamo collaborando con i nostri partner produttori di dispositivi per offrire il supporto più ampio possibile all'ecosistema il più rapidamente possibile.
Fotocamera e immagini
Android 10 introduce le seguenti nuove funzionalità relative a fotocamere e immagini:
Supporto della videocamera monocromatica
Android 9 (livello API 28) ha introdotto per la prima volta la funzionalità della fotocamera monocromatica. Android 10 aggiunge diversi miglioramenti al supporto delle fotocamere monocromatiche:
- Supporto del formato dello stream Y8 per migliorare l'efficienza della memoria.
- Supporto per l'acquisizione di file DNG raw monocromatici.
- Introduzione di enumerazioni CFA MONO e NIR per distinguere tra fotocamera monocromatica normale e fotocamere a infrarossi vicini.
Puoi utilizzare questa funzionalità per acquisire un'immagine monocromatica nativa. Un dispositivo con più fotocamere logiche può utilizzare una fotocamera monocromatica come fotocamera secondaria fisica per ottenere una migliore qualità delle immagini in condizioni di scarsa illuminazione.
Formato della profondità di campo dinamica
A partire da Android 10, le fotocamere possono memorizzare i dati di profondità di un'immagine in un file distinto utilizzando un nuovo schema chiamato DDF (Dynamic Depth Format). Le app possono richiedere sia l'immagine JPG sia i relativi metadati di profondità, utilizzando queste informazioni per applicare l'effetto sfocatura che preferiscono in post-produzione senza modificare i dati dell'immagine originale.
Per leggere la specifica di questo formato, consulta Formato di profondità dinamica.
Formato file immagine ad alta efficienza
Il formato High Efficiency Image File (HEIF) è un formato standard di immagini e video che introduce una codifica di qualità superiore e dimensioni dei file più ridotte rispetto agli altri formati di file.
Per ulteriori informazioni sul formato file, consulta HEIC.
Miglioramenti alla modalità multicamera
Android 10 migliora l'unione di più fotocamere in un'unica fotocamera logica, una funzionalità introdotta in Android 9 (livello API 28). I seguenti elementi sono stati aggiunti all'API Camera2:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: consente di eseguire query per verificare se la configurazione della sessione passata può essere utilizzata per creare una sessione di acquisizione della fotocamera.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: consente di determinare l'ID della videocamera fisica attiva che supporta un dispositivo videocamera logico. Puoi utilizzare gli ID restituiti per richiedere stream logici e stream di sottocamere fisiche per ottenere una maggiore efficienza energetica.
API Accessibility Services
Android 10 introduce le seguenti nuove API e funzionalità del servizio di accessibilità:
Flag della chiave di accesso AccessibilityNodeInfo
A partire da Android 10, puoi chiamare
isTextEntryKey()
per determinare se un determinato AccessibilityNodeInfo
rappresenta un tasto di inserimento di testo
che fa parte di una tastiera o di un tastierino.
Feedback vocale della finestra di dialogo Accessibilità
Se gli utenti devono eseguire la scorciatoia di accessibilità per avviare un servizio di accessibilità, Android 10 consente di accompagnare la finestra di dialogo con un prompt di sintesi vocale, se il servizio lo richiede.
Scorciatoia Accessibilità quando è attiva la navigazione con i gesti
Quando la funzionalità di navigazione con gesti è attivata in Android 10, il pulsante di accessibilità non è visibile o selezionabile. Per accedere al menu dei servizi di accessibilità, gli utenti devono eseguire uno dei seguenti gesti:
- Scorri verso l'alto con due dita.
- Scorri verso l'alto con due dita e tieni premuto.
Scorciatoia Accessibilità per le tastiere fisiche
In Android 10, gli utenti possono attivare la scorciatoia di accessibilità su una tastiera fisica premendo Ctrl+Alt+Z.
Miglioramento del controller della tastiera software
In Android 10, i servizi di accessibilità possono richiedere la visualizzazione della tastiera virtuale anche quando il dispositivo rileva una tastiera fisica collegata. Gli utenti possono ignorare questo comportamento.
Tempo di attesa dell'accessibilità definito dall'utente
Android 10 introduce l'API
getRecommendedTimeoutMillis()
. Questo metodo supporta i timeout definiti dall'utente per gli elementi dell'interfaccia utente interattivi e non interattivi. Il valore restituito è influenzato sia dalle preferenze dell'utente sia dalle API di servizi di accessibilità.
Miglioramenti alla compilazione automatica
Android 10 include i seguenti miglioramenti al servizio di compilazione automatica.
Richieste di compilazione automatica relative alla compatibilità
Puoi utilizzare il flag FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
per determinare se è stata generata una richiesta di compilazione automatica tramite la modalità di compatibilità.
Salvare contemporaneamente nome utente e password
Puoi supportare i casi in cui un'applicazione utilizza più attività per visualizzare nome utente, password e altri campi utilizzando il flag SaveInfo.FLAG_DELAY_SAVE
.
Interazione dell'utente con l'interfaccia utente di Salva
Puoi mostrare e nascondere un campo della password in una finestra di dialogo di salvataggio impostando un gestore di eventi di azioni sulla finestra di dialogo e modificando la visibilità della visualizzazione remota della password corrispondente.
Supporto per l'aggiornamento dei set di dati
La compilazione automatica può aggiornare le password esistenti. Ad esempio, se un utente ha già memorizzato una password e ne salva una nuova, la compilazione automatica gli chiede di aggiornare la password esistente anziché salvarne una nuova.
Miglioramenti alla classificazione dei campi
Android 10 contiene i seguenti miglioramenti all'API Field Classification.
Costruttore UserData.Builder
Il constructor
UserData.Builder
è stato modificato per allinearsi meglio al pattern Builder
.
Consentire la mappatura di un valore a più tipi di ID categoria
Quando utilizzi
UserData.Builder
in
Android 10, ora puoi mappare un valore a più tipi di ID categoria. Nelle release precedenti, veniva lanciata un'eccezione se un valore veniva aggiunto più di una volta.
Supporto migliorato per i numeri di carte di credito
La classificazione dei campi ora può rilevare numeri di quattro cifre come le ultime quattro cifre di un numero di carta di credito.
Supporto per la classificazione dei campi specifici per app
Android 10 aggiunge
FillResponse.setUserData()
,
che consente di impostare i dati utente specifici dell'app per la durata della sessione.
In questo modo, il servizio di compilazione automatica può rilevare i tipi per i campi con contenuti specifici per l'app.
Controlli di sistema e UI
Android 10 offre i seguenti miglioramenti all'interfaccia utente:
Supporta i limiti di PopFrame JVMTI
Android 10 aggiunge il supporto della funzionalità
can_pop_frames
nell'implementazione JVMTI di Android. Durante il debug, questa funzionalità consente di eseguire nuovamente le funzioni dopo aver interrotto in un punto di interruzione e aver modificato variabili locali, globali o l'implementazione di una funzione. Per ulteriori informazioni, consulta la pagina di riferimento del frame popup di Oracle.
API di controllo della superficie
Android 10 fornisce un'API SurfaceControl
per l'accesso a basso livello al compositore di sistema (SurfaceFlinger
). Per la maggior parte degli utenti, SurfaceView è il modo corretto per sfruttare il compositore. L'API SurfaceControl
può essere utile in alcuni casi, ad esempio:
- Sincronizzazione di più piattaforme
- Embedding di superfici tra processi
- Gestione del lifetime di livello inferiore
L'API SurfaceControl
è disponibile sia nelle associazioni SDK sia in quelle NDK.
L'implementazione NDK include un'API per lo scambio manuale dei buffer con il compositore. Questa è un'alternativa per gli utenti che hanno riscontrato le limitazioni di BufferQueue
.
Rilevamento di un renderer di WebView bloccato
Android 10 introduce la classe astratta
WebViewRenderProcessClient
che le app possono utilizzare per rilevare se un
WebView
ha smesso di rispondere. Per
utilizzare questo corso:
- Definisci la tua sottoclasse e implementa i suoi metodi
onRenderProcessResponsive()
eonRenderProcessUnresponsive()
. - Collega un'istanza di
WebViewRenderProcessClient
a uno o più oggettiWebView
. - Se il
WebView
non risponde, il sistema chiama il metodoonRenderProcessUnresponsive()
del cliente, passandoWebView
eWebViewRenderProcess
. SeWebView
è a un solo processo, il parametroWebViewRenderProcess
è nullo. La tua app può intraprendere l'azione appropriata, ad esempio mostrare all'utente una finestra di dialogo che chiede se vuole interrompere il processo di rendering.
Se WebView
non risponde, il sistema chiama onRenderProcessUnresponsive()
periodicamente (non più di una volta ogni cinque secondi), ma non esegue altre azioni.
Se WebView
diventa di nuovo reattivo, il sistema chiama onRenderProcessResponsive()
una sola volta.
Pannelli delle impostazioni
Android 10 introduce i pannelli delle impostazioni, un'API che consente alle app di mostrare le impostazioni agli utenti nel contesto della loro app. In questo modo, gli utenti non devono accedere alle Impostazioni per modificare elementi come il NFC o la rete dati per poter utilizzare l'app.
Ad esempio, supponiamo che un utente apra un browser web mentre il dispositivo è in modalità aereo. Prima di Android 10, l'app poteva mostrare solo un messaggio generico che chiedeva all'utente di aprire le Impostazioni per ripristinare la connettività. Con Android 10, l'app del browser può mostrare un riquadro in linea che mostra le impostazioni di connettività principali, come la modalità aereo, il Wi-Fi (incluse le reti nelle vicinanze) e i dati mobili. Con questo riquadro, gli utenti possono ripristinare la connettività senza uscire dall'app.
Per visualizzare un riquadro delle impostazioni, attiva un'intent con una delle seguenti azioni
Settings.Panel
:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type
può essere uno dei seguenti:
ACTION_INTERNET_CONNECTIVITY
- Mostra le impostazioni relative alla connettività a internet, ad esempio la modalità aereo, il Wi-Fi e i dati mobili.
ACTION_WIFI
- Mostra le impostazioni Wi-Fi, ma non le altre impostazioni di connettività. Questa opzione è utile per le app che richiedono una connessione Wi-Fi per eseguire caricamenti o download di grandi dimensioni.
ACTION_NFC
- Mostra tutte le impostazioni relative alla tecnologia di comunicazione a corto raggio (NFC) .
ACTION_VOLUME
- Mostra le impostazioni del volume per tutti gli stream audio.
Miglioramenti alla condivisione
Android 10 offre una serie di miglioramenti alla condivisione:
API Sharing Shortcuts
L'API Sharing Shortcuts sostituisce le API Direct Share.
Anziché recuperare i risultati in modo reattivo su richiesta, l'API Sharing Shortcuts consente alle app di pubblicare in anticipo i target di condivisione diretta. Ecco come funziona ShortcutManager
.
Poiché le due API sono simili, abbiamo ampliato l'ShortcutInfo
API per semplificare l'utilizzo di entrambe le funzionalità. Con l'API Shortcuts per la condivisione, puoi assegnare direttamente categorie o persone a un target di condivisione. I target di condivisione rimangono nel sistema
fino a quando la stessa app non li aggiorna o non viene disinstallata.
Il precedente meccanismo di condivisione diretta funziona ancora, ma le app che lo utilizzano hanno una priorità inferiore rispetto alle app che utilizzano l'API Shortcuts for Sharing.
ShortcutInfo.Builder
aggiunge e migliora i metodi per fornire informazioni aggiuntive sul target di condivisione.
Target di condivisione diretta
Puoi pubblicare una scorciatoia dinamica come target di condivisione diretta. Vedi Pubblicare i target di condivisione diretta.
ShortcutManagerCompat
è una nuova API AndroidX che fornisce compatibilità con le versioni precedenti dell'API DirectShare. Questo è il metodo preferito per pubblicare i target di condivisione.
Visualizzare l'anteprima del testo
Quando un'app condivide contenuti di testo, può mostrare un'anteprima facoltativa dei contenuti nell'interfaccia utente della scheda di condivisione.
Consulta Aggiungere anteprime in formato RTF
Scopri di più
Per saperne di più su come le app possono condividere dati, consulta Inviare dati semplici ad altre app e Ricevere dati semplici da altre app.
Tema scuro
Android 10 offre un tema scuro che si applica sia all'interfaccia utente del sistema Android sia alle app in esecuzione sul dispositivo. Per informazioni complete, consulta la sezione Tema scuro.
Tipi di servizi in primo piano
Android 10 introduce l'attributo manifest XML foregroundServiceType
, che devi includere nella definizione di diversi servizi specifici. È possibile, anche se raramente opportuno, assegnare più tipi di servizi in primo piano a un determinato servizio.
La tabella seguente mostra i diversi tipi di servizi in primo piano e i servizi in cui è opportuno dichiarare un tipo specifico:
Tipo di servizio in primo piano | Caso d'uso di esempio per un servizio che deve dichiarare questo tipo |
---|---|
connectedDevice
| Monitorare un fitness tracker indossabile |
dataSync
| Scaricare file da una rete |
location
| Continuare un'azione avviata dall'utente |
mediaPlayback
| Riprodurre un audiolibro, un podcast o della musica |
mediaProjection
| Registra un video del display del dispositivo per un breve periodo di tempo |
phoneCall
| Gestire una chiamata in corso |
Kotlin
Android 10 include i seguenti aggiornamenti per lo sviluppo in Kotlin.
Annotazioni di nullità per le API libcore
Android 10 migliora la copertura delle annotazioni di nullità nell'SDK per le API libcore. Queste annotazioni consentono agli sviluppatori di app che utilizzano l'analisi della nullità di Kotlin o Java in Android Studio di ottenere informazioni sulla nullità quando interagiscono con queste API.
In genere, le violazioni del contratto di nullità in Kotlin comportano errori di compilazione. Per garantire la compatibilità con il codice esistente, vengono aggiunte solo le annotazioni @RecentlyNullable
e @RecentlyNonNull
. Ciò significa che le violazioni della nullabilità generano avvisi anziché errori.
Inoltre, tutte le annotazioni @RecentlyNullable
o @RecentlyNonNull
aggiunte in Android 9 diventeranno rispettivamente @Nullable
e @NonNull
.
Ciò significa che, in Android 10 e versioni successive, le violazioni della nullabilità
portano a errori anziché ad avvisi.
Per ulteriori informazioni sulle modifiche alle annotazioni, consulta Android Pie SDK è ora più compatibile con Kotlin sul Blog per sviluppatori Android.
NDK
Android 10 include le seguenti modifiche all'NDK.
Miglioramento del debug della proprietà dei descrittori file
Android 10 aggiunge fdsan, che ti aiuta a trovare e correggere più facilmente i problemi di proprietà dei descrittori file.
I bug relativi alla gestione errata della proprietà dei descrittori file, che tendono a manifestarsi come uso dopo chiusura e doppia chiusura, sono analoghi ai bug di allocazione della memoria uso dopo svuotamento e doppio svuotamento, ma tendono a essere molto più difficili da diagnosticare e correggere. fdsan tenta di rilevare e/o prevenire la gestione errata dei descrittori file imponendo la proprietà dei descrittori file.
Per ulteriori informazioni sugli arresti anomali correlati a questi problemi, consulta Errore rilevato da fdsan. Per ulteriori informazioni su fdsan, consulta la pagina di Googlesource su fdsan.
ELF TLS
Le applicazioni create utilizzando l'NDK con un livello API minimo 29 possono utilizzare ELF TLS
invece di emutls
. È stato aggiunto il supporto del linker dinamico e statico per supportare questo metodo di gestione delle variabili thread-local.
Per le app create per il livello API 28 e versioni precedenti, sono stati implementati miglioramenti per libgcc/compiler-rt
per aggirare alcuni problemi di emutls
.
Per ulteriori informazioni, consulta Modifiche ad Android per gli sviluppatori NDK.
Runtime
Android 10 include la seguente modifica del runtime.
Attivazione della garbage collection basata su Mallinfo
Quando piccoli oggetti Java della piattaforma fanno riferimento a oggetti enormi nell'heap C++, gli oggetti C++ possono spesso essere recuperati solo quando l'oggetto Java viene raccolto e, ad esempio, finalizzato. Nelle release precedenti, la piattaforma stimava le dimensioni di molti oggetti C++ associati a oggetti Java. Questa stima non era sempre accurata e a volte ha comportato un notevole aumento dell'utilizzo della memoria, poiché la piattaforma non riusciva a eseguire la raccolta dei rifiuti quando avrebbe dovuto.
In Android 10, il garbage collector (GC) monitora le dimensioni totali
dell'heap allocata dal sistema malloc()
, assicurandosi che le allocazioni malloc()
di grandi dimensioni siano sempre incluse nei calcoli di attivazione del GC. Le app che intersecano gran numero di allocazioni C++ con l'esecuzione Java potrebbero registrare un aumento della frequenza della raccolta dei rifiuti. Altre app potrebbero registrare un lieve calo.
Test e debug
Android 10 include i seguenti miglioramenti per i test e il debug.
Miglioramenti al monitoraggio del sistema sul dispositivo
A partire da Android 10, puoi specificare limiti per le dimensioni e la durata di una traccia quando esegui una traccia di sistema sul dispositivo. Quando specifichi uno di questi valori, il sistema esegue una traccia lunga, copiando periodicamente il buffer della traccia nel file di destinazione durante la registrazione della traccia. La traccia viene completata quando vengono raggiunti i limiti di dimensioni o durata specificati.
Utilizza questi parametri aggiuntivi per testare casi d'uso diversi rispetto a quelli che testerai con una traccia standard. Ad esempio, potresti dover diagnosticare un bug di rendimento che si verifica solo dopo che l'app è in esecuzione per un lungo periodo di tempo. In questo caso, puoi registrare una traccia lunga per un'intera giornata e poi analizzare il programmatore della CPU, l'attività del disco, i thread dell'app e altri dati nel report per aiutarti a determinare la causa del bug.
In Android 10 e versioni successive, i file di traccia vengono salvati in un formato che può essere aperto con Perfetto, un progetto open source per la misurazione e il monitoraggio delle prestazioni. Puoi convertire i file di traccia di Perfetto nel formato Systrace.
Miglioramenti a TextClassifier
Android 10 offre funzionalità aggiuntive di classificazione del testo nell'interfaccia
TextClassifier
.
Rilevamento della lingua
Il metodo
detectLanguage()
funziona in modo simile ai metodi di classificazione esistenti in precedenza. Riceve un oggetto TextLanguage.Request
e restituisce un oggetto TextLanguage
.
Gli oggetti TextLanguage
sono costituiti da un elenco di coppie ordinate. Ogni coppia contiene una lingua e un punteggio di affidabilità corrispondente per la classificazione.
Azioni conversazionali suggerite
Il metodo
suggestConversationActions()
funziona in modo simile ai metodi di classificazione esistenti. Riceve un oggetto
ConversationActions.Request
e restituisce un oggetto
ConversationActions
.
Gli oggetti ConversationActions
sono costituiti da un elenco di oggetti ConversationAction
. Ogni oggetto ConversationAction
include un'azione
suggerita potenziale e il relativo punteggio di confidenza.
Risposte rapide/azioni nelle notifiche
Android 9 ha introdotto la possibilità di visualizzare le risposte suggerite all'interno di una notifica. Android 10 amplia questa funzionalità con la possibilità di includere azioni suggerite in base all'intenzione. Inoltre, la piattaforma è in grado di generare automaticamente questi suggerimenti. Le app possono comunque fornire i propri suggerimenti o disattivare quelli generati dal sistema.L'API utilizzata per generare queste risposte fa parte di
TextClassifier
,
e in Android 10 è stata esposta direttamente agli sviluppatori.
Per ulteriori informazioni, consulta la sezione relativa ai miglioramenti di TextClassifier.
Se la tua app fornisce i propri suggerimenti, la piattaforma non genera alcun suggerimento automatico. Se non vuoi che le notifiche della tua app mostrino risposte o azioni suggerite, puoi disattivare le risposte e le azioni generate dal sistema utilizzando setAllowGeneratedReplies()
e setAllowSystemGeneratedContextualActions()
.