Fique por dentro das novidades do 12L, uma atualização com recursos para telas grandes que está chegando no início do próximo ano. Teste hoje mesmo!

Visão geral de recursos e APIs

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 uma lista detalhada das APIs novas, modificadas e removidas, leia o Relatório de diferenças da API. Para ver detalhes sobre as novas APIs, acesse a Referência da API do Android. As APIs novas estão em destaque para melhor visibilidade. Além disso, para saber mais sobre as áreas em que as mudanças na plataforma podem afetar seus apps, consulte as mudanças de comportamento do Android 12 para apps destinados ao Android 12 e para todos os 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).

Material You

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 a fim de criar retorno tátil informativo para eventos de IU, efeitos imersivos e encantadores em jogos e retorno tátil 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

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 as intervenções do modo jogo permitem otimizar a jogabilidade priorizando características, como desempenho ou duração da bateria, com base nas configurações do usuário ou específicas do jogo.

Veja mais informações em Modo de jogo.

Melhorias no modo picture-in-picture

O Android 12 introduz os novos recursos abaixo para o modo picture-in-picture:

Para ver detalhes sobre os novos comportamentos que afetam apps direcionados ao Android 12 ou a versões mais recentes, consulte Melhorias no comportamento do picture-in-picture. Consulte Suporte ao modo picture-in-picture para ver instruções sobre como implementar o recurso.

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 visualizados recentemente 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 o compartilhamento de URLs recentes.

Segurança e privacidade

Painel de privacidade

Uma linha do tempo vertical mostrando os diferentes apps que
         acessaram informações de localização e a que horas os acessos ocorreram
Figura 1. Uso da localização, parte do 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:

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 seu 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)

Um usuário vê uma mensagem como esta quando uma mensagem suspeita é detectada.

Em dispositivos Pixel com suporte, o Android 12 executa a detecção de phishing em mensagens recebidas em apps conhecidos de mensagens. Depois que esse recurso é ativado pelo usuário, 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 superior da IU do app de mensagens para avisar os usuários. Por exemplo, a detecção de phishing pode avisar os usuários sobre estes riscos:

  • 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.as.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:

  1. Crie um MediaDrm.
  2. Abra uma sessão para receber um ID.
  3. Crie uma MediaCrypto usando o ID da sessão.
  4. 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 dos nossos parceiros fabricantes de dispositivos criaram efeitos personalizados de câmera, como bokeh, HDR, modo noturno, entre outros, que são usados por apps para criar experiências diferenciadas nos dispositivos. A biblioteca do CameraX já oferece suporte a esses efeitos personalizados por um conjunto de extensões de fornecedores. No Android 12, essas mesmas extensões de fornecedor agora são expostas diretamente na plataforma.

Essa adição ajuda os apps com implementações complexas do Camera2 a aproveitar as extensões sem ter que fazer mudanças significativas no código legado. As APIs de extensão do Camera2 expõem exatamente o mesmo conjunto de efeitos do CameraX, e elas já oferece suporte a vários dispositivos diferentes, que podem ser usados sem nenhuma configuração extra.

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 Views 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 Views 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

Uma caixa de diálogo de permissões que usa um perfil de dispositivo complementar para solicitar várias permissões em uma única solicitação.

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 aplicativo Companion 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:

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