Android 10 introduce fantastiche funzionalità per gli utenti e sviluppatori. Questo documento mette in evidenza le risorse disponibili per gli sviluppatori.
Per saperne di più sulle API, leggi il Report delle differenze API o visita il Riferimento API Android. Cerca le API che sono state "aggiunte in 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à per la sicurezza, riassumono le seguenti sezioni.
Finestre di dialogo di autenticazione biometrica migliorate
Android 10 introduce i seguenti miglioramenti a supporto per l'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.
- 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 devono essere necessarie ulteriori conferme dopo che l'utente autenticati mediante l'autenticazione dei volti.
Esegui il codice DEX incorporato direttamente dall'APK
A partire da Android 10, puoi indicare alla piattaforma di eseguire file DEX incorporati codice direttamente dal file APK dell'app. Questa opzione può aiutare a prevenire un attacco qualora un aggressore riuscisse a manomettere il codice compilato localmente sui dispositivo.
Per ulteriori informazioni, vedi Esegui 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 Standard TLS che offre vantaggi in termini di prestazioni e sicurezza avanzata. 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 nel comportamento cambia per tutte le app .
API Public Conscrypt
A partire da Android 10, il provider di sicurezza Conscrypt include un l'API pubblica per la funzionalità TLS.
La raccolta dei corsi in
android.net.ssl
contengono contenuti statici
per accedere a funzionalità che non sono disponibili nella
javax.net.ssl
API. I nomi di queste classi possono essere dedotti come
della classe javax.net.ssl
corrispondente. Ad esempio, il codice che opera
istanze di javax.net.ssl.SSLSocket
possono invece usare i metodi
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. Questo
consente all'app di richiedere all'utente di modificare il punto di accesso
a cui è connesso il dispositivo tramite
WifiNetworkSpecifier
per descrivere le proprietà di una rete richiesta. La connessione peer-to-peer è
utilizzati per scopi non di fornitura di rete, come la configurazione del bootstrap per
come Chromecast e l'hardware Google Home.
Per ulteriori informazioni, consulta la sezione sull'API Wi-Fi Network Request per peer-to-peer per la connettività.
API Wi-Fi network suggestion
Android 10 aggiunge il supporto della tua app per chiedere all'utente di connettersi a un punto di accesso Wi-Fi. Puoi fornire suggerimenti per la rete da connettere a. Sarà la piattaforma a scegliere il punto di accesso da accettare in base l'input dalla tua e da altre app.
Per ulteriori informazioni su questa funzione, vedi Suggerimento per 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 una latenza di pochi millisecondi.
Android 10 estende l'API Wi-Fi Lock per supportare in modo efficace prestazioni elevate e 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 abilitata soltanto quando l'applicazione che acquisisce il blocco è in esecuzione in primo piano e con lo schermo acceso. 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 ricerche DNS specializzate utilizzando
per le ricerche con testo in chiaro e la modalità DNS over TLS. In precedenza, il servizio DNS della piattaforma
il resolver supportava solo i record A e AAAA, che consentono la ricerca solo
indirizzi 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 eseguire l'analisi.
Per le app basate su NDK, consulta
android_res_nsend
.
Connessione facile Wi-Fi
Android 10 consente di utilizzare Connessione facile per eseguire il provisioning del Wi-Fi
le credenziali a un dispositivo peer, in sostituzione di WPS che è stato ritirato.
Le app possono integrare Connessione facile nel proprio flusso di configurazione e provisioning utilizzando
il
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
l'intento.
Per ulteriori informazioni su questa funzione, vedi Connessione facile Wi-Fi.
API Wi-Fi Direct connection
Le classi API WifiP2pConfig
e WifiP2pManager
dispongono di aggiornamenti in Android 10
supportare le funzionalità di connessione rapida a Wi-Fi Direct tramite
informazioni predeterminate. Queste informazioni vengono condivise tramite un canale secondario, ad esempio
come Bluetooth o NFC.
Il seguente esempio di codice mostra come creare un gruppo utilizzando informazioni:
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 della qualità delle chiamate
Android 10 aggiunge la possibilità di raccogliere informazioni sulla qualità dei chiamate IP Multimedia Subsystem (IMS), tra cui la qualità da e verso la rete, sui dispositivi che la supportano.
Filtro delle chiamate e ID chiamante
Android 10 offre alla tua app uno strumento per identificare le chiamate non
nella rubrica dell'utente come potenziali chiamate indesiderate e per ricevere chiamate indesiderate
rifiutato automaticamente per conto dell'utente. Informazioni su queste chiamate bloccate
vengono registrate come chiamate bloccate nel registro chiamate per offrire maggiore trasparenza
all'utente quando gli mancano le chiamate. L'utilizzo di questa API elimina il requisito
per ottenere dall'utente le autorizzazioni di READ_CALL_LOG
per fornire il 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
La trasmissione NEW_OUTGOING_CALL
è deprecata e viene sostituita con la
API CallRedirectionService
. L'API CallRedirectionService
fornisce interfacce per modificare le chiamate in uscita effettuate dalla piattaforma Android. Per
Ad esempio, le app di terze parti potrebbero annullare le chiamate e reindirizzarle tramite VoIP.
Miglioramenti nella creazione di file su un'unità di archiviazione esterna
Oltre a introdurre l'ambito spazio di archiviazione, Android 10 aggiunge le seguenti funzionalità correlate alle spazio di archiviazione:
- Puoi utilizzare lo strumento
IS_PENDING
flag per dare alla tua app accesso esclusivo a un file multimediale mentre viene scritto su disco. - Se sei a conoscenza di una posizione specifica in cui devono essere archiviati i file, puoi fornisci un suggerimento al sistema per dove archiviare i file appena scritti.
- Ogni dispositivo di archiviazione esterno ha un volume unico dell'utente.
Contenuti multimediali e grafica
Android 10 introduce le seguenti nuove funzionalità e API per contenuti multimediali e grafica:
Condivisione input audio
Android 10 consente a due app di condividere l'input audio contemporaneamente. 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, consulta la sezione Acquisizione della riproduzione.
Seekbar nelle notifiche di MediaStyle
A partire da Android 10, nelle notifiche di MediaStyle
viene visualizzata una barra di scorrimento. La barra di scorrimento mostra
l'avanzamento della riproduzione
PlaybackState.getPosition()
,
In alcuni casi, la barra di scorrimento
può essere utilizzata per individuare un punto
. 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 sua durata (specificato daMediaMetadata.METADATA_KEY_DURATION
) è maggiore di zero. Ciò significa che la barra non viene visualizzata per stream indeterminati 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) offre agli sviluppatori di applicazioni la possibilità di inviare e ricevere dati MIDI con codice C/C++, integrandosi più da vicino la loro logica audio/controllo C/C++ e la necessità di JNI.
Per ulteriori informazioni, vedi la sezione relativa all'API MIDI nativa di Android.
Miglioramenti a MediaCodecInfo
Android 10 aggiunge metodi
MediaCodecInfo
che rivelano altre informazioni
informazioni su un codec.
Per ulteriori informazioni, consulta la sezione Codec multimediali.
API Thermal
Quando i dispositivi si riscaldano troppo, possono limitare la CPU e/o la GPU e questo può influisce su app e giochi in modi inaspettati. App che usano grafiche complesse, pesanti di calcolo o di attività di rete sostenuta hanno maggiori probabilità di riscontrare problemi, variano da un dispositivo all'altro in base al chipset e alle frequenze di base, ai livelli integrazione dei dispositivi, pacchettizzazione dei dispositivi e fattore di forma.
In Android 10, app e giochi possono utilizzare un'API termica per monitorare i cambiamenti il dispositivo e intervenire per mantenere un consumo di energia inferiore per ripristinare la normale la temperatura dell'acqua. 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 stress termico, app e giochi possono aiutarti allentando la tensione attività in corso per ridurre il consumo di energia in vari modi. Ad esempio: le app di streaming potrebbero ridurre risoluzione/velocità in bit o traffico di rete, l'app potrebbe disattivare il flash o il miglioramento intensivo delle immagini, un gioco potrebbe ridurre frame rate o il tethering del poligono, 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 del dispositivo ed è attualmente supportato sui dispositivi Pixel con Android 10 e stiamo collaborando con il produttore partner per offrire un ampio supporto all'ecosistema nel più breve tempo possibile.
Fotocamera e immagini
Android 10 introduce le seguenti nuove funzionalità relative a fotocamera e immagini:
Supporto di 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 stream Y8 per migliorare l'efficienza della memoria.
- Supporto per l'acquisizione DNG monocromatica non elaborata.
- Introduzione delle enumerazioni CFA MONO e NIR per distinguere tra fotocamera monocromatica e fotocamere a infrarossi.
Puoi utilizzare questa funzionalità per acquisire un'immagine monocromatica nativa. È logico dispositivo multicamera può utilizzare una videocamera monocromatica come videocamera secondaria fisica migliorare la qualità delle immagini in condizioni di scarsa illuminazione.
Formato profondità dinamico
A partire da Android 10, le fotocamere possono memorizzare i dati sulla profondità di un'immagine in un utilizzando un nuovo schema denominato DDF (Dynamic Depth Format). Le app possono richiedere sia l'immagine JPG sia i relativi metadati di profondità, utilizzando queste informazioni per applicare qualsiasi sfocatura desiderata durante la post-elaborazione senza modificare l'originale come immagini.
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 della modalità multicamera
Android 10 migliora la fusione di più fotocamere in un'unica fotocamera logica, una funzionalità introdotta in Android 9 (livello API 28). I seguenti elementi sono stati aggiunti a il API Camera2:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: consente di eseguire una query se la sessione passata o meno può essere utilizzata per creare una sessione di acquisizione con la videocamera.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: attiva determinare l'ID della videocamera fisica attiva che supporta una videocamera. Puoi utilizzare gli ID restituiti per richiedere flussi logici e una videocamera secondaria fisica per ottenere una migliore efficienza energetica.
API Accessibility Services
Android 10 introduce il seguente nuovo servizio di accessibilità funzionalità e API:
Flag chiave di accesso AccessibilityNodeInfo
A partire da Android 10, puoi chiamare
isTextEntryKey()
per determinare se un determinato AccessibilityNodeInfo
rappresenta una chiave di inserimento testo
che fa parte di una tastiera o di un tastierino.
Funzione di lettura 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 la navigazione tramite gesti è attiva
Quando la funzionalità di navigazione tramite gesti è attiva in Android 10, l'accessibilità non è visibile o selezionabile. Per accedere al menu dei servizi di accessibilità, gli utenti devono esegui 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 un tastiera fisica premendo Ctrl+Alt+Z.
Miglioramento del controller della tastiera virtuale
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.
Timeout dell'accessibilità definiti dall'utente
Android 10 introduce
getRecommendedTimeoutMillis()
tramite Google Cloud CLI
o tramite l'API Compute Engine. Questo metodo fornisce supporto per i timeout definiti dall'utente per gli annunci interattivi
elementi dell'interfaccia utente
non interattivi. Il valore restituito è influenzato da entrambi gli utenti
le preferenze e le API dei servizi di accessibilità.
Miglioramenti alla compilazione automatica
Android 10 contiene i seguenti miglioramenti al servizio di compilazione automatica.
Richieste di compilazione automatica relative alla compatibilità
Puoi utilizzare lo
FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
per determinare se è stata generata una richiesta di compilazione automatica per motivi di compatibilità
.
Salva nome utente e password contemporaneamente
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 salvataggio
Puoi mostrare e nascondere un campo per la password in una finestra di dialogo per il salvataggio impostando un'azione nella finestra di dialogo e la modifica della visibilità della password corrispondente visualizzazione remota.
Supporto per l'aggiornamento dei set di dati
La compilazione automatica può aggiornare le password esistenti. Ad esempio, se un utente ha già ha memorizzato una password e ne salvano una nuova, la compilazione automatica chiede all'utente di aggiorna 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
La
UserData.Builder
è cambiato 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. Nel
nelle versioni precedenti, veniva generata un'eccezione se veniva aggiunto un valore più di una volta.
Supporto migliorato per i numeri di carte di credito
La classificazione sui campi ora può rilevare i numeri a quattro cifre corrispondenti alle ultime quattro cifre. il numero di una carta di credito.
Supporto per la classificazione dei campi specifici per app
Android 10 aggiunge
FillResponse.setUserData()
,
che ti consente di impostare dati utente specifici delle app per la durata della sessione.
Ciò consente al servizio di compilazione automatica di rilevare i tipi di campi con campi specifici dell'app
contenuti.
Controlli UI e di sistema
Android 10 offre i seguenti miglioramenti dell'interfaccia utente:
Supporta i limiti JVMTI PopFrame
Android 10 aggiunge il supporto per
can_pop_frames
per l'implementazione di JVMTI in Android. Durante il debug, questa funzionalità
consente di eseguire di nuovo le funzioni dopo essere state messe in pausa in un punto di interruzione e
locali, globali o implementazione di una funzione. Per ulteriori informazioni, vedi
Pagina di riferimento relativa ai frame pop di Oracle.
API di controllo della superficie
Android 10 offre una
API SurfaceControl
per l'accesso di basso livello al compositore di sistema
(SurfaceFlinger
). Per
la maggior parte degli utenti, SurfaceView è il modo corretto per sfruttare il compositore. La
L'API SurfaceControl
può essere utile in determinati casi, ad esempio:
- Sincronizzazione di più piattaforme
- Incorporamento della superficie cross-process
- Gestione del lifetime dell'utente di livello inferiore
L'API SurfaceControl
è disponibile in
Associazioni SDK e NDK.
L'implementazione NDK include un'API per lo scambio manuale dei buffer con
compositore. Questo offre un'alternativa agli utenti che si sono imbattuti in
limitazioni di
BufferQueue
Rilevamento di un renderer di WebView bloccato
Android 10 introduce
WebViewRenderProcessClient
una classe astratta, che le app possono usare per rilevare
WebView
non risponde. Per
utilizzare questo corso:
- Definire la sottoclasse e implementarne
onRenderProcessResponsive()
eonRenderProcessUnresponsive()
di machine learning. - Collega un'istanza di
WebViewRenderProcessClient
a uno o piùWebView
oggetti. - Se
WebView
non risponde, il sistema chiama ilonRenderProcessUnresponsive()
del client, passando i valoriWebView
eWebViewRenderProcess
. (SeWebView
è a processo singolo,WebViewRenderProcess
è nullo.) L'app può intraprendere l'azione appropriata, ad esempio mostrare un di dialogo per l'utente che chiede se vuole interrompere il processo di rendering.
Se WebView
continua a non rispondere, il sistema chiama onRenderProcessUnresponsive()
periodicamente (non più di una volta ogni cinque secondi), ma non esegue altre azioni.
Se WebView
risponde
il sistema chiama onRenderProcessResponsive()
una sola volta.
Riquadri delle impostazioni
Android 10 introduce Settings Panels, un'API che consente alle app di mostrare impostazioni agli utenti nel contesto della loro app. Questo impedisce agli utenti di dover andare in Impostazioni per modificare opzioni quali NFC o Dati mobili in per utilizzare l'app.
Ad esempio, supponiamo che un utente apra un browser web mentre il dispositivo è in uso modalità aereo. Prima di Android 10, l'app poteva mostrare solo un messaggio generico che chiede all'utente di aprire le Impostazioni per ripristinare la connettività. Con Android 10, l'app browser può visualizzare un riquadro in linea con le impostazioni di connettività principali ad esempio modalità aereo, Wi-Fi (incluse le reti nelle vicinanze) e dati mobili. Con da questo riquadro, gli utenti possono ripristinare la connettività senza uscire dall'app.
Per visualizzare un riquadro delle impostazioni, attiva un intent con uno dei seguenti elementi
Settings.Panel
azioni:
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 connessione 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à. 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 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 Shortcuts
L'API Sharing Shortcuts sostituisce le API Direct Share.
Anziché recuperare i risultati in modo reattivo on demand, l'API Share Shortcuts
consente alle app di pubblicare in anticipo target di condivisione diretta. Ecco come funziona ShortcutManager
.
Poiché le due API sono simili, abbiamo ampliato la ShortcutInfo
API per eseguire queste operazioni
funzionalità. Con l'API Sharing Shortcuts, puoi assegnare direttamente
categorie o persone a un target di condivisione. I target di condivisione rimangono nel sistema
finché la stessa app non li aggiorna o l'app non viene disinstallata.
Il vecchio meccanismo di Condivisione diretta continua a funzionare, ma le app che lo utilizzano hanno una durata inferiore principale rispetto alle app che usano l'API Share Shortcuts.
ShortcutInfo.Builder
aggiunge e perfeziona i metodi per fornire informazioni aggiuntive sul target della condivisione.
Target della quota diretta
Puoi pubblicare una scorciatoia dinamica come target di condivisione diretta. Consulta Pubblicare target di condivisione diretta.
ShortcutManagerCompat
è una nuova API AndroidX che offre compatibilità con le versioni precedenti dell'API DirectShare. Questo
è il modo migliore per pubblicare
i target della condivisione.
Anteprima del testo
Quando un'app condivide contenuti di testo, può mostrare un'anteprima facoltativa di i 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: consulta l'articolo Inviare dati semplici ad altre app e Ricezione di dati semplici da altre app
Tema scuro
Android 10 offre un tema scuro che si applica sia ai modelli Android UI di sistema e 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, sebbene raramente appropriato, assegnare più
di servizi in primo piano a un particolare servizio.
La tabella seguente mostra i diversi tipi di servizi in primo piano e la 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
| Download di file da una rete |
location
| Continua 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 di nullità per le API libcore
Android 10 migliora la copertura delle annotazioni con supporto di valori null nei l'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.
Normalmente, le violazioni dei contratti che utilizzano i valori nulli in Kotlin comportano la compilazione
errori. Per garantire la compatibilità con il codice esistente, solo la
Annotazioni @RecentlyNullable
e @RecentlyNonNull
aggiunte. Ciò significa
che le violazioni dei valori null provochino avvisi anziché errori.
Inoltre, tutte le annotazioni @RecentlyNullable
o @RecentlyNonNull
che sono state
aggiunti in Android 9 stanno cambiando rispettivamente in @Nullable
e @NonNull
.
Ciò significa che, in Android 10 e versioni successive, le violazioni dei valori NULL
a errori anziché ad avvisi.
Per ulteriori informazioni sulle modifiche alle annotazioni, consulta L'SDK Android Pie è ora più compatibile con Kotlin sul blog per sviluppatori Android.
ND
Android 10 include le seguenti modifiche relative all'NDK.
Miglioramento del debug della proprietà del descrittore dei file
Android 10 aggiunge fdsan, che ti aiuta a trovare e correggere la proprietà del descrittore dei file dei problemi.
Bug correlati a un'errata gestione della proprietà del descrittore dei file, che tendono a manifestarsi come use-after-close e double-close, sono analoghi all'allocazione della memoria di bug use-after-free e doppio libero, ma in genere è molto più difficile diagnosticare e risolvere i problemi. fdsan tenta di rilevare e/o impedire il descrittore del file cattiva gestione forzando la proprietà del descrittore dei file.
Per ulteriori informazioni sugli arresti anomali correlati a questi problemi, consulta Errore rilevato da fdsan. Per ulteriori informazioni su fdsan, consulta Pagina di Googlesource su fdsan.
TLS ELF
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.
Sono stati implementati alcuni miglioramenti per le app create per il livello API 28 e versioni precedenti
per libgcc/compiler-rt
al fine di risolvere alcuni problemi relativi a 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 aveva stimato le dimensioni di molti oggetti C++ associati a oggetti Java. Questa stima non era sempre accurati e occasionalmente hanno comportato un notevole aumento dell'utilizzo della memoria, la piattaforma non è riuscita a garbage collection quando dovrebbe.
In Android 10, il garbage collector (GC) monitora la dimensione totale
dell'heap allocato dal sistema malloc()
, assicurando che malloc()
le allocazioni vengono sempre incluse nei calcoli di attivazione di Google Cloud. Integrazione tra le app
un numero elevato di allocazioni C++ con l'esecuzione Java potrebbe notare un aumento
frequenza della garbage collection. 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 relativi a dimensioni e durata di una traccia quando esegui tracce 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 al raggiungimento dei 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 relativo alle prestazioni. che si verifica solo dopo che l'app è in esecuzione da molto 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, progetto open source per il tracciamento e la strumentazione delle prestazioni. Puoi converti i file di traccia di Perfetto in Systrace standard.
Miglioramenti a TextClassifier
Android 10 offre funzionalità di classificazione del testo aggiuntive
TextClassifier
a riga di comando.
Rilevamento della lingua
La
detectLanguage()
funziona in modo simile ai metodi di classificazione esistenti. it
riceve un
TextLanguage.Request
e restituisce un oggetto
TextLanguage
.
Gli oggetti TextLanguage
sono costituiti da un elenco di coppie ordinate. Ogni coppia
contiene un'impostazione internazionale e un punteggio di confidenza corrispondente per la classificazione.
Azioni suggerite per la conversazione
La
suggestConversationActions()
funziona in modo simile ai metodi di classificazione esistenti. Riceve un oggetto
ConversationActions.Request
e restituisce un oggetto
ConversationActions
.
ConversationActions
sono costituiti da un elenco
ConversationAction
di oggetti strutturati. Ogni oggetto ConversationAction
include un potenziale
l'azione suggerita e il relativo punteggio di affidabilità.
Risposte rapide/azioni nelle notifiche
Android 9 ha introdotto la possibilità di visualizzare le risposte suggerite in un notifica. Android 10 amplia questo aspetto con la possibilità di includi le azioni suggerite basate sull'intenzione. Inoltre, la piattaforma è in grado di generano automaticamente questi suggerimenti. Le app possono comunque fornire il proprio o disattivare i suggerimenti generati dal sistema.L'API utilizzata per generare queste risposte fa parte
TextClassifier
,
ed è stata inoltre esposto direttamente agli sviluppatori in Android 10.
Leggi la sezione sui miglioramenti di TextClassifier.
per ulteriori informazioni.
Se la tua app fornisce i propri suggerimenti, la piattaforma non genera alcun
suggerimenti automatici. Se non vuoi che vengano visualizzate le notifiche dell'app
eventuali risposte o azioni suggerite, puoi disattivare le risposte generate dal sistema
e azioni utilizzando
setAllowGeneratedReplies()
e
setAllowSystemGeneratedContextualActions()
.