O Android 10 apresenta ótimos recursos e funcionalidades para usuários e desenvolvedores de aplicativos. Este documento destaca o que está disponível para os desenvolvedores.
Para saber mais sobre as APIs, leia a Relatório de diferenças da API ou acesse a Referência da API do Android: procure APIs que foram "adicionadas" API de nível 29". Confira também o comportamento do Android 10 (para aplicativos direcionados ao nível 29 da API e para todos os apps), além da privacidade , para saber mais sobre as áreas em que as mudanças na plataforma podem afetam seus apps.
Melhorias na segurança
O Android 10 apresenta vários recursos de segurança, resumidos nas seções a seguir.
Caixas de diálogo de autenticação biométrica aprimoradas
O Android 10 apresenta as melhorias abaixo para Suporte à autenticação biométrica:
- Uma verificação do recurso de autenticação biométrica.
- Um mecanismo substituto que permite que um usuário faça a autenticação usando o próprio dispositivo PIN, padrão ou senha, se não for possível autenticar usando a biometria entrada.
- Uma dica que informa ao sistema para não exigir confirmação do usuário depois que ele for autenticado usando uma modalidade biométrica implícita. Por exemplo, é possível informar ao sistema que nenhuma outra confirmação deve ser necessária após o usuário usando autenticação facial.
Executar código DEX incorporado diretamente no APK
A partir do Android 10, você pode dizer à plataforma para executar o código DEX incorporado diretamente no arquivo APK do seu app. Essa opção ajuda a evitar se um invasor conseguir adulterar o código compilado localmente no dispositivo.
Para mais informações, consulte Executar código DEX incorporado diretamente no APK.
Compatibilidade com TLS 1.3
O Android 10 adiciona suporte a TLS 1.3 O TLS 1.3 é uma grande revisão da Padrão TLS que inclui benefícios de desempenho e segurança aprimorada. Nossos os comparativos de mercado indicam que conexões seguras podem ser estabelecidas em até 40% com o TLS 1.3 em comparação com o TLS 1.2.
Para mais detalhes sobre nossa implementação do TLS 1.3, consulte a seção TLS nas mudanças de comportamento de todos os apps .
API pública Conscrypt
A partir do Android 10, o provedor de segurança Conscrypt inclui uma API pública para a funcionalidade TLS.
A coleção de classes em
android.net.ssl
contêm dados estáticos
métodos para acessar funcionalidades que não estão disponíveis na versão genérica
APIs javax.net.ssl
. Os nomes dessas classes podem ser inferidos como o plural
da classe javax.net.ssl
correspondente. Por exemplo, o código que opera
instâncias de javax.net.ssl.SSLSocket
podem usar métodos da
SSLSockets
.
Recursos de conectividade
O Android 10 inclui várias melhorias relacionadas a rede e conectividade.
API de conexão de rede Wi-Fi
O Android 10 agora é compatível com conexões ponto a ponto. Isso
permite que o aplicativo solicite ao usuário a alteração do ponto de acesso que o
ao qual o dispositivo está conectado usando
WifiNetworkSpecifier
para descrever as propriedades de uma rede solicitada. A conexão ponto a ponto é
para fins que não fornecem rede, como configuração de bootstrapping para
e secundários, como o Chromecast e o hardware do Google Home.
Para mais informações, consulte API Wi-Fi Network Request para conexão ponto a ponto e conectividade.
API de sugestão de rede Wi-Fi
O Android 10 adiciona suporte para que seu app solicite que o usuário se conecte a um ponto de acesso Wi-Fi. Você pode dar sugestões de qual rede se conectar A plataforma vai escolher qual ponto de acesso aceitar com base no a entrada do seu e de outros apps.
Para mais informações sobre esse recurso, consulte Sugestão de Wi-Fi.
Melhorias nos modos Wi-Fi de alto desempenho e baixa latência
O Android 10 permite que você dê uma dica ao modem usado para minimizar latência de rede.
O Android 10 estende a API Wi-Fi Lock para oferecer compatibilidade com alto desempenho de maneira eficaz e de baixa latência. A economia de energia do Wi-Fi está desativada para alto desempenho e de baixa latência, e a otimização da latência adicional pode ser ativada em modelos dependendo do suporte ao modem.
O modo de baixa latência só é ativado quando o aplicativo que está adquirindo o bloqueio em execução em primeiro plano e a tela estiver ligada. Esse modo é especialmente útil para apps de jogos em tempo real para dispositivos móveis.
Pesquisas especializadas no resolvedor de DNS
O Android 10 adiciona suporte nativo para buscas DNS especializadas usando
as pesquisas de texto não criptografado e o modo DNS sobre TLS. Antes, o DNS da plataforma
o resolvedor aceitava apenas registros A e AAAA, que permitem procurar apenas o IP
endereços associados a um nome, mas não permitiam nenhum outro tipo de registro.
A API DnsResolver
oferece resolução assíncrona e genérica, permitindo a busca de SRV
, NAPTR
e outros tipos de registro. Observe que a análise da resposta é deixada para execução pelo app.
Para apps baseados em NDK, consulte android_res_nsend
.
Wi-Fi Easy Connect
O Android 10 permite que você use o Easy Connect para provisionar o Wi-Fi.
credenciais para um dispositivo de peering, como uma substituição da WPS, que foi descontinuada.
Os apps podem integrar o Easy Connect à própria configuração e ao fluxo de provisionamento usando
as
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
intenção.
Para mais informações sobre esse recurso, consulte Wi-Fi Easy Connect.
API de conexão Wi-Fi Direct
As classes de API WifiP2pConfig
e WifiP2pManager
têm atualizações no Android 10.
para oferecer suporte a recursos de estabelecimento de conexão rápida com o Wi-Fi Direct usando
informações predeterminadas. Essas informações são compartilhadas por um canal paralelo, como
Bluetooth ou NFC.
O exemplo de código a seguir mostra como criar um grupo usando informações:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
Para participar de um grupo usando credenciais, substitua manager.createGroup()
pelo
seguintes:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Canais orientados à conexão (CoC) Bluetooth LE
O Android 10 permite que o app use conexões BLE CoC para transferir dados maiores streams entre dois dispositivos BLE. Essa interface abstrai o Bluetooth e de conectividade para simplificar a implementação.
Recursos de telefonia
O Android 10 inclui várias melhorias relacionadas à telefonia.
Melhorias na qualidade das chamadas
O Android 10 adiciona a capacidade de coletar informações sobre a qualidade de atualizações Chamadas de Subsistema multimídia IP (IMS), incluindo qualidade de e para a rede, em dispositivos compatíveis com o recurso.
Filtro de ligações e identificador de chamadas
O Android 10 oferece ao seu app meios para identificar chamadas que não
no catálogo de endereços do usuário como possíveis chamadas de spam e para que as chamadas de spam
silenciosamente rejeitada em nome do usuário. Informações sobre estas chamadas bloqueadas
são registradas como chamadas bloqueadas no registro de chamadas para fornecer maior transparência para
para o usuário quando ele
perdeu chamadas. O uso dessa API elimina a necessidade
de receber permissões READ_CALL_LOG
do usuário para oferecer a funcionalidade de filtro de ligações
e identificador de chamadas.
API de serviço de redirecionamento de chamadas
O Android 10 altera a forma como os intents de chamadas são processados. O
A transmissão NEW_OUTGOING_CALL
foi descontinuada e substituída pela
API CallRedirectionService
. A API CallRedirectionService
fornece
interfaces para modificar chamadas realizadas pela plataforma Android. Para
Por exemplo, apps de terceiros podem cancelar chamadas e redirecioná-las por VoIP.
Melhorias na criação de arquivos no armazenamento externo
Além de introduzir escopos armazenamento, O Android 10 adiciona os seguintes recursos relacionados a recursos externos armazenamento:
- Você pode usar o
IS_PENDING
flag para dar ao app acesso exclusivo a um arquivo de mídia gravado em disco. - Se você souber que há um local específico onde os arquivos devem ser armazenados, poderá dê uma dica ao sistema para onde armazenar os arquivos recém-gravados.
- Cada dispositivo de armazenamento externo tem um volume exclusivo nome de domínio.
Mídia e gráficos
O Android 10 introduz os novos recursos e APIs de mídia e gráficos a seguir:
Compartilhar entradas de áudio
O Android 10 adiciona a capacidade de dois apps compartilharem a entrada de áudio simultaneamente. Para informações completas, consulte Compartilhar entradas de áudio.
Captura de reprodução de áudio
O Android 10 oferece aos apps a capacidade de capturar a reprodução de áudio de outros apps. Para mais informações, consulte Captura de reprodução.
Barra de procura nas notificações do MediaStyle
No Android 10 e versões mais recentes, as notificações do MediaStyle
mostram uma barra de busca. A barra mostra
o progresso da reprodução de
PlaybackState.getPosition()
,
e, em alguns casos, pode ser usada para procurar um local no programa
em execução. A aparência e o comportamento da barra são controlados por estas regras:
- A barra de busca aparece se houver uma
MediaSession
ativa e se a duração (especificada porMediaMetadata.METADATA_KEY_DURATION
) for maior que zero. Isso significa que a barra não aparece para fluxos indeterminados, como transmissões ao vivo e transmissões de rádio. - Se a sessão implementar
ACTION_SEEK_TO
, o usuário poderá arrastar a barra de procura para controlar o local da reprodução.
API Native MIDI
A API Android Native MIDI (AMidi) oferece aos desenvolvedores de aplicativos a capacidade para enviar e receber dados MIDI com código C/C++, com maior integração com a lógica de controle/áudio C/C++ e minimizar a necessidade de JNI.
Para mais informações, consulte API Android Native MIDI.
Melhorias no MediaCodecInfo
O Android 10 adiciona métodos ao
MediaCodecInfo
que revelam mais
informações sobre um codec.
Para mais informações, consulte Codecs de mídia.
API Thermal
Quando os dispositivos ficam muito quentes, eles podem limitar a CPU e/ou GPU, e isso pode afetam apps e jogos de maneiras inesperadas. Apps que usam gráficos complexos, pesados computação ou atividade de rede sustentada têm mais chances de apresentar problemas podem variar entre dispositivos com base em frequências de núcleo e chipset, níveis de integração e também no empacotamento e formato dos dispositivos.
No Android 10, apps e jogos podem usar uma API Thermal para monitorar mudanças no o dispositivo e tomar medidas para reduzir o consumo de energia e restaurar o estado temperatura Os apps registram um listener no PowerManager, por meio do qual o sistema informa o status térmico contínuo, variando de leve e moderado a severo, crítico, de emergência e de desligamento.
Quando o dispositivo relata estresse térmico, apps e jogos podem ajudar recuando atividades contínuas para reduzir o uso de energia de várias formas. Por exemplo: os apps de streaming reduzam a resolução/taxa de bits ou o tráfego de rede, a câmera aplicativo poderá desativar o flash ou o aprimoramento intenso de imagem, o jogo poderá reduzir frame rate ou mosaico de polígonos, um app de mídia poderia reduzir o volume do alto-falante, e um app de mapas pode desativar o GPS.
A API Thermal exige uma nova camada de HAL do dispositivo. No momento, ela tem suporte em dispositivos Pixel com o Android 10 e estamos trabalhando com nosso fabricante parceiros para oferecer suporte amplo ao ecossistema o mais rápido possível.
Câmera e imagens
O Android 10 introduz os novos recursos de câmera e imagem a seguir:
Compatibilidade com câmera monocromática
O Android 9 (API de nível 28) apresentou pela primeira vez o recurso de câmera monocromática. O Android 10 inclui várias melhorias de compatibilidade com a câmera monocromática:
- Compatibilidade com o formato de fluxo Y8 para melhorar a eficiência da memória.
- Compatibilidade com captura em DNG bruto monocromático.
- Introdução de enumerações MONO e NIR CFA para distinguir entre elementos câmera monocromática e câmeras de infravermelho próximo.
É possível usar esse recurso para capturar uma imagem monocromática nativa. Uma lógica um dispositivo com várias câmeras pode usar uma câmera monocromática como uma subcâmera física para a melhorar a qualidade da imagem com pouca luz.
Formato Profundidade dinâmica
A partir do Android 10, as câmeras podem armazenar os dados de profundidade de uma imagem em um usando um novo esquema chamado Formato Profundidade Dinâmica (DDF, na sigla em inglês). Os apps podem solicitar a imagem JPG e seus metadados de profundidade, usando essa informação para aplicar o desfoque desejado no pós-processamento sem modificar o original dados de imagem.
Para ler a especificação desse formato, consulte Formato Profundidade dinâmica.
Formato de arquivo de imagem de alta eficiência
O formato de arquivo de imagem de alta eficiência (HEIF, na sigla em inglês) é um formato padrão de imagem e vídeo que introduz uma codificação de qualidade superior e menor tamanho de arquivo em comparação com outros formatos de arquivo.
Para mais informações sobre o formato do arquivo, consulte HEIC (link em inglês).
Melhorias na funcionalidade de várias câmeras
O Android 10 melhora a fusão de várias câmeras em uma única câmera lógica, um recurso introduzido no Android 9 (API de nível 28). Os seguintes itens foram adicionados a as API Camera2:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: permite consultar se a sessão transmitida pode ser usada para criar uma sessão de captura da câmera.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: ativa determinar o ID da câmera física ativa que apoia uma conexão lógica dispositivo de câmera É possível usar os IDs retornados para solicitar streams lógicos e streams de subcâmeras físicas para melhorar a eficiência do consumo de energia.
API de serviços de acessibilidade
O Android 10 apresenta o novo serviço de acessibilidade a seguir: recursos e APIs:
Sinalização de chave de entrada AccessibilityNodeInfo
A partir do Android 10, é possível chamar
isTextEntryKey()
para determinar se um determinado AccessibilityNodeInfo
representa uma chave de entrada de texto
que é parte de um teclado ou teclado.
Feedback falado da caixa de diálogo de acessibilidade
Nos casos em que os usuários precisam executar o atalho de acessibilidade para iniciar uma serviço de acessibilidade, o Android 10 permite que a caixa de diálogo seja acompanhados por um prompt de conversão de texto em voz se o serviço solicitar.
Atalho de acessibilidade quando a navegação por gestos está ativada
Quando o recurso de navegação por gestos está ativado no Android 10, a ferramenta não é visíveis ou selecionáveis. Para acessar o menu de serviços de acessibilidade, os usuários precisam execute um dos seguintes gestos:
- Deslizar para cima com dois dedos
- Deslizar para cima com dois dedos e segurar
Atalho de acessibilidade para teclados físicos
No Android 10, os usuários podem acionar o atalho de acessibilidade em uma no teclado físico pressionando Control+Alt+Z.
Melhoria do controlador de teclado virtual
No Android 10, os serviços de acessibilidade podem solicitar que o teclado virtual seja exibido mesmo quando o dispositivo detectar um teclado físico conectado. Os usuários podem modificar esse comportamento.
Tempos limite de acessibilidade definidos pelo usuário
O Android 10 introduz a
getRecommendedTimeoutMillis()
API. Esse método oferece suporte para tempos limite definidos pelo usuário para
elementos de IU não interativos. O valor de retorno é influenciado pelas ações
preferências e APIs de serviços de acessibilidade.
Melhorias no preenchimento automático
O Android 10 contém as seguintes melhorias no serviço de preenchimento automático.
Solicitações de preenchimento automático relacionadas com compatibilidade
Você pode usar o
FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
flag para determinar se uma solicitação de preenchimento automático foi gerada por compatibilidade
modo
Salvar nome de usuário e senha simultaneamente
É possível oferecer suporte a casos em que um aplicativo usa várias atividades para
exibir nome de usuário, senha e outros campos usando o
SaveInfo.FLAG_DELAY_SAVE
.
Interação do usuário com a IU de salvamento
É possível mostrar e ocultar um campo de senha em uma caixa de diálogo de salvamento definindo uma ação listener na caixa de diálogo e mudar a visibilidade da senha correspondente visualização remota.
Compatibilidade com atualização de conjuntos de dados
O preenchimento automático pode atualizar senhas existentes. Por exemplo, se um usuário já armazenar uma senha e salvar uma nova, o preenchimento automático solicitará que o usuário atualize a senha em vez de salvar uma nova.
Melhorias de classificação de campo
O Android 10 contém as seguintes melhorias para a API Field Classification.
Construtor UserData.Builder
O
UserData.Builder
foi alterado para se alinhar melhor ao padrão Builder
.
Permitir que um valor seja mapeado para vários tipos de IDs de categoria
Ao usar
UserData.Builder
pol.
No Android 10, agora é possível mapear um valor para vários tipos de IDs de categoria. Em
versões anteriores, uma exceção era gerada se um valor fosse adicionado mais de uma vez.
Compatibilidade aprimorada com números de cartão de crédito
A classificação de campo agora pode detectar números de quatro dígitos como os últimos quatro dígitos de um número de cartão de crédito.
Compatibilidade com a classificação de campo específico do app
O Android 10 adiciona
FillResponse.setUserData()
,
que permite definir dados do usuário específicos do app durante a sessão.
Isso ajuda o serviço de preenchimento automático a detectar tipos de campos com campos específicos
conteúdo.
Controles da IU e do sistema
O Android 10 traz as seguintes melhorias da interface do usuário:
Compatibilidade com limites do JVMTI PopFrame
O Android 10 adiciona suporte à
can_pop_frames
na implementação da JVMTI no Android. Ao depurar, esse recurso
permite que você execute novamente as funções depois de pausar em um ponto de interrupção e ajustar
locais, globais ou a implementação de uma função. Para mais informações, consulte
Página de referência do Pop Frame (em inglês) da Oracle.
API Surface control
O Android 10 oferece uma
API SurfaceControl
para acesso de baixo nível ao compositor do sistema
(SurfaceFlinger
). Para
a maioria dos usuários, o SurfaceView é a maneira correta de usar o compositor. A
API SurfaceControl
pode ser útil em alguns casos, como:
- Sincronização de várias superfícies
- Incorporação de superfície de processo cruzado
- Gerenciamento de ciclo de vida de nível inferior
A API SurfaceControl
está disponível nas
Vinculações do SDK e do NDK.
A implementação do NDK inclui uma API para troca manual de buffers com o
compositor. Isso oferece uma alternativa para os usuários que se deparam com o
limitações de
BufferQueue
Detecção de renderizador inativo WebView
O Android 10 introduz a
WebViewRenderProcessClient
abstrata, que os apps podem usar para detectar se um
WebView
deixou de responder. Para
usar esta classe:
- Defina sua própria subclasse e implemente a
onRenderProcessResponsive()
eonRenderProcessUnresponsive()
métodos. - Anexe uma instância do seu
WebViewRenderProcessClient
a uma ou mais objetosWebView
. - Se a
WebView
deixar de responder, o sistema chamará o métodoonRenderProcessUnresponsive()
do cliente, transmitindoWebView
eWebViewRenderProcess
Se oWebView
for de processo único, oWebViewRenderProcess
é nulo.) Seu app pode realizar as ações adequadas, como mostrar uma caixa de diálogo perguntando ao usuário se ele deseja interromper o processo de renderização.
Se a WebView
não estiver respondendo, o sistema chamará onRenderProcessUnresponsive()
.
periodicamente (não mais do que uma vez a cada cinco segundos), mas não realiza outra ação.
Se o WebView
se tornar responsivo
novamente, o sistema chamará onRenderProcessResponsive()
apenas uma vez.
Painéis de configurações
O Android 10 apresenta os Painéis de configurações, uma API que permite que os apps mostrem para os usuários no contexto do app. Isso evita que os usuários precisem acessar Configurações para alterar itens como NFC ou Dados móveis em para usar o app.
Por exemplo, suponha que um usuário abra um navegador da Web enquanto seu dispositivo está modo avião. Em versões anteriores ao Android 10, o app só podia exibir uma mensagem genérica pedindo ao usuário para abrir as Configurações para restaurar a conectividade. Com o Android 10, o app do navegador pode exibir um painel in-line mostrando as principais configurações de conectividade, como o modo avião, o Wi-Fi (incluindo redes próximas) e dados móveis. Com esse painel, os usuários podem restaurar a conectividade sem sair do app.
Para exibir um painel de configurações, acione uma intent com uma das seguintes opções:
Ações Settings.Panel
:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type
pode ser:
ACTION_INTERNET_CONNECTIVITY
- Mostra as configurações relacionadas à conectividade com a Internet, como modo avião, Wi-Fi e dados móveis.
ACTION_WIFI
- Mostra as configurações de Wi-Fi, mas não as outras configurações de conectividade. Isso é útil para aplicativos que precisam de uma conexão Wi-Fi para realizar uploads grandes ou downloads.
ACTION_NFC
- Mostra todas as configurações relacionadas à comunicação a curta distância (NFC).
ACTION_VOLUME
- Mostra as configurações de volume de todos os streams de áudio.
Melhorias de compartilhamento
O Android 10 oferece várias melhorias para o compartilhamento:
API Sharing Shortcuts
A API Sharing Shortcuts substitui as APIs Direct Share.
Em vez de recuperar os resultados de forma reativa sob demanda, a API Sharing Shortcuts
permite que os apps publiquem alvos de compartilhamento direto com antecedência. É assim que
o ShortcutManager
funciona.
Como as duas APIs são semelhantes, expandimos a ShortcutInfo
API para tornar o uso
mais fáceis de usar. Com a API Share Shortcuts, você pode atribuir diretamente
categorias ou pessoas a um alvo de compartilhamento. Os alvos de compartilhamento persistem no sistema
até que o mesmo app as atualize ou o app seja desinstalado.
O mecanismo antigo de compartilhamento direto ainda funciona, mas os apps que o usam têm uma do que os apps que usam a API de atalhos de compartilhamento.
ShortcutInfo.Builder
adiciona e aprimora métodos para fornecer mais informações sobre o alvo de compartilhamento.
Destinos de compartilhamento direto
Você pode publicar um atalho dinâmico como um destino de compartilhamento direto. Consulte Publicar destinos de compartilhamento direto.
ShortcutManagerCompat
é uma nova API AndroidX que oferece compatibilidade com a antiga API DirectShare. Isso
é a maneira preferida de publicar alvos de compartilhamento.
Visualização de texto
Quando um aplicativo compartilha conteúdo de texto, ele pode mostrar uma visualização opcional do o conteúdo na interface do Sharesheet.
Consulte Como adicionar visualizações rich text
Saiba mais
Para mais informações sobre como os apps podem compartilhar dados, consulte Como enviar dados simples para outros aplicativos e Como receber dados simples de outros apps
Tema escuro
O Android 10 oferece um tema escuro que se aplica à IU do sistema Android e aos apps em execução no dispositivo. Para mais informações, consulte Tema escuro.
Tipos de serviços em primeiro plano
O Android 10 introduz o atributo de manifesto XML
foregroundServiceType
, que você inclui na definição de vários serviços
específicos. É possível, embora raramente seja apropriado, atribuir vários
tipos de serviço em primeiro plano para um serviço específico.
A tabela a seguir mostra os diferentes tipos de serviço em primeiro plano e as serviços em que é apropriado declarar um tipo específico:
Tipo de serviço em primeiro plano | Exemplo de caso de uso para um serviço que deve declarar esse tipo |
---|---|
connectedDevice
| Acompanhar um monitor wearable de atividades físicas |
dataSync
| Fazer o download de arquivos de uma rede |
location
| Continuar uma ação iniciada pelo usuário |
mediaPlayback
| Tocar um livro de áudio, podcast ou música |
mediaProjection
| Gravar um vídeo da tela do dispositivo durante um curto período de tempo |
phoneCall
| Lidar com chamadas em curso |
Kotlin
O Android 10 inclui as seguintes atualizações para o desenvolvimento em Kotlin.
Anotações de valores nulos para APIs libcore
O Android 10 melhora a cobertura de anotações de nulidade em o SDK para as APIs libcore. Essas anotações permitem que os desenvolvedores de apps que estão usando a análise de valores nulos do Kotlin ou Java no Android Studio recebam informações de nulidade ao interagir com essas APIs.
Normalmente, violações de contratos de nulidade no Kotlin resultam em compilação.
erros. Para garantir a compatibilidade com o código existente, somente o
As anotações @RecentlyNullable
e @RecentlyNonNull
foram adicionadas. Isso significa
que as violações de nulidade resultam em avisos, em vez de erros.
Além disso, todas as anotações @RecentlyNullable
ou @RecentlyNonNull
que foram
adicionadas no Android 9 estão mudando para @Nullable
e @NonNull
, respectivamente.
Isso significa que, no Android 10 e versões mais recentes, as violações de nulidade
levar a erros em vez de avisos.
Para mais informações sobre mudanças de anotações, consulte O SDK do Android Pie agora é mais compatível com Kotlin no Blog de desenvolvedores Android.
NDK
O Android 10 inclui as alterações do NDK descritas a seguir.
Depuração aprimorada da propriedade do descritor de arquivo
O Android 10 adiciona o fdsan, que ajuda a localizar e corrigir problemas de propriedade de descritor de arquivos com mais facilidade.
Bugs relacionados ao uso incorreto da propriedade do descritor de arquivo, que tendem a se manifestar use-after-close e double-close, são análogos à alocação de memória bugs use-after-free e double-free, mas tendem a ser muito mais difíceis de diagnóstico e correção. O fdsan tenta detectar e/ou impedir o descritor de arquivo devido à aplicação da propriedade do descritor de arquivo.
Para mais informações sobre falhas relacionadas a esses problemas, acesse Erro detectado pelo fdsan. Para mais informações sobre o fdsan, consulte a Página do Googlesource no fdsan.
TLS ELF
Os aplicativos criados usando o NDK com uma API de nível mínimo 29 podem usar ELF TLS
em vez de emutls
. Agora é possível usar o vinculador dinâmico e estático
esse método de manipulação de variáveis locais de linha de execução.
Foram implementadas melhorias nos apps criados para o nível 28 da API e anteriores
para que libgcc/compiler-rt
resolva alguns problemas de emutls
.
Para mais informações, consulte Mudanças do Android para desenvolvedores do NDK.
Ambiente de execução
O Android 10 inclui a mudança no ambiente de execução descrita a seguir.
Acionamento de coleta de lixo baseada em Mallinfo
Quando pequenos objetos Java da plataforma fazem referência a objetos grandes no heap C++, a Objetos C++ podem ser reivindicados apenas quando o objeto Java é coletado e, por exemplo, finalizada. Em versões anteriores, a plataforma estimava os tamanhos muitos objetos C++ associados a objetos Java. Essa estimativa nem sempre foi preciso e, ocasionalmente, resulta em um aumento significativo no uso de memória, já que plataforma não conseguiu realizar a coleta de lixo quando deveria.
No Android 10, o coletor de lixo (GC) rastreia o tamanho total
do heap alocado pelo sistema malloc()
, garantindo que malloc()
alocações são sempre incluídas nos cálculos de acionamento de GC. Intercalação de apps
um grande número de alocações de C++ com execução de Java pode ver um aumento em
a frequência de coleta de lixo como resultado. Outros apps podem ter uma pequena redução.
Teste e depuração
O Android 10 inclui as melhorias em testes e depuração descritas a seguir.
Melhorias na geração de traces do sistema no dispositivo
No Android 10, é possível especificar limites para o tamanho e de um trace quando você executa uma rastros do sistema no dispositivo. Quando você especifica um desses valores, o sistema gera um trace longo, copiando periodicamente o buffer do trace para o arquivo de destino enquanto o trace é gravado. O trace é concluído quando os limites de tamanho ou duração que você especificou forem atingidos.
Use esses parâmetros adicionais para testar casos de uso diferentes dos que você testaria com um trace padrão. Por exemplo, você pode diagnosticar um bug de desempenho que só ocorre após um longo período de execução do app. Em neste caso, você poderia registrar um rastreamento longo durante um dia inteiro e, em seguida, analisar programador de CPU, atividade do disco, linhas de execução do app e outros dados no relatório para ajudar a determinar a causa do bug.
No Android 10 e versões mais recentes, os arquivos de rastreamento são salvos em um formato que podem ser abertas com o Perfetto, um projeto de código aberto para instrumentação e rastreamento de desempenho. Você pode Converta arquivos de rastreamento do Perfetto para o Systrace formato.
Melhorias no TextClassifier
O Android 10 oferece outras funcionalidades de classificação de texto na
interface
TextClassifier
.
Detecção de idioma
O método
detectLanguage()
funciona de maneira semelhante aos métodos de classificação já existentes. Ela
recebe um
TextLanguage.Request
e retorna uma
TextLanguage
objeto.
Os objetos TextLanguage
consistem em uma lista de pares ordenados. Cada par
contém uma localidade e uma pontuação de confiança correspondente para a classificação.
Sugestões de ações de conversa
O
suggestConversationActions()
funciona de maneira semelhante aos métodos de classificação existentes. Ele recebe um
ConversationActions.Request
e retorna uma
ConversationActions
objeto.
ConversationActions
Os objetos consistem em uma lista de
ConversationAction
objetos. Cada objeto ConversationAction
inclui um potencial
ação sugerida e sua pontuação de confiança.
Respostas inteligentes/ações em notificações
O Android 9 introduziu a capacidade de exibir respostas sugeridas em uma notificação. O Android 10 expande isso com a capacidade de incluir ações sugeridas baseadas em intents. Além disso, a plataforma gerar essas sugestões automaticamente. Os apps ainda podem fornecer ou desativar sugestões geradas pelo sistema.A API usada para gerar essas respostas faz parte do
TextClassifier
,
e também foi exposto diretamente a desenvolvedores no Android 10.
Leia a seção sobre melhorias no TextClassifier
para mais informações.
Se o app fornecer sugestões próprias, a plataforma não vai gerar nenhuma
sugestões automáticas. Se você não quiser que as notificações do seu app sejam exibidas
respostas ou ações sugeridas, desative as respostas geradas pelo sistema
e ações usando
setAllowGeneratedReplies()
e
setAllowSystemGeneratedContextualActions()