O Android 13 introduz ótimos recursos e APIs novos para desenvolvedores. As seções abaixo ajudam você a conhecer os recursos dos 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 13 para apps destinados ao Android 13 e para todos os apps.
Produtividade e ferramentas para desenvolvedores
Ícones de app com tema
No Android 13 e versões mais recentes, é possível ativar ícones de app com tema. Com esse recurso, os ícones dos apps em telas de início com suporte do Android herdam a tonalidade da cor do plano de fundo escolhido e de outros temas.
Para oferecer suporte a esse recurso, o app precisa fornecer um
ícone adaptativo e um
ícone monocromático, bem como apontar para o ícone monocromático do
elemento <adaptive-icon>
no manifesto. Caso o usuário tenha ativado a opção
Ícones com tema nas configurações do sistema
e a tela de início ofereça suporte a esse recurso, o sistema usa a
cor do plano de fundo e o tema escolhidos pelo usuário para determinar a cor da
tonalidade a ser aplicada ao ícone monocromático do app.
Em qualquer um dos casos a seguir, a tela inicial NÃO mostra o ícone do app com tema, mas sim o ícone adaptativo ou padrão:
- Se o usuário não tiver ativado a opção de ícones com tema.
- Se o app não tiver um ícone monocromático.
- Se a tela de início não oferecer suporte para ícones de apps com tema.
Para mais detalhes e instruções, consulte Ícones adaptativos.
Preferências de idioma por app
Em muitos casos, os usuários multilíngues definem um idioma para o sistema, como o inglês, mas querem selecionar outros idiomas para apps específicos, como holandês, chinês ou hindi. Para melhorar a experiência dos usuários nos apps que oferecem suporte a vários idiomas, o Android 13 introduz os recursos abaixo:
Configurações do sistema: um local centralizado em que os usuários podem selecionar um idioma preferido para cada app.
Para informar ao sistema que ele oferece suporte para vários idiomas, o app precisa declarar o atributo
android:localeConfig
no manifesto. Para saber mais, consulte as instruções sobre como criar um arquivo de recursos e o declarar no arquivo de manifesto do app.Outras APIs: essas APIs públicas, como os métodos
setApplicationLocales()
egetApplicationLocales()
emLocaleManager
, permitem que os apps definam um idioma diferente daquele usado pelo sistema no momento da execução.Essas APIs são sincronizadas automaticamente com as configurações do sistema. Os apps que usam essas APIs para criar seletores de idioma personalizados garantem que os usuários tenham uma experiência consistente, independente do local em que escolherem as preferências de idioma. As APIs públicas também ajudam a reduzir o código boilerplate e oferecem suporte para APKs divididos e para Backup automático de apps, permitindo que os aplicativos armazenem as configurações de idioma do usuário.
Para oferecer compatibilidade com versões anteriores do Android, APIs equivalentes também estão disponíveis no AndroidX. Recomendamos o uso das APIs adicionadas na Appcompat 1.6.0-beta01 ou versões mais recentes.
Essas mudanças não afetam os apps que não oferecem suporte a vários idiomas.
Melhoria no suporte de texto e idioma
O Android 13 inclui vários recursos de melhorias de texto e idioma para oferecer uma experiência mais refinada descrita nas seções abaixo:
Hifenização mais rápida
A hifenização facilita a leitura de texto agrupado e ajuda a tornar a IU mais
adaptativa. No Android 13 e versões mais recentes, a performance da hifenização é otimizada em até
200% para que você possa a ativar na TextView
sem afetar a
performance da renderização. Para permitir uma hifenização mais rápida, use as frequências
fullFast
ou
normalFast
no
setHyphenationFrequency()
.
APIs Text Conversion
Falantes de idiomas como o japonês e o chinês usam métodos de entrada com alfabeto fonético, que geralmente reduzem a velocidade da pesquisa e de recursos como o preenchimento automático. No Android 13, os apps podem chamar a nova API Text Conversion para que os usuários consigam encontrar o que procuram com mais rapidez e facilidade. Antes, para fazer uma pesquisa, um usuário falante de japonês precisava seguir estas etapas:
- Inserir o hiragana com a pronúncia fonética do termo de pesquisa, como um lugar ou o nome de um app.
- Usar o teclado para converter os caracteres hiragana em kanji.
- Pesquisar novamente usando os caracteres kanji.
- Finalmente, ver os resultados da pesquisa.
Com a nova API de conversão de texto, os usuários falantes de japonês podem digitar em hiragana e receber imediatamente os resultados da pesquisa em kanji, pulando as etapas 2 e 3.
Melhorias na altura de linhas para textos em idiomas não latinos
O Android 13 melhora a exibição de textos em idiomas não latinos, como tâmil, birmanês, télugo e tibetano, usando uma altura de linha adaptada a cada idioma. As alturas das novas linhas evitam cortes e melhoram o posicionamento dos caracteres. Para aproveitar essas melhorias, basta destinar o app ao Android 13. É importante fazer testes no app ao usar o novo espaçamento entre linhas, porque as mudanças podem afetar a IU em idiomas não latinos.
Melhoria no ajuste de texto em japonês
No Android 13 e versões mais recentes, as TextViews podem ajustar o texto com base no bunsetsu (menor unidade sonora
significativa) ou em frases, e não por caractere. Dessa forma, é possível proporcionar aplicativos
mais elaborados e mais legíveis em japonês. Para aproveitar esse recurso, use
android:lineBreakWordStyle="phrase"
com as TextViews.
Atualizações da biblioteca Unicode
O Android 13 adiciona as melhorias, correções e mudanças mais recentes incluídas em Unicode ICU 70, Unicode CLDR 40 e Unicode 14.0 (links em inglês).
Veja algumas mudanças importantes:
- O inglês
en‑CA
(Canadá) e o inglêsen‑PH
(República das Filipinas) usam recursos de tradução do inglêsen
(Estados Unidos) quando não há recursos de tradução disponíveis, em vez de usar o inglêsen‑GB
(Reino Unido). - A categoria plural
many
foi introduzida para os idiomas espanholes
, italianoit
, portuguêspt
e portuguêspt‑PT
(Portugal). De forma parecida com o francês introduzido no CLDR v38 (link em inglês), ela é usada para grandes números.
Fontes vetoriais coloridas
No Android 13 e versões mais recentes, o sistema inclui suporte à renderização de fontes COLRv1 e atualiza os emojis do sistema para o formato COLRv1. COLRv1 é um formato de fonte altamente compacto que é renderizado de forma rápida e nítida em qualquer tamanho.
Na maioria dos apps, o sistema processa tudo e o COLRv1 funciona normalmente. No entanto, caso o app implemente uma renderização de texto própria e use as fontes do sistema, recomendamos testar a renderização de emojis.
Para saber mais sobre o COLRv1, consulte os recursos abaixo:
- Comunicado no blog de desenvolvedores do Chrome (link em inglês)
- Como enviar fontes vetoriais coloridas em COLRv1 no Chrome (vídeo)
- Especificação da tabela COLR (link em inglês)
API de posicionamento para Configurações rápidas
As Configurações rápidas na aba de notificações são uma maneira conveniente para o usuário mudar configurações ou realizar ações rápidas sem sair do contexto de um app. Deixamos mais fácil encontrar e adicionar apps que fornecem blocos personalizados às Configurações rápidas. Usando uma nova API de posicionamento de bloco, o app agora pode solicitar que o usuário adicione diretamente um bloco personalizado ao conjunto de blocos ativos de Configurações rápidas. Em vez de precisar acessar as Configurações rápidas para adicionar o bloco, uma nova caixa de diálogo do sistema permite que ele o adicione em uma única etapa, sem sair do app.
Visualização da área de transferência
No Android 13 e versões mais recentes, o sistema mostra uma confirmação visual padrão ao adicionar conteúdo à área de transferência. A nova confirmação faz o seguinte:
- Confirma que o conteúdo foi copiado.
- Oferece uma visualização do conteúdo copiado.
Esse recurso padroniza as várias notificações exibidas pelos apps após copiar um conteúdo e oferece aos usuários mais controle sobre a área de transferência. Para mais informações, acesse a página do recurso copiar e colar.
Gesto "Voltar" preditivo
O Android 13 introduz um gesto de volta preditivo para os dispositivos Android, como smartphones, telas grandes e dobráveis. Para que haja suporte a esse recurso, é necessário atualizar o app.
Para ver a documentação detalhada, consulte Atualizar o app para oferecer suporte ao gesto "Voltar" preditivo. Você também pode consultar nosso codelab.
Áudio bluetooth de baixa energia
O áudio de baixa energia (LE Audio) é um áudio sem fio criado para substituir o Bluetooth clássico e permitir determinados casos de uso e topologias de conexão. Ele permite que os usuários compartilhem e transmitam áudio a amigos e familiares ou que participem de transmissões públicas para ter acesso a informações, entretenimento ou recursos de acessibilidade. Esse formato foi projetado para garantir que os usuários recebam áudio de alta fidelidade sem sacrificar a duração da bateria e possam alternar facilmente entre diferentes casos de uso que não são possíveis com o Bluetooth clássico. No Android 13 e versões mais recentes, o sistema inclui suporte integrado ao áudio de baixa energia. Os desenvolvedores vão receber esses recursos sem custo financeiro em dispositivos compatíveis.
MIDI 2.0
A partir do Android 13, o sistema inclui suporte ao padrão MIDI 2.0, incluindo a capacidade de conectar hardware MIDI 2.0 por USB. Esse padrão oferece recursos como maior resolução para controladores, melhor suporte para entonação não ocidental e performance mais expressiva usando controladores por nota.
Melhorias na eficiência da tela de apresentação
O Android 13 melhora a eficiência das telas de apresentação animadas na API Splash Screen:
O sistema infere a duração da animação diretamente da
AnimatedVectorDrawable
. Em versões anteriores ao Android 13, era necessário definir awindowSplashScreenAnimationDuration
diretamente.Use o novo atributo
windowSplashScreenBehavior
para controlar se o app sempre vai mostrar o ícone na tela de apresentação no Android 13 e versões mais recentes.
Para conferir a documentação detalhada, consulte Telas de apresentação.
Otimizações de ART
No Android 13 (nível 33 da API) e versões mais recentes, o ART torna a mudança de e para código
nativo muito mais rápida, com chamadas JNI até 2,5 vezes mais rápidas. O processamento de referência
de execução também foi retrabalhado para torná-lo quase não bloqueante, o que reduz ainda
mais o lag. Além disso, é possível usar a
API pública Reference.refersTo()
para recuperar objetos inacessíveis mais rapidamente. O
intérprete agora é mais rápido graças às pesquisas de classe e método otimizadas. O ART também
executa mais verificações de código de bytes no momento da instalação, evitando o custo da
verificação no tempo de execução e mantendo os tempos de inicialização do app rápidos.
Privacidade e segurança
Exportação mais segura de receptores registrados por contexto
Para ajudar a tornar os receptores de execução mais seguros, o Android 13 introduz a capacidade de o app especificar se um broadcast receiver registrado precisa ser exportado e ficar visível para outros apps no dispositivo. Nas versões anteriores do Android, qualquer app no dispositivo podia enviar uma transmissão desprotegida para um receptor registrado dinamicamente, a menos que esse receptor fosse protegido por uma permissão de assinatura.
Essa configuração de exportação está disponível em apps que fazem pelo menos uma das seguintes ações:
- Use a classe
ContextCompat
da versão 1.9.0 ou mais recente da biblioteca AndroidX Core. - Direcione o app ao Android 13 ou a versões mais recentes.
Seletor de fotos
O Android 13 (nível 33 da API) e versões mais recentes inclui uma melhor experiência do seletor de fotos. Quando o app inicia o seletor de fotos, os usuários selecionam imagens e vídeos específicos para compartilhar, como fotos do perfil, em vez de conceder acesso a ele para acessar toda a biblioteca de mídia. Essa é a maneira recomendada de acessar as fotos e os vídeos do usuário.
O seletor de fotos oferece melhor privacidade aos usuários porque o app não precisa declarar nenhuma permissão de execução. Além disso, ele fornece uma IU integrada e padronizada para apps, o que cria uma experiência do usuário mais consistente.
Nova permissão de execução para dispositivos Wi-Fi por perto
O Android 13 (nível 33 da API) introduz uma nova
permissão de execução no
grupo de permissões NEARBY_DEVICES
para apps que gerenciam as conexões de um dispositivo aos
pontos de acesso Wi-Fi por perto. Esses apps precisam declarar a nova permissão,
NEARBY_WIFI_DEVICES
,
quando
chamam várias APIs Wi-Fi.
Além disso, contanto que os apps não determinem a localização física das APIs
de Wi-Fi, eles não precisam declarar a
permissão ACCESS_FINE_LOCATION
quando são direcionados ao Android 13 ou versões mais recentes.
Saiba mais sobre a permissão para dispositivos Wi-Fi por perto.
Nova permissão para usar alarmes exatos
Se o app for destinado ao Android 13 ou versões mais recentes, use a permissão
USE_EXACT_ALARM
,
que é concedida automaticamente ao app. No entanto, para
que seu app possa usar essa permissão, ele precisa
ser:
- Um app de despertador ou timer.
- Um app de agenda que mostra notificações dos próximos eventos.
Caso seu app use alarmes exatos, mas não corresponda a nenhum dos casos
apresentados acima, continue declarando a permissão
SCHEDULE_EXACT_ALARM
,
ciente de que o usuário poderá decidir negar
acesso ao app.
Permissões que podem ser removidas pelo desenvolvedor
No Android 13 e versões mais recentes, o app pode revogar o acesso a permissões de execução não usadas. Essa API permite que o app execute tarefas que aumentam a privacidade do usuário, como:
- Remover as permissões não utilizadas.
- Seguir as práticas recomendadas de permissões, aumentando a confiança dos usuários. É recomendável mostrar aos usuários uma caixa de diálogo que apresente as permissões que o app revogou proativamente.
Esquema de assinatura de APK v3.1
O Android 13 inclui suporte ao esquema de assinatura de APK v3.1, que apresenta melhorias em relação ao esquema de assinatura de APK v3. Esse esquema resolve alguns problemas conhecidos com o esquema de assinatura de APK v3 em relação à rotação. Mais especificamente, o esquema de assinatura v3.1 oferece suporte ao direcionamento de versão do SDK, o que permite que a rotação seja destinada a uma versão mais recente da plataforma.
O esquema de assinatura v3.1 usa um novo ID de bloco, que não é reconhecido no 12L ou versões anteriores. Portanto, a plataforma aplica este comportamento de signatário:
- Dispositivos com o Android 13 ou versões mais recentes usam o signatário alternado no bloco v3.1.
- Dispositivos com versões mais antigas do Android ignoram o signatário alternado e, em vez disso, usam o signatário original no bloco v3.0.
Em apps que ainda não alternaram a chave de assinatura, nenhuma outra ação é necessária. Quando esses apps optarem por alternar, o sistema vai aplicar o novo esquema de assinatura v3.1 por padrão.
Apps que já foram alternados e querem continuar a usar a chave de assinatura alternada
no bloco de assinatura v3.0 precisam atualizar
a invocação do
apksigner
:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
... em que o API_LEVEL
é 32 ou menos.
Geração de relatórios de erros aprimorada no Keystore e no KeyMint
Para apps que geram chaves, o Keystore e o KeyMint agora oferecem indicadores de erros
mais detalhados e precisos. Adicionamos uma hierarquia de classe de exceção em
java.security.ProviderException
, com exceções específicas para o Android que incluem
códigos de erro do Keystore/KeyMint
e informam se o erro pode ser repetido. Também é possível modificar os métodos de geração
de chaves e usar assinatura ou criptografia para gerar essas novas exceções. Os
relatórios de erros aprimorados não se limitam à geração de chaves. Com esse recurso, você terá
o necessário para tentar gerar chaves novamente.
Suporte para tablets e telas grandes
O Android 13 foi desenvolvido com base nas otimizações para tablets introduzidas no Android 12 e na atualização de recursos do 12L, incluindo otimizações para a IU do sistema e melhorias ao trabalhar em várias tarefas ao mesmo tempo e nos modos de compatibilidade. Como parte do processo de testes, confira se o app é exibido corretamente em tablets e outros dispositivos de tela grande.
Para saber mais sobre as novidades e o que é necessário testar, consulte a página Suporte para tablets e telas grandes.
Gráficos
Sombreadores programáveis
No Android 13 e versões mais recentes, o sistema inclui suporte para objetos
RuntimeShader
programáveis, com
comportamento definido pela Linguagem de sombreamento gráfico do Android
(AGSL). A AGSL compartilha
grande parte da sintaxe com a GLSL, mas funciona no mecanismo de renderização do Android para
personalizar a exibição da tela do Android, além de filtrar o conteúdo da visualização.
O Android usa esses sombreadores internamente para implementar
efeitos de ondulação,
desfoque
e
rolagem esticada.
O Android 13 e versões mais recentes permite que você crie efeitos avançados parecidos para o
app.
Melhorias para Choreographer
O Android 13 introduz métodos da API pública para
Choreographer
e
ASurfaceControl
, que
fornecem apps com mais informações sobre os possíveis cronogramas de frames e adicionam
mais contexto a
SurfaceFlinger
sobre o ciclo de vida do frame. Assim como antes, os apps podem
postar um callback
para Choreographer
e receber informações do cronograma de frames. No Android 13 (API
de nível 33), Choreographer
retorna vários tempos de apresentação possíveis e
os prazos de frame correspondentes. Os apps podem escolher o horário da apresentação e,
consequentemente,
notificar SurfaceFlinger
da escolha. O SurfaceFlinger
não tenta aplicar transações nem
armazenar buffers antes do tempo de apresentação desejado.
Câmera
Captura de vídeo HDR
No Android 13 e versões mais recentes, as APIs Camera2 oferecem suporte à captura de vídeo High Dynamic Range (HDR), o que permite visualizar e gravar conteúdo de vídeo em HDR usando a câmera. Em comparação com o intervalo dinâmico padrão (SDR), o HDR oferece uma variedade maior de cores e aumenta o intervalo dinâmico do componente de luminância (dos 100 cd/m2 atuais para 1.000 s de cd/m2). Isso resulta em qualidade de vídeo que se aproxima mais da vida real, com cores mais ricas, realces mais brilhantes e sombras mais escuras.
Para saber mais sobre a captura de vídeo HDR, consulte a documentação sobre captura de vídeo HDR.
Mídia
Áudio espacial
O áudio espacial é uma experiência de áudio imersiva que torna o som do conteúdo de mídia mais realista para os usuários. Consulte nossa documentação sobre áudio espacial para detalhes sobre como integrar esse recurso.
Roteamento de áudio antecipado
Para ajudar os apps de música a identificar como o áudio vai ser roteado, o Android 13
introduz APIs de rota de áudio na classe
AudioManager
. A API
getAudioDevicesForAttributes()
permite extrair uma lista de dispositivos que podem ser usados para tocar o
áudio especificado e a API
getDirectProfilesForAttributes()
ajuda você a entender se o stream de áudio pode ser reproduzido diretamente. Use
essas novas APIs para definir o melhor
AudioFormat
a ser usado na sua faixa
de áudio.
Acessibilidade
Audiodescrição
O Android 13 (API de nível 33) introduz uma nova preferência de acessibilidade que pode ser aplicada para todo o sistema,
permitindo que os usuários ativem audiodescrições em todos os apps. A audiodescrição
é uma faixa de narração do sistema que descreve a apresentação do app
e o que está acontecendo na tela nos intervalos em
que o áudio é pausado.
Os apps podem seguir as preferências de audiodescrição do usuário. Para isso, basta
consultá-las usando isAudioDescriptionRequested()
,
conforme mostrado no snippet de código a seguir:
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
Para monitorar mudanças nas preferências do usuário, o app pode adicionar um listener ao
AccessbilityManager
:
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
Principal recurso
Atualizações do OpenJDK 11
O Android 13 inicia o trabalho de atualização das bibliotecas principais do Android para se alinhar à versão LTS do OpenJDK 11, com atualizações de biblioteca e suporte à linguagem Java 11 para desenvolvedores de aplicativos e plataformas. As principais mudanças de biblioteca introduzidas no Android 13 também vão ser disponibilizadas para dispositivos Android 12 por uma atualização do sistema do Google Play para o módulo ART Mainline.
O Android 13 inclui as mudanças abaixo nas principais bibliotecas:
- Suporte à palavra-chave
var
para variáveis locais e como lambdas de parâmetros. Novos métodos na classe String:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
Suporte a
Collection.toArray(IntFunction)
para facilitar a adaptação de uma coleção a uma matriz.Suporte aos métodos
ifPresentOrElse()
,isEmpty()
,orElseThrow()
estream()
nas classesjava.util
Optional
,OptionalDouble
,OptionalInt
eOptionalLong
.Suporte estendido para as
SocketOptions
, incluindo a reutilização de soquetes.As funcionalidades
NullReader
,NullWriter
,InputStream
,OutputStream
etransferTo()
Reader
, que transferem caracteres de leitura para umWriter
.A funcionalidade para codificação e decodificação de URLs usando
Charsets
foi adicionada.Funcionalidade de
Charset
paraFileReader
,FileWriter
,PrintStream
ePrintWriter
.Novas funções
transferTo()
,readNBytes()
,readAllBytes()
ewriteBytes()
paraByteArrayInput
ouOutputStream
eInput
ouOutputStream
.Suporte ao ambiente de execução e ao compilador para
java.lang.invoke.VarHandle
.Atualização do
java.util.concurrent
para a API OpenJDK 11 usandoVarHandle
internamente.
Java e OpenJDK são marcas registradas da Oracle e/ou afiliadas.