Android 12 introduce nuove fantastiche funzionalità e API per gli sviluppatori. Le sezioni che seguono ti aiutano a scoprire le funzionalità delle tue app e a iniziare con le API correlate.
Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi l'articolo Differenze API report. Per maggiori dettagli sulle nuove API, visita la pagina Android Riferimento API: le nuove API sono evidenziate per garantire la visibilità. Inoltre, per sulle aree in cui le modifiche apportate alla piattaforma potrebbero interessare le tue app, consulta i cambiamenti nel comportamento di Android 12 per le app che hanno come target Android 12 e per tutti di terze parti.
Esperienza utente
Material You
Android 12 introduce un nuovo linguaggio di design chiamato Material Tu, che ti aiuta a creare app bellissime e più personalizzate. Per portare tutto il nuovo Material Design 3 gli aggiornamenti delle app, prova una versione alpha di Material Design Componenti.
Miglioramenti ai widget
Android 12 rinnova l'API Widgets esistente per migliorare utenti e sviluppatori esperienza nella piattaforma e nei launcher. Abbiamo creato una guida per aiutarti assicurati che il widget sia compatibile con Android 12 e per aggiornarlo le funzionalità di machine learning.
Vedi i miglioramenti dei widget Android 12 per ulteriori informazioni.
Inserimento di contenuti avanzati
Android 12 introduce una nuova API unificata che consente alla tua app ricevi contenuti avanzati da qualsiasi fonte disponibile: appunti, tastiera o trascinamento un calo.
Per ulteriori informazioni, consulta l'articolo Ricevere informazioni .
API delle schermate iniziali delle app
Android 12 introduce una nuova animazione per il lancio di app per tutte le app che include: movimento in-app dal momento del lancio, una schermata iniziale che mostra l'icona dell'app, e una transizione all'app stessa. Consulta lo sviluppatore delle schermate iniziali Google Cloud per ulteriori dettagli.
API con angoli arrotondati
Android 12 introduce RoundedCorner
e WindowInsets.getRoundedCorner(int
position)
,
che forniscono il raggio e il punto centrale per gli angoli arrotondati.
Per ulteriori informazioni, vedi Angoli arrotondati.
Esperienze aptiche avanzate
Android 12 amplia gli strumenti per la creazione di feedback aptico informativo per l'interfaccia utente eventi, effetti immersivi e deliziosi per i giochi e tecnologia aptica attenzionale per la produttività.
Effetti attuatore
Android 12 aggiunge effetti espressivi come bassi spunta sfruttano la larghezza di banda in frequenza più ampia degli attuatori più recenti. Gioco gli sviluppatori possono ora accedere a varie attuatori in modo indipendente nel gioco per offrire lo stesso effetto in modo sincrono o effetti aptici diversi su più attuatori. Per gli sviluppatori, consigliamo di utilizzare costanti e primitivi come componenti di base per effetti aptici avanzati, costanti per migliorare gli eventi e compositore aptica alla sequenza per ottenere effetti più complessi. API disponibili per la prova su Pixel 4 e continuiamo a collaborare con i nostri partner produttori di dispositivi per le ultime novità sul supporto della tecnologia aptica per gli utenti di tutto l'ecosistema.
Effetti aptici con accoppiamento audio
Le app per Android 12 possono generare feedback aptico derivato da una sessione audio utilizzando la vibrazione del telefono. Questo offre l'opportunità di offrire giochi e esperienze audio. Ad esempio, le suonerie con tecnologia aptica avanzata possono essere utili per identificare o un gioco di guida potrebbero simulare la sensazione di terreno accidentato.
Consulta la HapticGenerator
documentazione di riferimento per ulteriori informazioni.
Ricerca App
Android 12 introduce AppSearch, un motore di ricerca on-device ad alte prestazioni, come servizio di sistema. AppSearch consente alle applicazioni di indicizzare dati strutturati ed eseguire ricerche al suo interno con funzionalità integrate di ricerca a testo intero. Inoltre, AppSearch supporta funzionalità di ricerca native, come l'indicizzazione altamente efficiente recupero e recupero, supporto multilingue e ranking di pertinenza.
![Diagramma che illustra l'indicizzazione e la ricerca in AppSearch](https://developer.android.com/static/images/about/versions/12/appsearch.png?authuser=0000&hl=it)
AppSearch è disponibile in due versioni: un indice locale da utilizzare per l'applicazione compatibile con le versioni precedenti di Android o con un indice centrale per l'intero sistema in Android 12. Utilizzando l'indice centrale, può consentire la visualizzazione dei propri dati sulle piattaforme UI di sistema componente di intelligence preinstallato nel sistema. Esattamente quali dati vengono visualizzato sulle piattaforme UI di sistema dipende dall'OEM. Inoltre, i tuoi un'applicazione può condividere in modo sicuro i dati con altre applicazioni, per consentire per eseguire ricerche anche nei dati.
Scopri di più su AppSearch nel guida per gli sviluppatori e iniziare a utilizzarla con la libreria AppSearch Jetpack, offre una piattaforma API a misura di sviluppatore e un processore di annotazioni assistenza in tempo reale.
Modalità di gioco
API Game Mode e Modalità di gioco interventi d'uso che ti consentono di ottimizzare al gameplay dando la priorità a caratteristiche come le prestazioni o la durata della batteria in base alle impostazioni degli utenti o alle configurazioni specifiche del gioco.
Per ulteriori informazioni, vedi Modalità di gioco.
Consigli e miglioramenti della funzionalità Picture in picture (PIP)
Android 12 introduce i seguenti miglioramenti per la modalità PIP:
Supporto per i nuovi gesti PIP
Android 12 ora supporta l'archiviazione protetta e pizzica per lo zoom gesti per PIP finestra:
Per accantonare la finestra, l'utente può trascinarla verso sinistra o verso destra perimetrale. Per rimuovere la finestra dall'elenco filtri, l'utente può toccare la parte visibile della la finestra nascosta o trascinala fuori.
Ora l'utente può ridimensionare la finestra PIP usando le dita per eseguire lo zoom.
Nuove funzionalità consigliate che supportano un'esperienza di transizione PIP migliorata
Android 12 ha aggiunto miglioramenti estetici significativi al modello le transizioni tra le finestre a schermo intero e PIP. Ti consigliamo vivamente di l'implementazione di tutte le modifiche applicabili; dopo averlo fatto, queste modifiche scalare automaticamente su schermi di grandi dimensioni, come pieghevoli e tablet, senza qualsiasi altra attività richiesta.
Le funzionalità sono le seguenti:
-
Utilizza la
setAutoEnterEnabled
per consentire una transizione più fluida alla modalità PIP quando scorri verso l'alto e verso la schermata Home modalità di navigazione tramite gesti. In precedenza, Android attendeva lo scorrimento verso l'alto per andare alla schermata Home dell'animazione per terminare prima della dissolvenza nella finestra PIP. Animazioni più fluide quando si entra e si esce dalla modalità PIP
La
SourceRectHint
Il flag viene ora riutilizzato per implementare un'animazione più fluida all'entrata e all'uscita Modalità PIP.Un nuovo flag dell'API per disattivare il ridimensionamento continuo per i contenuti non video
La
SeamlessResizeEnabled
L'opzione flag fornisce un'animazione di dissolvenza incrociata molto più fluida durante il ridimensionamento di elementi non video nella finestra PIP. In precedenza, il ridimensionamento di contenuti non video in una PIP potrebbe creare artefatti visivi sgradevoli.
Nuovi avvisi di chiamata che consentono di classificare l'importanza delle chiamate in arrivo
Android 12 aggiunge un nuovo stile di notifica
Notification.CallStyle
per le telefonate. L'utilizzo di questo modello consente alla tua app di indicare l'importanza
le chiamate attive grazie a un chip in evidenza che indica l'ora della chiamata
la barra di stato; l'utente può toccare questo chip per tornare alla chiamata.
Dato che le chiamate in arrivo e in corso sono le più importanti per gli utenti, questi le notifiche vengono classificate in cima all'area. Questo ranking consente inoltre sistema per inoltrare potenzialmente queste chiamate prioritarie ad altri dispositivi.
Implementa il seguente codice per tutti i tipi di chiamate.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Utilizza forIncomingCall()
per creare una notifica dello stile di chiamata per una chiamata in arrivo.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
Utilizza forOngoingCall()
per creare una notifica dello stile di chiamata per una chiamata in corso.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
Utilizza forScreeningCall()
per creare una notifica dello stile di chiamata per filtrare una chiamata.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
Supporto di immagini avanzate per le notifiche
In Android 12, ora puoi arricchire l'esperienza di notifica della tua app
invio di immagini animate in MessagingStyle()
e BigPictureStyle()
notifiche. Inoltre, l'app ora può consentire agli utenti di inviare messaggi immagine quando
rispondono ai messaggi dall'area notifiche.
Miglioramenti alla modalità immersiva per la navigazione tramite gesti
Android 12 consolida il comportamento esistente per consentire agli utenti di esegui comandi di navigazione tramite gesti in modalità immersiva . Nella Inoltre, Android 12 offre un comportamento di compatibilità con le versioni precedenti immersivo .
Condivisione recente di URL (solo su Pixel)
Sui dispositivi Pixel, ora gli utenti possono condividere link a contenuti web visualizzati di recente direttamente dalla schermata Recenti. Dopo aver visitato i contenuti in un'app, l'utente possono scorrere fino alla schermata Recenti e trovare l'app in cui hanno visualizzato i contenuti. quindi tocca il pulsante del link per copiare o condividere l'URL.
Per ulteriori informazioni, vedi Abilita URL recenti condivisione.
Sicurezza e privacy
Dashboard della privacy
Sui dispositivi supportati con Android 12 o versioni successive, è prevista La schermata della dashboard viene visualizzata nelle impostazioni di sistema. In questa schermata gli utenti possono accedere schermate separate che mostrano quando le app accedono a posizione, fotocamera e microfono informazioni. Ogni schermata mostra una cronologia dei momenti in cui diverse app hanno avuto accesso a un tipo specifico di dati. La figura 1 mostra la cronologia di accesso ai dati per la posizione informazioni.
La tua app può fornire una motivazione per utenti per aiutarli a capire perché l'app accede a posizione, fotocamera o microfono informazioni. Questa motivazione può essere visualizzata nella nuova schermata della dashboard della privacy, schermata delle autorizzazioni dell'app o entrambe.
Autorizzazioni Bluetooth
Android 12 introduce
BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
,
e
BLUETOOTH_CONNECT
autorizzazioni aggiuntive. Queste autorizzazioni semplificano le app che hanno come target
Android 12 per interagire con il Bluetooth
dispositivi mobili, soprattutto per le app che non
richiedono l'accesso alla posizione del dispositivo.
Aggiornare le dichiarazioni delle autorizzazioni Bluetooth della tua app
Per preparare il dispositivo al targeting di Android 12 o versioni successive, esegui l'aggiornamento dalla logica della tua app. Anziché dichiarare un insieme legacy di dispositivi Bluetooth autorizzazioni, dichiarano un insieme più moderno di dispositivi Bluetooth autorizzazioni.
Ricerca gruppo di autorizzazioni
Su Android 12 o versioni successive, puoi eseguire query su come il sistema organizza le autorizzazioni fornite dalla piattaforma gruppi di autorizzazioni:
- Per determinare il gruppo di autorizzazioni in cui il sistema ha inserito un
autorizzazione definita dalla piattaforma,
getGroupOfPlatformPermission()
- per determinare le autorizzazioni definite dalla piattaforma a cui il sistema ha assegnato
un gruppo di autorizzazioni specifico,
getPlatformPermissionsForGroup()
Nascondi finestre di overlay applicazione
Per offrire agli sviluppatori un maggiore controllo su ciò che vedono gli utenti quando interagiscono con il
per gli sviluppatori, Android 12 offre la possibilità di nascondere
le finestre sovrapposte disegnate dalle app con
SYSTEM_ALERT_WINDOW
autorizzazione.
Dopo aver dichiarato
HIDE_OVERLAY_WINDOWS
l'autorizzazione, un'app può chiamare
setHideOverlayWindows()
per indicare che tutte le finestre di tipo
TYPE_APPLICATION_OVERLAY
deve essere nascosta quando è visibile la finestra dell'app. Le app potrebbero scegliere di farlo
questo quando vengono visualizzate schermate sensibili, come i flussi di conferma delle transazioni.
Le app che mostrano finestre di tipo TYPE_APPLICATION_OVERLAY
dovrebbero prendere in considerazione
alternative che potrebbero essere più appropriate per il loro caso d'uso, come
Picture in picture o
bolle.
Flag di protezione delle autorizzazioni dei firmatari noti
A partire da Android 12,
Attributo knownCerts
per
autorizzazioni a livello di firma
ti permette di fare riferimento alle sintesi delle firma note
certificati alla dichiarazione
nel tempo.
La tua app può dichiarare questo attributo e usare il flag knownSigner
per consentire
dispositivi e app per concedere autorizzazioni di firma ad altri
Google Cloud, senza
dover firmare le app al momento della produzione e della spedizione del dispositivo.
Attestazione delle proprietà del dispositivo
Android 12 espande l'insieme di app che possono verificare le proprietà del dispositivo che si trovano in un'attestazione certificato quando queste app generano una nuova chiave.
A partire da Android 9 (livello API 28), criteri relativi ai dispositivi
proprietari (RPD) che utilizzano
Keymaster 4.0 o versioni successive può
Verificare le proprietà del dispositivo in questi certificati di attestazione. A partire da
Android 12, qualsiasi app destinata ad Android 12 (livello API 31) o versioni successive può funzionare
questa verifica utilizzando
setDevicePropertiesAttestationIncluded()
.
Le proprietà del dispositivo generate includono quanto segue
Build
campi:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Azioni di notifica sicure nella schermata di blocco
A partire da Android 12, il corso Notification.Action.Builder
supporta
setAuthenticationRequired()
che consente alla tua app di richiedere che un dispositivo sia
sbloccato
prima che la tua app richiami una determinata azione di notifica. Questo metodo consente di aggiungere
un ulteriore livello di sicurezza per le notifiche sui dispositivi bloccati.
Stringhe localizzabili per il prompt biometrico
Android 12 introduce nuove API per aiutarti a migliorare la biometria della tua app
di autenticazione degli utenti. La nuova BiometricManager.Strings
include la classe nidificata getButtonLabel()
,
getPromptMessage()
,
e getSettingName()
che consentono all'app di recuperare un'etichetta localizzata e leggibile dall'utente
messaggio di richiesta o nome dell'impostazione dell'app. Utilizza queste etichette per creare contenuti più precisi
Istruzioni rivolte agli utenti specifiche per l'autenticazione biometrica
come "Usa Sblocco con il Volto" o "Usa l'impronta per continuare".
Rilevamento del phishing nelle app di messaggistica (solo Pixel)
![](https://developer.android.com/static/images/about/versions/12/phishing-detection.png?authuser=0000&hl=it)
Sui dispositivi Pixel supportati, Android 12 esegue il rilevamento del phishing sui messaggi ricevute dalle app di messaggistica più diffuse. Il sistema utilizza il machine learning sul dispositivo per rilevare attività sospette. Quando viene rilevato, il sistema visualizza si sovrappone alla parte superiore dell'interfaccia utente dell'app di messaggistica per avvisare gli utenti. Ad esempio, phishing il rilevamento può avvisare gli utenti dei seguenti rischi potenziali:
- Richieste sospette, ad esempio l'invio di un codice, denaro o simili
- URL non attendibili
- Allegati dannosi
- Link ad app dannose
Oltre ad avvisare l'utente, l'overlay consente anche all'utente di segnalare una messaggio sospetto e fornire feedback sugli avvisi emessi dal sistema.
Gli sviluppatori possono disattivare questa funzionalità aggiungendo un nuovo tag di metadati che includa
la stringa com.google.android.ALLOW_PHISHING_DETECTION
nel file manifest dell'app
. Ad esempio:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Contenuti multimediali
Transcodifica multimediale compatibile
A partire da Android 12 (livello API 31), il sistema può eseguire automaticamente HEVC(H.265) e HDR (HDR10 e HDR10+) registrati sul dispositivo in formato AVC (H.264), un formato ampiamente compatibili con i lettori standard. Sfrutta i codec moderni sono disponibili senza sacrificare la compatibilità con le applicazioni meno recenti.
Per ulteriori informazioni, consulta Transcodifica di contenuti multimediali compatibili.
Classe di rendimento
Android 12 introduce uno standard chiamato classe di prestazioni. R performance specifica le capacità hardware di base di Android i tuoi requisiti. Ogni dispositivo Android dichiara la classe di prestazioni che Google Cloud. Gli sviluppatori possono controllare la classe di prestazioni del dispositivo in fase di runtime offrono esperienze aggiornate che sfruttano appieno le funzionalità le funzionalità di machine learning.
Consulta Classe del rendimento per ulteriori informazioni.
Miglioramenti alla codifica video
Android 12 definisce un set standard di chiavi per controllare il il valore del parametro di quantizzazione (QP) per la codifica video, che consente agli sviluppatori evitando il codice specifico del fornitore.
Le nuove chiavi sono disponibili in
API MediaFormat
e anche
Raccolta multimediale NDK:
A partire dai codificatori video Android 12, viene applicata una qualità minima soglia. Ciò garantisce che gli utenti non abbiano un'esperienza di qualità estremamente bassa durante la codifica di video con complessità elevata.
Focus audio
A partire da Android 12 (livello API 31), quando un'app richiede lo stato attivo dell'audio, mentre mentre un'altra app è attiva e in riproduzione, il sistema nasconde in dissolvenza l'app in riproduzione.
Consulta la sezione Audio focus in Android 12 e versioni successive per ulteriori informazioni.
Aggiornamenti di MediaDrm
Per determinare se è necessario un componente decoder sicuro con
API di MediaDrm
attuali, devi seguire questi passaggi:
- Crea un
MediaDrm
. - Apri una sessione per ottenere un ID sessione.
- Crea un
MediaCrypto
utilizzando l'ID sessione. - Chiama il numero
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
Con i nuovi metodi requiresSecureDecoder(@NonNull String mime)
e
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
puoi verificarlo non appena crei un MediaDrm
.
Fotocamera
Estensioni del fornitore di Fotocamera 2
Molti dei produttori di dispositivi partner hanno creato estensioni per le videocamere personalizzate, ad esempio come Bokeh, HDR, modalità notturna e altre ancora, che le app vogliono usare per creare esperienze differenziate sui loro dispositivi. La fotocameraX libreria supporta già queste estensioni personalizzate del fornitore. In Android 12, le estensioni del fornitore sono ora esposte direttamente nella piattaforma.
Questa aggiunta aiuta le app con contenuti
Camera2
le implementazioni sfruttano le estensioni del fornitore senza
modifiche significative al codice precedente. Le API dell'estensione Camera2 espongono esattamente
lo stesso insieme
come
in CameraX, che sono già supportate in molte diverse
dispositivi, così puoi usarli senza bisogno
configurazione aggiuntiva.
Per ulteriori informazioni, vedi
CameraExtensionCharacteristics
Supporto sensore fotocamera Quad Bayer
Oggi molti dispositivi Android sono dotati di sensori delle fotocamere ad altissima risoluzione, tipicamente con motivi Quad o Nona Bayer, che offrono grande flessibilità in termini di qualità dell'immagine e prestazioni in condizioni di scarsa illuminazione. Android 12 introduce nuove API di Google Cloud che permettono alle app di terze parti di sfruttare appieno queste funzionalità i sensori. Le nuove API supportano il comportamento specifico di questi sensori e tengono conto del fatto che potrebbero supportare diverse configurazioni e combinazioni di stream quando si opera in modalità a massima risoluzione o "massima risoluzione" rispetto alla modalità "predefinita".
Elementi grafici e immagini
Fornisci alle app l'accesso diretto alle tracce tombali
A partire da Android 12, puoi accedere alla funzionalità tombstone relativa agli arresti anomali nativa della tua app come
buffer di protocollo attraverso
ApplicationExitInfo.getTraceInputStream()
:
. Il buffer di protocollo viene serializzato utilizzando questo schema.
In precedenza, l'unico modo per ottenere l'accesso a queste informazioni era tramite la
Android Debug Bridge (adb).
Per maggiori informazioni, vedi Fornire alle app l'accesso diretto alle tracce tombstone.
Supporto di immagini AVIF
Android 12 introduce il supporto per le immagini che utilizzano il formato file immagine AV1 (AVIF). AVIF è un formato container per immagini e sequenze di immagini codificate utilizzando AV1. AVIF sfrutta i contenuti codificati intra-frame dei video compressione. Questo migliora drasticamente la qualità dell'immagine a parità di dimensioni di file rispetto ai formati immagine più vecchi, come JPEG. Per un'analisi approfondita delle vantaggi di questo formato, vedi il blog di Jake Archibald post.
Sfocature più semplici, filtri di colore e altri effetti
Android 12 aggiunge il nuovo RenderEffect
che applica effetti grafici comuni come sfocature, filtri di colore, Shar Android
effetti e altro ancora per View
e delle gerarchie di rendering. Gli effetti possono essere combinati come effetti della catena
(che compongono un effetto interno ed esterno) o effetti combinati. Android diverso
i dispositivi potrebbero supportare o meno la funzionalità a causa della potenza di elaborazione limitata.
Gli effetti possono essere applicati anche alla RenderNode
sottostante
per View
chiamando View.setRenderEffect(RenderEffect)
.
Per implementare un RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Decodifica di immagini animate native
In Android 12, l'NDK
L'API ImageDecoder
è stata espansa
decodificare tutti i fotogrammi e i dati di tempo dalle immagini
che utilizzano la GIF animata e
formati di file animati WebP. Quando
è stata introdotta in Android 11, questa API decodifica solo la prima immagine
in questi formati.
Usa ImageDecoder
al posto di librerie di terze parti per diminuire ulteriormente l'APK
dimensioni
e trarrai vantaggio dai futuri aggiornamenti
relativi alla sicurezza e alle prestazioni.
Per maggiori dettagli sull'API, consulta la documentazione di riferimento API e l'esempio su GitHub.
Connettività
Mantenere attive le app complementari
Per far sì che le app complementari rimangano in esecuzione per gestire il dispositivo, Android 12 introduce le API che:
- Consente di attivare un'app quando un dispositivo associato è nella portata.
- Garantire che il processo continui a essere eseguito mentre il dispositivo rimane entro intervallo.
Per utilizzare le API, i dispositivi devono essere connessi tramite Dispositivo complementare
Gestore. Per ulteriori informazioni
le informazioni, vedi
CompanionDeviceManager.startObservingDevicePresence()
e
CompanionDeviceService.onDeviceAppeared()
.
Profili Gestione dispositivi associati
![](https://developer.android.com/static/images/about/versions/12/companion-device-profile.png?authuser=0000&hl=it)
Le app partner su Android 12 (livello API 31) e versioni successive possono utilizzare un dispositivo associato profili quando ti connetti a uno smartwatch. L'utilizzo di un profilo semplifica la registrazione raggruppando la concessione di autorizzazioni di un insieme di autorizzazioni specifiche per il tipo di dispositivo in un solo passaggio.
Le autorizzazioni in bundle vengono concesse all'app complementare una volta che il dispositivo si connette e dura solo finché il dispositivo è associato. Se elimini l'app o la rimozione dell'associazione comporta la rimozione delle autorizzazioni.
Per ulteriori informazioni, vedi
AssociationRequest.Builder.setDeviceProfile()
Miglioramenti della stima della larghezza di banda
In Android 12, le funzionalità di stima della larghezza di banda fornite
getLinkDownstreamBandwidthKbps()
e
getLinkUpstreamBandwidthKbps()
sono stati migliorati per la connettività sia Wi-Fi sia cellulare. I valori restituiti ora
rappresenta la velocità effettiva media ponderata complessiva dell'utente per operatore o Wi-Fi
SSID, tipo di rete e livello di segnale in tutte le applicazioni sul dispositivo.
Ciò può restituire una stima più precisa e realistica della velocità effettiva prevista,
fornisce stime sull'avvio a freddo della tua applicazione e richiede meno cicli
rispetto ad altri metodi di stima della velocità effettiva.
Miglioramenti apportati a Wi-Fi Aware (NAN)
Android 12 aggiunge alcuni miglioramenti a Wi-Fi Aware:
- Sui dispositivi con Android 12 (livello API 31) e versioni successive, puoi utilizzare
La callback di
onServiceLost()
per ricevere un avviso quando la tua app ha perso un servizio rilevato a causa di: l'interruzione o lo spostamento del servizio fuori dal raggio d'azione. - Il modo in cui vengono configurati più percorsi dei dati (NAN Data Paths) in modo più efficiente. Le versioni precedenti utilizzavano la messaggistica L2 per lo scambio di app peer informazioni di chi ha avviato l'azione, il che ha introdotto la latenza. Su dispositivi in esecuzione Android 12 e versioni successive, il risponditore (server) può essere configurato per accettare qualsiasi collega, cioè non ha bisogno di conoscere chi ha iniziato le informazioni in anticipo. In questo modo si velocizza il recupero del percorso dei dati link point-to-point con una sola richiesta di rete.
- Per evitare che il framework rifiuti le richieste di rilevamento o connessione a causa
all'esaurimento delle risorse sui dispositivi con Android 12 e
più in alto, puoi chiamare
WifiAwareManager.getAvailableAwareResources()
Il valore restituito di questo metodo ti consente di ottenere il numero di dati disponibili percorsi, il numero di sessioni di pubblicazione disponibili e il numero sessioni di iscrizione.
Peer-to-peer simultanea + connessione a internet
Quando i dispositivi che hanno come target Android 12 (livello API 31) e versioni successive vengono eseguiti su dispositivi con
il supporto hardware, utilizzando le tecnologie peer-to-peer
di rete non scollegheranno il tuo
connessione Wi-Fi esistente durante la creazione della connessione al dispositivo peer. A
per verificare il supporto di questa funzione,
WifiManager.isMultiStaConcurrencySupported()
Attiva lo schermo disattivato per i pagamenti NFC
Nelle app destinate ad Android 12 e versioni successive, puoi attivare NFC.
i pagamenti senza lo schermo del dispositivo attivo impostando
Da requireDeviceScreenOn
a
false
. Per ulteriori informazioni sui pagamenti NFC con schermo bloccato o disattivato, vedi
Schermo spento e schermata di blocco
comportamento degli utenti.
Spazio di archiviazione
Android 12 introduce la seguente gestione dello spazio di archiviazione funzionalità:
- Supporto dei media store per
MediaDocumentsProvider
quando la tua app recupera un URI multimediale equivalente a un determinato fornitore di documenti URI. - Una directory per voice registrazioni.
- La
MANAGE_MEDIA
che consente a un'app di eseguire la gestione dei contenuti multimediali suite operativa senza mostrare una finestra di dialogo di conferma all'utente per ogni operazione. - Le app con
MANAGE_EXTERNAL_STORAGE
autorizzazione eQUERY_ALL_PACKAGES
come le app di gestione di file, possono richiamare un'istanza attività per gestire lo spazio di archiviazione di un'altra app, a condizione che l'altra app crei l'attività personalizzata.
Funzionalità di base
Aggiornamenti automatici delle app
Android 12 introduce
setRequireUserAction()
per le app che utilizzano
API PackageInstaller
.
Questo metodo consente alle app che hanno eseguito l'installazione di eseguire aggiornamenti delle app senza richiedere il
per confermare l'azione.
Informazioni del chipset del dispositivo
Android 12 aggiunge due costanti a android.os.Build
che espongono
le informazioni su fornitore e modello del chipset SoC tramite l'SDK. Puoi recuperare questo
informazioni chiamando Build.SOC_MANUFACTURER
e Build.SOC_MODEL
rispettivamente.
Aggiornamenti alle API Java principali
In base alle richieste e alla collaborazione con gli sviluppatori, abbiamo aggiunto quanto segue librerie principali in Android 12:
Corso | API |
---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|