Android 10 introduce fantastiche funzionalità per utenti e sviluppatori. Questo documento illustra ciò che è disponibile per gli sviluppatori.
Per saperne di più sulle API, leggi il report Differenze API o consulta il riferimento API Android: cerca le API che sono state "aggiunte nel livello API 29". Inoltre, assicurati di verificare 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 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.
Migliori finestre di dialogo per l'autenticazione biometrica
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 eseguire l'autenticazione utilizzando il PIN, la sequenza o la password del dispositivo se non è in grado di autenticarsi tramite l'input biometrico.
- 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 dire al sistema che non devono essere necessarie ulteriori conferme dopo che un utente ha eseguito l'autenticazione utilizzando l'autenticazione facciale.
Esegui codice DEX incorporato direttamente dall'APK
A partire da Android 10, puoi indicare alla piattaforma di eseguire il codice DEX incorporato direttamente dal file APK dell'app. Questa opzione consente di prevenire un attacco nel caso in cui un utente malintenzionato sia riuscito a manomettere il codice compilato localmente sul dispositivo.
Per maggiori informazioni, consulta Eseguire codice DEX incorporato direttamente dall'APK.
Supporto di TLS 1.3
Android 10 aggiunge il supporto per TLS 1.3. TLS 1.3 è un'importante revisione dello standard TLS che include vantaggi in termini di prestazioni e sicurezza avanzata. I nostri benchmark indicano che le connessioni sicure possono essere stabilite fino al 40% più velocemente con TLS 1.3 rispetto a TLS 1.2.
Per maggiori dettagli sulla nostra implementazione di TLS 1.3, consulta la sezione relativa a TLS nella pagina relativa alle modifiche del comportamento per tutte le app.
API Public Conscrypt
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 a 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 sulle istanze di javax.net.ssl.SSLSocket
può utilizzare invece i metodi di SSLSockets
.
Funzionalità di connettività
Android 10 include diversi miglioramenti relativi a networking e connettività.
API Wi-Fi network connection
Android 10 aggiunge il supporto per le connessioni peer-to-peer, Questa funzionalità consente alla tua app di richiedere all'utente di modificare il punto di accesso a cui è connesso il dispositivo utilizzando WifiNetworkSpecifier
per descrivere le proprietà di una rete richiesta. La connessione peer-to-peer è utilizzata per scopi non correlati alla rete, ad esempio per configurare il bootstrap per dispositivi secondari come Chromecast e l'hardware Google Home.
Per ulteriori informazioni, consulta la pagina relativa all'API Wi-Fi Network Request per la connettività peer-to-peer.
API suggerimento rete Wi-Fi
Android 10 aggiunge il supporto della tua app per richiedere all'utente di connettersi a un punto di accesso Wi-Fi. Puoi fornire suggerimenti sulla rete a cui connetterti. La piattaforma sceglierà in ultima analisi il punto di accesso da accettare in base all'input della tua app e di quella di altre app.
Per ulteriori informazioni su questa funzionalità, vedi Suggerimento per il Wi-Fi.
Miglioramenti alle modalità Wi-Fi ad alte prestazioni e a bassa latenza
Android 10 consente di fornire un suggerimento al modem di base per ridurre al minimo la latenza.
Android 10 estende l'API di blocco Wi-Fi per supportare in modo efficace la modalità ad alte prestazioni e la modalità a bassa latenza. Il risparmio energetico del Wi-Fi è disattivato per la modalità ad alte prestazioni e a bassa latenza, ed è possibile che in modalità a bassa latenza sia attivata un'ulteriore ottimizzazione della latenza, in base al 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 gioco mobile in tempo reale.
Ricerche specializzate nel resolver DNS
Android 10 aggiunge il supporto nativo per le ricerche DNS specializzate,
utilizzando sia ricerche in chiaro sia la modalità DNS-over-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 viene lasciata all'app per l'esecuzione.
Per le app basate su NDK, vedi
android_res_nsend
.
Connessione facile Wi-Fi
Android 10 ti consente di utilizzare Easy Connect per eseguire il provisioning delle credenziali Wi-Fi su un dispositivo peer, in sostituzione di WPS, che è stato ritirato.
Le app possono integrare Easy Connect nel loro flusso di configurazione e provisioning utilizzando
l'intent
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
.
Per ulteriori informazioni su questa funzionalità, consulta Wi-Fi Easy Connect.
API Wi-Fi Direct connection
Le classi API WifiP2pConfig
e WifiP2pManager
hanno aggiornamenti in Android 10 per supportare le funzionalità di connessione veloce a Wi-Fi Direct utilizzando informazioni predeterminate. Queste informazioni vengono condivise tramite un canale
secondario, ad esempio 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 unirti 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 (Connessione orientata alla connessione)
Android 10 consente alla tua app di utilizzare connessioni BLE CoC per trasferire flussi di dati più grandi tra due dispositivi BLE. Questa interfaccia astrae le meccaniche di Bluetooth e connettività per semplificarne l'implementazione.
Funzionalità di telefonia
Android 10 include diversi miglioramenti relativi alla telefonia.
Miglioramenti della qualità delle chiamate
Android 10 aggiunge la possibilità di raccogliere informazioni sulla qualità delle chiamate in corso di sottosistema IP Multimediale (IMS), inclusa la qualità da e verso la rete, sui dispositivi che supportano questa funzionalità.
Filtro delle chiamate e ID chiamante
Android 10 offre alla tua app un mezzo per identificare le chiamate non presenti nella rubrica dell'utente come potenziali chiamate indesiderate e per far sì che le chiamate indesiderate vengano rifiutate silenziosamente per conto dell'utente. Le informazioni su queste chiamate bloccate
vengono registrate come chiamate bloccate nel registro chiamate per fornire maggiore trasparenza
all'utente in caso di chiamate mancanti. L'utilizzo di questa API elimina il requisito
di ottenere all'utente le autorizzazioni READ_CALL_LOG
per fornire la funzionalità di filtro delle chiamate
e ID chiamante.
API del servizio di reindirizzamento delle chiamate
Android 10 cambia il modo in cui vengono gestiti gli 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 applicazioni di terze parti potrebbero annullare le chiamate e reindirizzarle tramite VoIP.
Miglioramenti alla creazione di file su unità di archiviazione esterna
Oltre ad introdurre l'archiviazione basata su ambito, Android 10 aggiunge le seguenti funzionalità relative all'archiviazione esterna:
- Puoi utilizzare il flag
IS_PENDING
per concedere all'app l'accesso esclusivo a un file multimediale scritto su disco. - Se conosci una posizione specifica in cui archiviare 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 in corso...
Android 10 aggiunge la possibilità per due app di condividere l'input audio contemporaneamente. Per informazioni complete, vedi Condivisione dell'input audio.
Acquisizione riproduzione audio
Android 10 consente a un'app di acquisire la riproduzione audio da altre app. Per informazioni complete, vedi Acquisizione durante la riproduzione.
Seekbar nelle notifiche di MediaStyle
A partire da Android 10, le notifiche di MediaStyle
mostrano una barra di scorrimento. La barra di scorrimento mostra l'avanzamento della riproduzione da PlaybackState.getPosition()
e, in alcuni casi, può essere utilizzata per cercare una posizione all'interno del programma di riproduzione. L'aspetto e il comportamento della barra di scorrimento sono controllati da queste regole:
- La barra di ricerca viene visualizzata se è presente un elemento
MediaSession
attivo e la sua durata (specificata daMediaMetadata.METADATA_KEY_DURATION
) è maggiore di zero. Ciò significa che la barra non compare per gli stream indeterminati come i live streaming e le trasmissioni radio. - Se la sessione implementa
ACTION_SEEK_TO
, l'utente può trascinare la barra di scorrimento per controllare il luogo di riproduzione.
API MIDI nativa
L'API Android Native MIDI (AMidi) offre agli sviluppatori di applicazioni la possibilità di inviare e ricevere dati MIDI con codice C/C++, integrandosi meglio con la logica di controllo audio/controllo C/C++ e riducendo al minimo la necessità di utilizzare JNI.
Per maggiori informazioni, vedi la pagina sull'API Android Native MIDI.
Miglioramenti a MediaCodecInfo
Android 10 aggiunge a MediaCodecInfo
metodi che rivelano ulteriori informazioni su un codec.
Per ulteriori informazioni, consulta la sezione Codec multimediali.
API Thermal
Se i dispositivi si scaldano troppo, possono limitare la CPU e/o la GPU, con ripercussioni su app e giochi in modi imprevisti. Le app che utilizzano grafica complessa, elaborazione intensiva o attività di rete prolungata hanno maggiori probabilità di incorrere in problemi, che possono variare da un dispositivo all'altro in base alle frequenze di chipset e di base, ai livelli di integrazione, nonché alla pacchettizzazione e al fattore di forma del dispositivo.
In Android 10, le app e i giochi possono usare un'API termica per monitorare le modifiche sul dispositivo e intervenire per mantenere un consumo di energia ridotto al fine di ripristinare la temperatura normale. Le app registrano un listener in PowerManager tramite il quale il sistema segnala lo stato termico in corso, che varia da leggero e moderato a grave, critico, emergenza e arresto.
Quando il dispositivo segnala stress termico, le app e i giochi possono aiutarti annullando le attività in corso per ridurre il consumo di energia in vari modi. Ad esempio, le app di streaming potrebbero ridurre la risoluzione/frequenza di bit o il traffico di rete, un'app Fotocamera potrebbe disattivare il miglioramento delle immagini flash o intensivo, un gioco potrebbe ridurre la frequenza fotogrammi o la tesselazione dei poligoni, un'app multimediale potrebbe ridurre il volume dell'altoparlante e un'app per le mappe potrebbe disattivare il GPS.
L'API termica richiede un nuovo livello HAL per i dispositivi: attualmente è supportato sui dispositivi Pixel con Android 10 e stiamo collaborando con i nostri partner produttori per offrire un ampio supporto all'ecosistema il più rapidamente possibile.
Fotocamera e immagini
Android 10 introduce le seguenti nuove funzionalità relative alla fotocamera e alle immagini:
Supporto per fotocamere monocromatiche
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 DNG non elaborata e monocromatica.
- Introduzione delle enumerazioni CFA MONO e NIR per distinguere tra videocamere monocromatiche normali e fotocamere a infrarossi vicini.
Puoi utilizzare questa funzione per acquisire un'immagine monocromatica nativa. Un dispositivo logico multicamera potrebbe utilizzare una fotocamera monocromatica come fotocamera secondaria fisica per ottenere una migliore qualità delle immagini in condizioni di scarsa illuminazione.
Formato di profondità dinamico
A partire da Android 10, le videocamere possono archiviare i dati sulla profondità di un'immagine in un file separato, utilizzando un nuovo schema chiamato Dynamic Depth Format (DDF). Le app possono richiedere sia l'immagine JPG sia i relativi metadati di profondità, utilizzando queste informazioni per applicare l'eventuale sfocatura desiderata durante la post-elaborazione senza modificare i dati dell'immagine originali.
Per leggere le specifiche per questo formato, consulta Formato dinamico della profondità.
Formato file immagine ad alta efficienza
Il formato HEIF (High Efficiency Image File) è un formato standard di immagini e video che introduce una codifica di qualità superiore e dimensioni file minori rispetto ad altri formati di file.
Per ulteriori informazioni sul formato file, consulta HEIC.
Miglioramenti in modalità multicamera
Android 10 migliora l'unione di più fotocamere in un'unica fotocamera logica, una funzionalità introdotta in Android 9 (livello API 28). All'API Camera2 sono stati aggiunti i seguenti elementi:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: consente di verificare se la configurazione della sessione passata può essere utilizzata o meno per creare una sessione di acquisizione con la fotocamera.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: consente di determinare l'ID della videocamera fisica attiva che supporta una videocamera logica. Puoi utilizzare gli ID restituiti per richiedere stream logici e streaming fisici della videocamera secondaria per 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 stabilire se un determinato AccessibilityNodeInfo
rappresenta un tasto di accesso di testo che fa parte di una tastiera o di un tastierino.
Funzione di lettura vocale della finestra di dialogo Accessibilità
Nel caso in cui gli utenti debbano utilizzare la scorciatoia di accessibilità per avviare un servizio di accessibilità, Android 10 consente alla finestra di dialogo di essere accompagnata da una richiesta di sintesi vocale, se il servizio lo richiede.
Scorciatoia di accessibilità quando la navigazione tramite gesti è attiva
Quando la funzionalità di navigazione tramite gesti è attiva in Android 10, il pulsante Accessibilità non è visibile o selezionabile. Per accedere al menu dei servizi di accessibilità, gli utenti devono eseguire uno dei seguenti gesti:
- Scorri con due dita verso l'alto.
- Scorri con due dita verso l'alto e tieni premuto.
Scorciatoia di 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 temporanea
In Android 10, i servizi di accessibilità possono richiedere la visualizzazione della tastiera software anche quando il dispositivo rileva una tastiera rigida collegata. Gli utenti possono ignorare questo comportamento.
Timeout dell'accessibilità definita dall'utente
Android 10 introduce l'API getRecommendedTimeoutMillis()
. Questo metodo fornisce supporto per i timeout definiti dall'utente per elementi UI interattivi e non interattivi. Il valore restituito è influenzato sia dalle preferenze
dell'utente sia dalle API del servizio di accessibilità.
Miglioramenti alla compilazione automatica
Android 10 contiene i seguenti miglioramenti al servizio di compilazione automatica.
Richieste di compilazione automatica correlate alla compatibilità
Puoi utilizzare il flag FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
per determinare se una richiesta di compilazione automatica è stata generata tramite la modalità di compatibilità.
Salva nome utente e password contemporaneamente
Puoi supportare i casi in cui un'applicazione utilizza più attività per visualizzare il nome utente, la password e altri campi utilizzando il flag SaveInfo.FLAG_DELAY_SAVE
.
Interazione dell'utente con l'interfaccia utente di salvataggio
Puoi mostrare e nascondere un campo della password in una finestra di dialogo di salvataggio impostando un listener di azioni nella 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 funzionalità di compilazione automatica chiede all'utente 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 costruttore UserData.Builder
è stato modificato per allinearsi meglio al modello Builder
.
Consenti 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 generata 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 di campi specifici per app
Android 10 aggiunge
FillResponse.setUserData()
,
che ti consente di impostare dati utente specifici dell'app per la durata della sessione.
Ciò consente al servizio di compilazione automatica di rilevare i tipi per i campi con contenuti specifici dell'app.
Controlli di interfaccia utente e di sistema
Android 10 offre i seguenti miglioramenti all'interfaccia utente:
Supporta i limiti JVMTI PopFrame
Android 10 aggiunge il supporto per la funzionalità
can_pop_frames
nell'implementazione JVMTI di Android. Durante il debug, questa funzionalità consente di eseguire nuovamente le funzioni dopo essere state messe in pausa in un punto di interruzione e modificato le impostazioni locali, globali o l'implementazione di una funzione. Per ulteriori informazioni, consulta la pagina di riferimento di Pop Frame di Oracle.
API Surface Control
Android 10 fornisce un'API SurfaceControl
per l'accesso di basso livello al compositor di sistema (SurfaceFlinger
). Per la maggior parte degli utenti, SurfaceView è il modo corretto per utilizzare il compositor. L'API SurfaceControl
può essere utile in determinati casi, ad esempio:
- Sincronizzazione di più piattaforme
- Incorporamento delle superfici tra processi
- Gestione di livello inferiore del ciclo di vita
L'API SurfaceControl
è disponibile nelle associazioni SDK e NDK.
L'implementazione NDK include un'API per lo scambio manuale di buffer con il composito. Questa opzione offre un'alternativa per gli utenti che hanno riscontrato i limiti di BufferQueue
.
Rilevamento del renderer bloccato di WebView
Android 10 introduce la classe astratta WebViewRenderProcessClient
, che le app possono utilizzare per rilevare se un elemento WebView
non risponde. Per utilizzare questo corso:
- Definisci la tua sottoclasse e implementa i relativi metodi
onRenderProcessResponsive()
eonRenderProcessUnresponsive()
. - Associa un'istanza di
WebViewRenderProcessClient
a uno o più oggettiWebView
. - Se
WebView
non risponde, il sistema chiama il metodoonRenderProcessUnresponsive()
del client, trasmettendoWebView
eWebViewRenderProcess
. (SeWebView
è a processo singolo, il parametroWebViewRenderProcess
è nullo). La tua app può intraprendere le azioni appropriate, ad esempio mostrare una finestra di dialogo all'utente 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.
Riquadri delle impostazioni
Android 10 introduce i Riquadri 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 dati quali NFC o Dati mobili per 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 browser può mostrare un riquadro in linea che mostra le principali impostazioni di connettività, 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 modalità aereo, Wi-Fi e dati mobili.
ACTION_WIFI
- Mostra le impostazioni Wi-Fi, ma non le altre impostazioni di connettività. È 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 Near Field Communication (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 Scorciatoias
L'API Sharing Scorciatoie sostituisce le API Direct Share.
Anziché recuperare i risultati in modo reattivo on demand, l'API Sharing Scorciatoias consente alle app di pubblicare in anticipo destinazioni di condivisione diretta. Ecco come funziona ShortcutManager
.
Poiché le due API sono simili, abbiamo espanso l'API ShortcutInfo
per semplificare l'utilizzo di entrambe le funzionalità. Con l'API Sharing Scorciatoias puoi assegnare direttamente
categorie o persone a una destinazione di condivisione. I target di condivisione rimangono nel sistema
finché la stessa app non li aggiorna o l'app non viene disinstallata.
Il meccanismo di condivisione diretta precedente continua a funzionare, ma le app che lo utilizzano hanno una priorità inferiore rispetto alle app che utilizzano l'API Sharing Shortcuts.
ShortcutInfo.Builder
aggiunge e migliora i metodi per fornire ulteriori informazioni sul target di condivisione.
Target di condivisione diretta
Puoi pubblicare una scorciatoia dinamica come target della condivisione diretta. Consulta Pubblicare target per la condivisione diretta.
ShortcutManagerCompat
è una nuova API AndroidX che fornisce compatibilità con le versioni precedenti dell'API DirectShare. Questo è il modo migliore per pubblicare i target di condivisione.
Anteprima del testo
Quando un'app condivide contenuti testuali, può mostrare un'anteprima facoltativa dei contenuti nell'interfaccia utente di Sharesheet.
Consulta la sezione Aggiungere anteprime RTF
Scopri di più
Per ulteriori informazioni su come le app possono condividere dati, vedi 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 che alle app in esecuzione sul dispositivo. Per informazioni complete, vedi Tema scuro.
Tipi di servizi in primo piano
Android 10 introduce l'attributo manifest XML foregroundServiceType
, che puoi includere nella definizione di vari servizi specifici. È possibile, anche se raramente appropriato, assegnare più tipi di servizi in primo piano a un servizio specifico.
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 | Esempio di caso d'uso per un servizio che deve dichiarare questo tipo |
---|---|
connectedDevice
| Monitorare un tracker per il fitness 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 la telefonata in corso |
Kotlin
Android 10 include i seguenti aggiornamenti per lo sviluppo di Kotlin.
Annotazioni null per le API libcore
Android 10 migliora la copertura delle annotazioni con supporto nulla nell'SDK per le API libcore. Queste annotazioni consentono agli sviluppatori di app che usano l'analisi della nullabilità di Kotlin o Java in Android Studio di ottenere informazioni sull'nullità quando interagiscono con queste API.
Normalmente, le violazioni dei contratti con supporto nulla in Kotlin generano errori di compilazione. Per garantire la compatibilità con il codice esistente, vengono aggiunte solo le
annotazioni @RecentlyNullable
e @RecentlyNonNull
. Ciò significa che le violazioni delle norme sui valori non generano avvisi anziché errori.
Inoltre, tutte le annotazioni @RecentlyNullable
o @RecentlyNonNull
aggiunte in Android 9 verranno modificate rispettivamente in @Nullable
e @NonNull
.
Ciò significa che, in Android 10 e versioni successive, le violazioni relative a valori nulli generano errori anziché avvisi.
Per ulteriori informazioni sulle modifiche alle annotazioni, consulta la pagina relativa all'SDK Android Pie ora è più compatibile con Kotlin sull'Android Developers Blog.
NDK
Android 10 include le seguenti modifiche NDK.
Debug migliorato della proprietà dei descrittori del file
Android 10 aggiunge fdsan, che ti aiuta a trovare e risolvere più facilmente i problemi di proprietà dei descrittori di file.
I bug relativi alla gestione errata della proprietà dei descrittori dei file, che tendono a manifestarsi come use-after-close e Double-close, sono analoghi ai bug relativi all'allocazione della memoria use-after-free e Double-free, ma tendono a essere molto più difficili da diagnosticare e risolvere. fdsan tenta di rilevare e/o prevenire la cattiva gestione del descrittore di file.
Per maggiori informazioni sugli arresti anomali correlati a questi problemi, consulta Errore rilevato da fdsan. Per ulteriori informazioni su fdsan, consulta la pagina Googlesource su fdsan.
TLS ELF
Le applicazioni create utilizzando NDK con livello API minimo 29 possono utilizzare TLS ELF anziché emutls
. È stato aggiunto il supporto di linker dinamici e statici per supportare questo metodo di gestione delle variabili locali nei thread.
Per le app create per il livello API 28 e versioni precedenti, sono stati implementati miglioramenti per libgcc/compiler-rt
al fine di risolvere alcuni problemi relativi a emutls
.
Per maggiori informazioni, consulta Modifiche relative ad Android per gli sviluppatori NDK.
Durata
Android 10 include la seguente modifica del runtime.
Attivazione della garbage collection di Mallinfo
Quando gli oggetti Java di piccole piattaforme fanno riferimento a oggetti enormi nell'heap di C++, spesso gli oggetti C++ possono 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 agli oggetti Java. Questa stima non era sempre accurata e occasionalmente comportava un notevole aumento dell'utilizzo della memoria, in quanto la piattaforma non è riuscita a eseguire la garbage collection quando avrebbe dovuto.
In Android 10, il garbage collector (GC) monitora la dimensione totale
dell'heap allocato dal sistema malloc()
, garantendo che le grandi allocazioni malloc()
vengano sempre incluse nei calcoli che attivano GC. Di conseguenza, le app che interagiscono con un numero elevato di allocazioni C++ con l'esecuzione di Java potrebbero registrare un aumento della frequenza di garbage collection. Le altre app potrebbero registrare una piccola diminuzione.
Test e debug
Android 10 include i seguenti miglioramenti per i test e il debug.
Miglioramenti relativi al tracciamento del sistema sul dispositivo
A partire da Android 10, puoi specificare limiti per le dimensioni e la durata di una traccia quando esegui una analisi del sistema sul dispositivo. Quando specifichi uno dei due valori, il sistema esegue una lunga traccia, copiando periodicamente il buffer della traccia nel file di destinazione mentre la traccia viene registrata. La traccia viene completata quando vengono raggiunti i limiti di dimensione o durata specificati.
Utilizza questi parametri aggiuntivi per testare casi d'uso diversi rispetto a quelli che testeresti con una traccia standard. Ad esempio, potresti diagnosticare un bug delle prestazioni che si verifica solo dopo che l'app è stata in esecuzione per un lungo periodo di tempo. In questo caso, potresti registrare una lunga traccia durante un'intera giornata e poi analizzare lo scheduler della CPU, l'attività del disco, i thread delle app e altri dati nel report per 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 strumentazione e il tracciamento delle prestazioni. Puoi convertire i file di traccia Perfetto nel formato Systrace.
Miglioramenti a TextClassifier
Android 10 fornisce funzionalità aggiuntive di classificazione del testo nell'interfaccia
TextClassifier
.
Rilevamento della lingua
Il metodo detectLanguage()
funziona in modo simile ai metodi di classificazione esistenti. Riceve un oggetto TextLanguage.Request
e restituisce un oggetto TextLanguage
.
TextLanguage
oggetti sono costituiti da un elenco di coppie ordinate. Ogni coppia
contiene un'impostazione internazionale e un punteggio di confidenza corrispondente per la classificazione.
Azioni per le conversazioni 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 una potenziale azione suggerita e il relativo punteggio di affidabilità.
Risposte rapide/azioni nelle notifiche
Android 9 ha introdotto la possibilità di visualizzare le risposte suggerite all'interno di una notifica. Android 10 offre anche la possibilità di includere le azioni suggerite basate sull'intenzione. Inoltre, la piattaforma è in grado di generare automaticamente questi suggerimenti. Le app possono comunque fornire i propri suggerimenti o disattivare i suggerimenti generati dal sistema.L'API utilizzata per generare queste risposte fa parte di TextClassifier
ed è stata anche esposta direttamente agli sviluppatori in Android 10.
Per ulteriori informazioni, leggi la sezione sui miglioramenti di TextClassifier.
Se la tua app fornisce i propri suggerimenti, la piattaforma non genera alcun
suggerimenti automatico. Se non vuoi che nelle notifiche dell'app vengano visualizzate risposte o azioni suggerite, puoi disattivare le risposte e le azioni generate dal sistema utilizzando setAllowGeneratedReplies()
e setAllowSystemGeneratedContextualActions()
.