O Android 12 introduz ótimos novos recursos e APIs para desenvolvedores. As seções abaixo ajudam você a conhecer os recursos disponíveis para os apps e a começar a usar as APIs relacionadas.
Para conferir uma lista detalhada das APIs novas, modificadas e removidas, leia a diferença de API . Para mais detalhes sobre as novas APIs, acesse a página do Referência da API: as novas APIs são destacadas para maior visibilidade. Além disso, para aprender sobre as áreas em que as mudanças na plataforma podem afetar seus apps, confira mudanças de comportamento do Android 12 para apps direcionados Android 12 e para todos apps.
Experiência do usuário
Material You
O Android 12 introduz uma nova linguagem de design chamada Material You (link em inglês), que ajuda você a criar apps mais bonitos e personalizados. Para trazer todas as atualizações mais recentes do Material Design 3 aos seus apps, teste uma versão Alfa dos Componentes do Material Design (link em inglês).
Melhorias nos widgets
O Android 12 reformula a API Widgets existente para melhorar a experiência do usuário e do desenvolvedor na plataforma e nas telas de início. Criamos um guia para ajudar você a garantir que seu widget seja compatível com o Android 12 e para atualizá-lo com novos recursos.
Consulte Melhorias nos widgets do Android 12 para ver mais informações.
Inserção de conteúdo avançado
O Android 12 introduz uma nova API unificada que permite receber conteúdo avançado de qualquer fonte disponível: área de transferência, teclado ou recurso de arrastar e soltar.
Para mais informações, consulte Receber conteúdo avançado.
API App splash screens
O Android 12 apresenta uma nova animação de inicialização para todos os apps que inclui um movimento do ponto de inicialização do app, uma tela de apresentação mostrando o ícone dele e uma transição ao próprio app. Consulte o guia do desenvolvedor sobre telas de apresentação para mais detalhes.
APIs Rounded corner
O Android 12 introduz RoundedCorner
e WindowInsets.getRoundedCorner(int
position)
,
que fornecem o raio e o ponto central para cantos arredondados.
Para mais informações, consulte Cantos arredondados.
Experiências táteis avançadas
O Android 12 expande as ferramentas para criar retorno tátil informativo para a interface eventos, efeitos imersivos e agradáveis para jogos e retorno tátil de atenção para produtividade.
Efeitos do atuador
O Android 12 adiciona efeitos expressivos, como a marcação baixa, que aproveitam a largura de banda de frequência mais ampla dos atuadores mais recentes. Agora, os desenvolvedores de jogos podem acessar vários atuadores diferentes de forma independente nos controladores de jogos para proporcionar o mesmo efeito síncrono ou efeitos táteis diferentes em vários atuadores. Para desenvolvedores, recomendamos usar constantes e primitivos como elementos básicos para efeitos táteis avançados, constantes a fim de aprimorar eventos de IU e o Compositor de primitivos táteis para sequenciar primitivos a efeitos mais complexos. Essas APIs estão disponíveis para teste em dispositivos Pixel 4, e continuamos trabalhando com nossos parceiros de criação de dispositivos para levar o suporte tátil mais recente aos usuários de todo o ecossistema.
Efeitos táteis combinados com áudio
Os apps no Android 12 podem gerar retorno tátil de uma sessão de áudio usando a vibração do smartphone. Isso possibilita experiências mais imersivas para jogos e áudio. Por exemplo, toques com efeito tátil podem ajudar a identificar autores de chamadas ou jogos de carros podem simular a sensação de dirigir em um terreno irregular.
Consulte a documentação de referência do HapticGenerator
para mais informações.
AppSearch
O Android 12 introduz o AppSearch, um mecanismo de pesquisa de alto desempenho no dispositivo, como um serviço do sistema. O AppSearch permite que os aplicativos indexem dados estruturados e pesquisem sobre eles com recursos de pesquisa de texto completo integrados. Além disso, o AppSearch oferece suporte a recursos de pesquisa nativa, como indexação e extração altamente eficientes, suporte a vários idiomas e classificação de relevância.
![Diagrama ilustrando a indexação e a pesquisa com o AppSearch](https://developer.android.google.cn/static/images/about/versions/12/appsearch.png?authuser=19&hl=pt)
O AppSearch tem dois modelos: um índice local para o app usar que é compatível com versões mais antigas do Android ou um índice central mantido em todo o sistema do Android 12. Usando o índice central, o aplicativo permite que os dados sejam exibidos nas superfícies da IU do sistema pelo componente de inteligência pré-instalado. Os dados específicos que são exibidos nas superfícies da IU do sistema dependem do OEM. Além disso, o aplicativo pode compartilhar dados com segurança com outros apps, para que eles também possam pesquisar esses dados.
Saiba mais sobre o AppSearch no guia do desenvolvedor e aproveite a biblioteca AppSearch do Jetpack, que fornece uma superfície de API otimizada para desenvolvedores, além de suporte a processadores de anotações.
Modo jogo
A API Game Mode e o Modo jogo intervenções permitem otimizar a jogabilidade priorizando características, como desempenho ou duração da bateria com base nas configurações dos usuários ou específicas do jogo.
Veja mais informações em Modo de jogo.
Recomendações e melhorias do picture-in-picture
O Android 12 apresenta as melhorias abaixo no modo picture-in-picture:
Suporte a novos gestos do picture-in-picture
O Android 12 agora oferece suporte ao armazenamento e gesto de pinça para aplicar zoom gestos para o picture-in-picture janela:
Para ocultar a janela, o usuário pode arrastá-la para a esquerda ou direita borda Para retomar a janela, o usuário pode tocar na parte visível da janela oculta ou arrastá-la.
Agora o usuário pode redimensionar a janela do picture-in-picture usando o gesto de pinça para controlar o zoom.
Novos recursos recomendados que oferecem suporte a uma experiência sofisticada de transição do picture-in-picture
O Android 12 adicionou melhorias estéticas significativas. à versão animada transições entre a tela cheia e as janelas picture-in-picture. É altamente recomendável implementar todas as mudanças aplicáveis; depois que você tiver feito isso, essas alterações escalonam automaticamente para telas grandes, como dobráveis e tablets, sem qualquer trabalho adicional necessário.
Esses recursos são:
-
Use a sinalização
setAutoEnterEnabled
para fornecer transições mais suaves ao modo picture-in-picture ao deslizar para cima no modo de navegação por gestos. Anteriormente, o Android aguardava a conclusão da animação de deslizar para cima antes de ir até a tela inicial e exibir a janela do picture-in-picture. Animações mais suaves ao entrar e sair do modo picture-in-picture
O
SourceRectHint
A sinalização agora é reutilizada para implementar uma animação mais suave ao entrar e sair. Modo picture-in-picture.-
A sinalização
SeamlessResizeEnabled
oferece uma animação de esmaecimento de transição muito mais suave ao redimensionar conteúdo que não é de vídeo na janela picture-in-picture. Antes, o redimensionamento desse tipo de conteúdo em uma janela picture-in-picture poderia criar artefatos visuais conflitantes.
Novas notificações de chamadas telefônicas que possibilitam a classificação da importância das chamadas recebidas
O Android 12 adiciona o novo estilo de notificação
Notification.CallStyle
para chamadas telefônicas. O uso desse modelo possibilita que o app indique a importância das
chamadas ativas exibindo um ícone em destaque que mostra o tempo da chamada na
barra de status. O usuário pode tocar nesse ícone para retornar à chamada.
Como as chamadas recebidas e contínuas são as mais importantes para os usuários, essas notificações recebem a melhor classificação da aba. Essa classificação também possibilita que o sistema encaminhe essas chamadas prioritárias para outros dispositivos.
Implemente o código a seguir para todos os tipos de chamada.
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();
Use forIncomingCall()
para criar uma notificação de estilo para uma chamada recebida.
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);
Use forOngoingCall()
para criar uma notificação de estilo para uma chamada em andamento.
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);
Use forScreeningCall()
para criar uma notificação de estilo de chamada para filtrar uma chamada.
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);
Melhorias na compatibilidade de notificações com imagens
No Android 12, agora é possível enriquecer a experiência das notificações do app
fornecendo imagens animadas nas dos tipos
MessagingStyle()
e BigPictureStyle()
. Além disso, agora o app pode permitir que os usuários enviem mensagens com imagem quando
responderem às mensagens pela aba de notificações.
Melhorias no modo imersivo para navegação por gestos
O Android 12 consolida o comportamento já existente para facilitar a execução de comandos de navegação por gestos no modo imersivo. Além disso, o Android 12 oferece comportamento de compatibilidade com versões anteriores para o modo imersivo fixo.
Compartilhamento de URLs recentes (somente Pixel)
Em dispositivos Pixel, os usuários agora podem compartilhar links para conteúdo da Web Acesso recente na tela "Recentes" de maneira direta. Depois de acessar o conteúdo em um app, o usuário pode deslizar até a tela "Recentes" e encontrar o app em que visualizou o conteúdo. Em seguida, toque no botão de link para copiar ou compartilhar o URL.
Para mais informações, consulte Ativar URL recentes compartilhamento.
Segurança e privacidade
Painel de privacidade
Em dispositivos compatíveis com o Android 12 ou versões mais recentes, a tela do painel de privacidade aparece nas configurações do sistema. Nela, os usuários podem acessar telas separadas que mostram quando os apps acessam informações de localização, câmera e microfone. Cada tela mostra uma linha do tempo de quando diferentes apps acessaram um tipo específico de dados. A Figura 1 mostra a linha do tempo dos acessos aos dados de informação da localização.
O app pode fornecer uma justificativa aos usuários para os ajudar a entender por que precisa acessar informações de localização, câmera ou microfone. Essa justificativa pode ser exibida na nova tela do painel de privacidade, na tela de permissões do app ou em ambas.
Permissões do Bluetooth
O Android 12 introduz
as permissões
BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
e
BLUETOOTH_CONNECT
. Essas permissões facilitam a interação de apps direcionados ao
Android 12 para interagir com dispositivos
Bluetooth, especialmente para apps que não
exigem acesso à localização do dispositivo.
Atualizar as declarações de permissão do Bluetooth do app
A fim de preparar seu dispositivo para o Android 12 ou mais recente, atualize a lógica do app. Em vez de declarar um conjunto legado de permissões Bluetooth, declare um conjunto mais moderno.
Busca de grupo de permissões
No Android 12 ou mais recente, você pode consultar como o sistema organiza as permissões fornecidas pela plataforma em grupos de permissões:
- Para determinar o grupo de permissões em que o sistema colocou uma
permissão definida pela plataforma, chame
getGroupOfPlatformPermission()
. - Para determinar as permissões definidas pela plataforma que o sistema colocou em
um grupo de permissões específico, chame
getPlatformPermissionsForGroup()
.
Ocultar as janelas de sobreposição de aplicativos
Para dar aos desenvolvedores mais controle sobre o que os usuários veem quando interagem com o
app do desenvolvedor, o Android 12 introduz a capacidade de ocultar
as janelas de sobreposição exibidas por apps que têm a
permissão
SYSTEM_ALERT_WINDOW
.
Depois de declarar a permissão
HIDE_OVERLAY_WINDOWS
,
um app pode chamar
setHideOverlayWindows()
para indicar que todas as janelas do tipo
TYPE_APPLICATION_OVERLAY
precisam estar ocultas quando a própria janela do app estiver visível. Os apps podem fazer isso
com a exibição de telas sensíveis, como fluxos de confirmação de transações.
Os apps que mostram janelas do tipo TYPE_APPLICATION_OVERLAY
precisam considerar
alternativas que podem ser mais adequadas para o caso de uso deles, como
picture-in-picture ou
balões.
Sinalização de proteção da permissão de assinaturas conhecidas
A partir do Android 12, o atributo
knownCerts
para
permissões no nível da assinatura
permite que você consulte as sínteses dos certificados
de assinatura no momento da
declaração.
Seu app pode declarar esse atributo e usar a sinalização knownSigner
para permitir
que dispositivos e apps concedam permissões de assinatura a outros
apps, sem
precisar assinar os apps no tempo de fabricação e envio do dispositivo.
Atestar as propriedades do dispositivo
O Android 12 expande o conjunto de apps que podem verificar as propriedades do dispositivo incluídas em um certificado de atestado quando esses apps geram uma nova chave.
A partir do Android 9 (nível 28 da API), os proprietários de
políticas de dispositivos (DPOs, na sigla em inglês) que usam
o Keymaster 4.0 ou mais recente podem
verificar as propriedades do dispositivo nos certificados de atestado. A partir do
Android 12, qualquer app destinado ao Android 12 (nível 31 da API) ou mais recente pode realizar
essa verificação usando o
método
setDevicePropertiesAttestationIncluded()
.
As propriedades do dispositivo geradas incluem os campos
Build
abaixo:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Ações de notificação seguras na tela de bloqueio
A partir do Android 12, a classe Notification.Action.Builder
oferece suporte ao
método
setAuthenticationRequired()
,
que permite que o app exija que um dispositivo seja
desbloqueado antes que o app invoque uma determinada ação de notificação. Esse método ajuda a adicionar uma
camada extra de segurança às notificações em dispositivos bloqueados.
Strings localizáveis para BiometricPrompt
O Android 12 introduz novas APIs para ajudar você a melhorar a experiência
de autenticação biométrica do app para os usuários. A nova classe aninhada BiometricManager.Strings
inclui os métodos getButtonLabel()
,
getPromptMessage()
,
e getSettingName()
,
que permitem que o app extraia um rótulo de botão, uma mensagem de solicitação ou
um nome de configuração do aplicativo legível e localizado pelo usuário. Use esses rótulos a fim de criar instruções mais precisas
para o usuário que sejam específicas aos métodos de autenticação biométrica
escolhidos, como "Use o desbloqueio facial" ou "Use a impressão digital para continuar".
Detecção de phishing em apps de mensagens (somente Pixel)
![](https://developer.android.google.cn/static/images/about/versions/12/phishing-detection.png?authuser=19&hl=pt)
Em dispositivos Pixel com suporte, o Android 12 executa a detecção de phishing em mensagens recebidas em apps conhecidos de mensagens. O sistema usa o aprendizado de máquina no dispositivo para detectar atividades suspeitas. Quando uma mensagem de phishing é detectada, o sistema exibe uma sobreposição de segurança na parte de cima da IU do app de mensagens para avisar os usuários. A detecção de phishing pode avisar os usuários sobre riscos como os exemplos abaixo:
- Solicitações suspeitas, como enviar um código, dinheiro ou algo semelhante
- URLs não confiáveis
- Anexos maliciosos
- Links para apps maliciosos
Além de alertar o usuário, a sobreposição também permite que ele denuncie uma mensagem suspeita e forneça feedback sobre os avisos emitidos pelo sistema.
Os desenvolvedores podem desativar esse recurso adicionando uma nova tag de metadados, incluindo
a string com.google.android.ALLOW_PHISHING_DETECTION
nos arquivos de manifesto do
app. Exemplo:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Mídia
Transcodificação de mídia compatível
A partir do Android 12 (nível 31 da API), o sistema pode transcodificar automaticamente vídeos em HEVC(H.265) e HDR (HDR10 e HDR10+) gravados no dispositivo para AVC (H.264), um formato amplamente compatível com players padrão (links em inglês). A transcodificação aproveita os codecs modernos disponíveis sem sacrificar a compatibilidade com aplicativos mais antigos.
Consulte transcodificação de mídia compatível para ver mais detalhes.
Classe de desempenho
O Android 12 introduz um padrão chamado de classe de desempenho. Uma classe de desempenho especifica recursos de hardware além dos valores de referência do Android. Cada dispositivo Android declara a classe de desempenho a que oferece suporte. Os desenvolvedores podem conferir a classe de desempenho do dispositivo durante a execução e fornecer experiências atualizadas que aproveitam ao máximo os recursos do dispositivo.
Consulte Classe de desempenho para mais detalhes.
Melhorias na codificação de vídeo
O Android 12 define um conjunto padrão de chaves para controlar o valor do parâmetro de quantização (QP, na sigla em inglês) para codificação de vídeo, possibilitando que os desenvolvedores evitem códigos específicos do fornecedor.
As novas chaves estão disponíveis na API
MediaFormat
e também na
biblioteca NDK Media.
Com codificadores de vídeo do Android 12, você impõe um limite mínimo de qualidade. Isso garante que os usuários não tenham uma qualidade extremamente baixa ao codificar vídeos com alta complexidade de cena.
Seleção de áudio
A partir do Android 12 (nível 31 da API), quando um app solicita a seleção de áudio enquanto outro app está em foco e em reprodução, o sistema esmaece o app em reprodução.
Para ver mais detalhes, consulte Seleção de áudio no Android 12 ou mais recente.
Atualizações do MediaDrm
Para determinar se um componente decodificador seguro é necessário para as
APIs MediaDrm
atuais, siga estas etapas:
- Crie um
MediaDrm
. - Abra uma sessão para receber um ID.
- Crie uma
MediaCrypto
usando o ID da sessão. - Chame o método
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
Com os novos métodos requiresSecureDecoder(@NonNull String mime)
e
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
,
você pode determinar se o decodificador seguro é necessário assim que criar um MediaDrm
.
Câmera
Extensões de fornecedor do Camera2
Muitos de nossos fabricantes parceiros de dispositivos criaram extensões de câmera personalizadas, como como Bokeh, HDR, Modo noturno e outros, que os apps precisam usar para criar experiências diferenciadas nos dispositivos. O CameraX biblioteca já oferece suporte essas extensões de fornecedor personalizadas. No Android 12, esses as extensões de fornecedor agora são expostas diretamente na plataforma.
Essa novidade ajuda os apps que têm tarefas complexas
Camera2
implementações aproveitam as extensões do fornecedor sem ter que fazer
mudanças significativas no código legado. As APIs de extensão Camera2 expõem exatamente
o mesmo conjunto de
extensões como
no CameraX, e eles já são compatíveis com muitas
para dispositivos móveis, e você pode usá-los sem
configuração adicional.
Para saber mais, consulte
CameraExtensionCharacteristics
.
Suporte ao sensor de câmera Quad Bayer
Atualmente, muitos dispositivos Android oferecem sensores de câmera de alta resolução, geralmente com padrões Quad ou Nona Bayer. Esses padrões oferecem grande flexibilidade em termos de qualidade de imagem e desempenho em lugares com pouca luz. O Android 12 introduz novas APIs de plataforma que permitem que apps de terceiros aproveitem ao máximo esses sensores versáteis. As novas APIs são compatíveis com o comportamento único desses sensores e consideram que podem oferecer diferentes configurações e combinações de fluxo ao operar em resolução máxima ou no modo "resolução máxima" ou no modo "padrão".
Gráficos e imagens
Fornecer acesso direto aos rastros de Tombstone
Com o Android 12, você pode acessar o Tombstone de falha nativa do app como um
buffer de protocolo usando o
método
ApplicationExitInfo.getTraceInputStream()
. O buffer de protocolo é serializado usando este esquema.
Antes, a única maneira de acessar essas informações era pelo
Android Debug Bridge (adb).
Para ver mais informações, consulte Permitir que os apps acessem diretamente os rastros de Tombstone.
Compatibilidade com imagens AVIF
O Android 12 introduz a compatibilidade com imagens que usam o formato de arquivo de imagem AV1 (AVIF). O AVIF é um formato de contêiner para imagens e sequências de imagens codificadas com AV1. O AVIF aproveita o conteúdo codificado nos frames da compactação de vídeo. Isso melhora muito a qualidade da imagem, mantendo o mesmo tamanho de arquivo que os formatos de imagem mais antigos, como JPEG. Para ver informações detalhadas sobre as vantagens desse formato, consulte a postagem do blog (link em inglês) de Jake Archibald.
Mais facilidade ao desfocar, filtrar cores e usar outros efeitos
O Android 12 adiciona o novo RenderEffect
,
que aplica efeitos gráficos comuns, como desfoques, filtros de cores, efeitos de sombreador
do Android e muito mais, às View
s
e hierarquias de renderização. Os efeitos podem ser combinados como efeitos em cadeia,
que compõem um efeito interno e externo, ou combinados. Diferentes dispositivos
Android podem ou não ser compatíveis com o recurso devido à capacidade de processamento limitada.
Os efeitos também podem ser aplicados ao RenderNode
implícito para View
s chamando View.setRenderEffect(RenderEffect)
.
Para implementar um RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Decodificar imagens animadas nativas
No Android 12, a API
ImageDecoder
do NDK foi expandida
para decodificar todos os frames e dados de tempo de imagens
que usam os formatos de arquivo animados GIF (link em inglês) e
WebP. Quando foi
introduzida no Android 11, essa API decodificava somente a primeira imagem
das animações nesses formatos.
Use ImageDecoder
em vez de bibliotecas de terceiros para diminuir o tamanho
do APK
e aproveitar as atualizações futuras relacionadas à segurança e ao desempenho.
Para ver mais detalhes sobre a API, consulte a referência da API e o exemplo no GitHub (link em inglês).
Conectividade
Como manter os aplicativos Companion ativados
Para que os aplicativos Companion continuem sendo executados para gerenciar o dispositivo, o Android 12 introduz APIs que fazem o seguinte:
- Permitem que você ative um app quando um dispositivo complementar estiver no alcance.
- Garantem que o processo continuará em execução enquanto o dispositivo estiver no alcance.
Para usar as APIs, os dispositivos precisam estar conectados usando o Gerenciador de dispositivos
complementares. Para mais
informações, consulte
CompanionDeviceManager.startObservingDevicePresence()
e
CompanionDeviceService.onDeviceAppeared()
.
Perfis gerenciadores de dispositivos complementares
![](https://developer.android.google.cn/static/images/about/versions/12/companion-device-profile.png?authuser=19&hl=pt)
Apps de parceiros no Android 12 (nível 31 da API) e mais recente podem usar perfis de dispositivos complementares ao se conectar a um smartwatch. O uso de um perfil simplifica o processo de registro, agrupando a concessão de um conjunto de permissões específicas do tipo de dispositivo em uma única etapa.
As permissões do pacote são concedidas ao app complementar quando o dispositivo é conectado e duram apenas enquanto o dispositivo estiver associado. Excluir o app ou remover a associação removerá as permissões.
Para saber mais, consulte
AssociationRequest.Builder.setDeviceProfile()
.
Melhorias na estimativa de largura de banda
No Android 12, os recursos de estimativa de largura de banda fornecidos por
getLinkDownstreamBandwidthKbps()
e
getLinkUpstreamBandwidthKbps()
foram melhorados para o Wi-Fi e a conectividade celular. Os valores retornados agora
representam a capacidade média ponderada do usuário por operadora ou SSID (Identificador do conjunto de serviços)
do Wi-Fi, tipo de rede e nível de sinal em todos os aplicativos no dispositivo.
Isso pode retornar uma estimativa mais precisa e realista da capacidade esperada,
fornecer estimativas em uma inicialização a frio do aplicativo e exige menos ciclos
em comparação com o uso de outros métodos de estimativa de capacidade.
Melhorias no Wi-Fi Aware (NAN)
O Android 12 inclui algumas melhorias no Wi-Fi Aware:
- Em dispositivos com o Android 12 (API de nível 31) ou mais recente, você pode usar o callback
onServiceLost()
para receber alertas quando seu app perder um serviço descoberto porque o serviço parou ou saiu do alcance. - A forma como vários caminhos de dados (caminhos de dados NAN) são configurados mudou para se tornar mais eficiente. As versões anteriores usavam mensagens L2 para trocar informações semelhantes dos iniciadores, o que causava latência. Em dispositivos com o Android 12 e versões mais recentes, o recurso de resposta (servidor) pode ser configurado para aceitar qualquer iniciador semelhante. Ou seja, não é necessário saber as informações do iniciador antecipadamente. Isso acelera a inicialização do caminho de dados e permite várias conexões de ponto a ponto com apenas uma solicitação de rede.
- Para evitar que o framework rejeite solicitações de descoberta ou conexão devido à
falta de recursos, é possível chamar
WifiAwareManager.getAvailableAwareResources()
em dispositivos com o Android 12 e versões mais recentes. O valor de retorno desse método informa o número de caminhos de dados disponíveis, o número de sessões de publicação disponíveis e o número de sessões de inscrição disponíveis.
Conexões ponto a ponto e de Internet simultâneas
Quando dispositivos destinados ao Android 12 (API de nível 31) e mais recente forem executados em dispositivos com
suporte de hardware, o uso de conexões
ponto a ponto não desconectará o
Wi-Fi existente ao criar a conexão com o dispositivo de peering. Para
verificar o suporte a esse recurso, use
WifiManager.isMultiStaConcurrencySupported()
.
Permitir pagamentos NFC com a tela desativada
Em apps direcionados ao Android 12 e versões mais recentes, é possível ativar pagamentos NFC
com a tela do dispositivo desativada ao configurar
requireDeviceScreenOn
como
false
. Para mais informações sobre pagamentos NFC com a tela desativada ou bloqueada, consulte
Tela desativada e comportamento
da tela de bloqueio.
Armazenamento
O Android 12 introduz os recursos de gerenciamento de armazenamento abaixo:
- Suporte ao armazenamento de mídia para o
MediaDocumentsProvider
quando o app recebe um URI de mídia equivalente a um determinado URI do provedor de documentos. - Um diretório para gravações de voz.
- A permissão
MANAGE_MEDIA
, que permite que um app execute operações de gerenciamento de mídia sem mostrar uma caixa de diálogo de confirmação ao usuário para cada operação de dados. - Apps que têm as permissões
MANAGE_EXTERNAL_STORAGE
eQUERY_ALL_PACKAGES
, como apps de gerenciamento de arquivos, podem invocar uma atividade personalizada para gerenciar o espaço de armazenamento de outro app, desde que o app crie a atividade personalizada.
Principal recurso
Atualizações automáticas de apps
O Android 12 introduz o método
setRequireUserAction()
para apps que usam a API
PackageInstaller
.
Esse método possibilita que os apps instaladores realizem atualizações de apps sem exigir que o
usuário confirme a ação.
Informações sobre o chipset do dispositivo
O Android 12 adiciona duas constantes ao método android.os.Build
que expõem
o fornecedor de chipset SoC e as informações do modelo usando o SDK. É possível extrair essas
informações chamando Build.SOC_MANUFACTURER
e Build.SOC_MODEL
,
respectivamente.
Atualizações das principais APIs Java
Com base nas solicitações e na colaboração com os desenvolvedores, adicionamos as bibliotecas principais abaixo ao Android 12:
Classe | APIs |
---|---|
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
|