Android 10 para desenvolvedores

O Android 10 é construído em torno de três temas importantes. Primeiro, o Android 10 está liderando a inovação móvel com machine learning avançado e suporte a dispositivos emergentes, como smartphones dobráveis e com 5G. Em seguida, o Android 10 tem um foco central em privacidade e segurança, com quase 50 recursos que oferecem aos usuários maior proteção, transparência e controle. Por fim, o Android 10 expande os controles de bem-estar digital dos usuários, para que indivíduos e famílias possam encontrar um melhor equilíbrio com a tecnologia.

Confira o que há no Android 10 para desenvolvedores e como você pode usá-lo hoje.

Inovação e novas experiências

Com o Android 10, você pode aproveitar as inovações mais recentes de hardware e software para criar experiências de app incríveis para os usuários.

Com o Android 10, você pode otimizar seus apps para dobráveis e outros dispositivos de tela grande.

Dobráveis

Com base no suporte robusto a várias janelas, o Android 10 estende a multitarefa entre janelas de apps e fornece continuidade de tela para manter o estado do app conforme o dispositivo é dobrado ou aberto. O Android 10 adiciona várias melhorias em onResume e onPause para oferecer suporte à retomada múltipla e notificar seu app quando ele estiver em foco. Ele também muda a forma como o atributo de manifesto resizeableActivity funciona, para ajudar a gerenciar como o app é exibido em telas grandes e dobráveis. Para ajudar a criar para dispositivos dobráveis, você pode configurar um emulador dobrável como um dispositivo virtual (AVD) no Android Studio. Para detalhes sobre como otimizar seus apps para dobráveis, consulte o guia do desenvolvedor.

Redes 5G

O 5G promete fornecer velocidades consistentemente mais rápidas e com menos latência. O Android 10 adiciona suporte à plataforma para 5G e amplia as APIs existentes para ajudar você a tirar proveito dessas melhorias. Você pode usar APIs de conectividade para detectar se o dispositivo tem uma conexão de largura de banda alta e verificar se a conexão é limitada. Com isso, seus apps e jogos podem personalizar experiências ricas e imersivas para usuários em 5G.

"Resposta inteligente" nas notificações

O Android 10 usa ML no dispositivo para sugerir ações contextuais em notificações, como respostas inteligentes para mensagens ou abrir um mapa para um endereço na notificação. Seus apps podem aproveitar esse recurso imediatamente, sem que você precise fazer nada. As respostas e ações inteligentes fornecidas pelo sistema são inseridas diretamente nas notificações por padrão. Você ainda pode fornecer suas próprias respostas e ações, se quiser. Basta desativar a Resposta inteligente por notificação usando setAllowGeneratedReplies() e setAllowSystemGeneratedContextualActions().

A Resposta inteligente pode sugerir ações com base no conteúdo das notificações.

Tema escuro

O Android 10 adiciona um tema escuro em todo o sistema, que é ideal para ambientes com pouca luz e ajuda a economizar bateria. Os usuários podem ativar um novo tema escuro do sistema acessando "Configurações" ou ativando o recurso "Economia de bateria". Essa alteração escurece a IU do sistema e ativa o tema escuro dos apps compatíveis. Você pode criar um tema escuro personalizado para o app ou ativar um novo recurso "Forçar modo escuro", que permite ao sistema criar dinamicamente uma versão escura usando o tema existente. Você também pode aproveitar o recurso DayNight do AppCompat para oferecer um tema escuro para usuários em versões anteriores do Android. Consulte o guia do desenvolvedor para mais informações.

O Android 10 pode criar um tema escuro para seu app dinamicamente com o recurso de forçar modo escuro.

Navegação por gestos.

A navegação por gestos permite que os apps usem a tela inteira para exibir conteúdo.

O Android 10 introduz um modo de navegação totalmente gestual que elimina a área da barra de navegação e permite que os apps usem a tela cheia para oferecer experiências mais ricas e imersivas. Ele mantém a conhecida navegação com as opções "Voltar", "Início" e "Recentes" por meio de gestos de deslizar na borda da tela em vez de botões visíveis. Para combinar perfeitamente com a navegação por gestos, é necessário ir de ponta a ponta, desenhando por trás da barra de navegação para criar uma experiência imersiva. Para implementar isso, os apps precisam usar a API setSystemUiVisibility() para exibir a tela cheia e processar WindowInsets conforme apropriado para garantir que partes importantes da IU não sejam ocultadas. Comece a otimizar seu app hoje mesmo e confira nossa série de postagens do blog para saber mais.

Painéis de configurações

Agora você pode mostrar as principais configurações do sistema diretamente no contexto do seu app, por meio de uma nova API Settings Panel. Um painel de configurações é uma interface flutuante que você invoca para mostrar as configurações que os usuários podem precisar, como conectividade com a Internet, NFC e volume de áudio. Por exemplo, um navegador pode exibir um painel com configurações de conectividade, como modo avião, Wi-Fi (incluindo redes próximas) e dados móveis. Para mostrar um painel de configurações, basta acionar um intent com uma das novas ações Settings.Panel.

Atalhos de compartilhamento

Esses atalhos agilizam e facilitam o compartilhamento, permitindo que os usuários pulem diretamente para outro app para compartilhar conteúdo. Os desenvolvedores podem publicar destinos de compartilhamento que iniciem uma atividade específica nos apps com conteúdo anexado, e esses são mostrados aos usuários na IU de compartilhamento. Como eles são publicados com antecedência, a IU de compartilhamento é carregada instantaneamente quando iniciada. Os atalhos de compartilhamento são semelhantes aos atalhos de apps e usam a mesma API ShortcutInfo. A API também é compatível com a biblioteca AndroidX do ShareTarget. Consulte o app de exemplo para saber mais.

Os atalhos de compartilhamento permitem que os usuários acessem diretamente uma atividade específica nos apps com o conteúdo anexado.

Privacidade para os usuários

A privacidade é um foco central no Android 10, desde proteções mais fortes na plataforma até novos recursos projetados com a privacidade em mente. Com base em versões anteriores, o Android 10 inclui extensas mudanças para proteger a privacidade e dar mais controle aos usuários, com interface do sistema aprimorada, permissões mais rígidas e restrições sobre o que os apps de dados podem usar. Consulte as mudanças de privacidade para detalhes sobre como oferecer compatibilidade com elas nos seus apps.

Agora, os usuários podem optar por conceder acesso à localização quando o app está em primeiro plano.

Dar aos usuários mais controle sobre os dados de local: os usuários têm mais controle sobre os dados de local por meio de uma nova opção de permissão. Agora eles podem permitir que um app acesso o local apenas enquanto o app estiver em uso (em execução em primeiro plano). Para a maioria dos apps, isso fornece um nível de acesso suficiente, enquanto para os usuários é uma grande melhoria na transparência e no controle. Para saber mais sobre mudanças de local, consulte o guia do desenvolvedor ou nossa postagem do blog.

Proteger dados de local em buscas por redes: a maioria das APIs para procurar redes já exigia a permissão de localização aproximada. O Android 10 aumenta a proteção em torno dessas APIs exigindo a permissão de localização precisa em vez disso.

Impedir o rastreamento de dispositivos: os apps não podem mais acessar identificadores de dispositivo não reconfiguráveis que poderiam ser usados para rastreamento, incluindo IMEI, número de série e identificadores semelhantes. O endereço MAC do dispositivo também é randomizado quando conectado a redes Wi-Fi por padrão. Leia as práticas recomendadas para escolher os identificadores certos para seu caso de uso e confira os detalhes aqui.

Proteger os dados do usuário no armazenamento externo: o Android 10 introduz uma série de mudanças para oferecer aos usuários mais controle sobre os arquivos no armazenamento externo e os dados do app dentro deles. Os apps podem armazenar os próprios arquivos nas sandboxes privadas, mas precisam usar o MediaStore para acessar arquivos de mídia compartilhados e usar o seletor de arquivos do sistema para acessar arquivos compartilhados na nova coleção "Downloads". Saiba mais aqui.

Bloquear interrupções indesejadas: o Android 10 impede inicializações de apps em segundo plano que inesperadamente passam para o primeiro plano e assumem o foco de outro app. Saiba mais aqui.

Segurança

O Android 10 introduz vários recursos que mantêm os usuários mais seguros por meio de avanços em criptografia, maior proteção da plataforma e autenticação. Leia mais sobre as atualizações de segurança do Android 10 aqui (link em inglês).

Criptografia de armazenamento: todos os dispositivos compatíveis lançados com o Android 10 precisam criptografar os dados do usuário. Para tornar isso mais eficiente, o Android 10 inclui o Adiantum, nosso novo modo de criptografia.

TLS 1.3 por padrão: o Android 10 também ativa o TLS 1.3 por padrão, uma grande revisão do padrão TLS com benefícios de desempenho e segurança melhorada.

Aumento da proteção da plataforma: o Android 10 também inclui maior proteção para várias áreas críticas de segurança da plataforma.

Biometria aprimorada: o Android 10 amplia o framework BiometricPrompt para oferecer suporte a métodos de autenticação passiva, como rosto, e adicionar fluxos de autenticação implícitos e explícitos. No fluxo explícito, o usuário precisa confirmar explicitamente a transação no TEE durante a autenticação. O fluxo implícito foi projetado para uma alternativa mais leve para transações com autenticação passiva. O Android 10 também melhora o substituto das credenciais do dispositivo quando necessário. Saiba mais aqui.

Câmera e mídia

Profundidade dinâmica para fotos

Agora, os apps podem solicitar uma imagem de Profundidade dinâmica, que consiste em metadados XMP de JPEG relacionados a elementos associados à profundidade, além de um mapa de profundidade e confiança incorporado ao mesmo arquivo. Isso permite que você ofereça opções especializadas de desfoque e bokeh no seu app. A Profundidade dinâmica é um formato aberto para o ecossistema, e estamos trabalhando com nossos parceiros para levá-lo para dispositivos com Android 10 e versões mais recentes.

Com a imagem de Profundidade dinâmica, você pode oferecer opções especializadas de desfoque e bokeh no seu app.

Captura de reprodução de áudio

Agora, qualquer app que reproduza áudio pode permitir que outros apps capturem o stream de áudio usando uma nova API de captura de reprodução de áudio. Além de permitir a criação de legendas, a API permite oferecer suporte a casos de uso conhecidos, como transmissão ao vivo de jogos. Criamos esse novo recurso com a privacidade e a proteção de direitos autorais em mente. Assim, a capacidade de um app de capturar o áudio de outro app é restringida, dando aos apps controle total sobre a possibilidade de captura dos streamings de áudio. Leia mais nesta postagem do blog.

Novos codecs de áudio e vídeo

O Android 10 adiciona suporte ao codec de vídeo de código aberto AV1, que permite aos provedores de mídia fazer streaming de conteúdo de vídeo de alta qualidade para dispositivos Android usando menos largura de banda. Além disso, o Android 10 oferece suporte à codificação de áudio usando o Opus, um codec aberto e livre de royalties otimizado para streaming de voz e música, e o HDR10+ para vídeos de High Dynamic Range em dispositivos compatíveis. A API MediaCodecInfo apresenta uma maneira mais fácil de determinar os recursos de renderização de vídeo de um dispositivo Android. Para qualquer codec, você pode conferir uma lista de tamanhos e frame rates compatíveis.

API Native MIDI

Para apps que executam o processamento de áudio em C++, o Android 10 apresenta uma API MIDI nativa para se comunicar com dispositivos MIDI pelo NDK. Essa API permite que os dados MIDI sejam recuperados em um callback de áudio usando uma leitura não bloqueante, permitindo o processamento de baixa latência de mensagens MIDI. Teste o app de exemplo e o código-fonte aqui (link em inglês).

Microfones direcionais e com zoom

O Android 10 oferece mais controle sobre a captura de áudio por meio de uma nova API MicrofoneDirection. Você pode usar a API para especificar uma direção preferida do microfone ao fazer uma gravação de áudio. Por exemplo, quando o usuário está fazendo um vídeo de "selfie", você pode solicitar o microfone frontal para gravação de áudio (se houver). Além disso, essa API introduz uma maneira padronizada de controlar microfones com zoom, permitindo que seu app tenha controle sobre a dimensão do campo de gravação.

Vulkan em alta

O Android 10 expande o impacto do Vulkan com nossa implementação da API multiplataforma de baixa sobrecarga para gráficos 3D de alto desempenho. Agora, o Vulkan 1.1 é um requisito em todos os dispositivos de 64 bits com Android 10 e versões mais recentes, e uma recomendação para todos os dispositivos de 32 bits. Já vemos um interesse significativo na compatibilidade com Vulkan no ecossistema: entre os dispositivos que executam o Android N ou versões posteriores, 53% são compatíveis com o Vulkan 1.0.3 ou versões mais recentes. Com o novo requisito do Android 10, esperamos que a adoção melhore ainda mais no próximo ano.

Conectividade

Melhor conectividade ponto a ponto e de Internet

Refatoramos a pilha de Wi-Fi para melhorar a privacidade e o desempenho, além de melhorar os casos de uso comuns, como gerenciar dispositivos IoT e sugerir conexões de Internet, sem exigir a permissão de localização. As APIs de conexão de rede facilitam o gerenciamento de dispositivos IoT por Wi-Fi local, para funções ponto a ponto, como configuração, download ou impressão. As APIs de sugestões de rede permitem que os apps mostrem as redes Wi-Fi preferenciais para o usuário para conectividade com a Internet.

Modos de desempenho com Wi-Fi

Agora, os apps podem solicitar Wi-Fi adaptável ativando os modos de alto desempenho e baixa latência. Isso pode ser um grande benefício quando a baixa latência é importante para a experiência do usuário, como jogos em tempo real, chamadas de voz ativas e casos de uso semelhantes. A plataforma funciona com o firmware do dispositivo para atender ao requisito com o menor consumo de energia. Para usar os novos modos de desempenho, chame WifiManager.WifiLock.createWifiLock() com WIFI_MODE_FULL_LOW_LATENCY ou WIFI_MODE_FULL_HIGH_PERF. Nesses modos, a plataforma funciona com o firmware do dispositivo para atender ao requisito com o menor consumo de energia.

Conceitos básicos do Android

Otimizações de ART

As melhorias no tempo de execução do ART ajudam seus apps a iniciar mais rapidamente, consumir menos memória e executar de forma mais suave, sem exigir nenhum trabalho de você. Os perfis do ART fornecidos pelo Google Play permitem que o ART pré-compile partes do seu app antes mesmo de ele ser executado. No momento da execução, o Android 10 adiciona a coleta de lixo geracional ao coletor de lixo de cópia simultânea (CC, na sigla em inglês) do ART para tornar a coleta de lixo mais eficiente em termos de tempo e CPU, reduzir a instabilidade e ajudar os apps a serem executados melhor em dispositivos de baixa capacidade.

Este gráfico mostra a porcentagem de melhoria no tempo de inicialização de apps específicos quando testados usando perfis do Play.

API Neural Networks 1.2

Adicionamos 60 novas operações, incluindo ARGMAX, ARGMIN, LSTM quantizado, além de várias otimizações de desempenho. Isso estabelece as bases para acelerar uma gama muito maior de modelos, como aqueles para detecção de objetos e segmentação de imagens. Estamos trabalhando com fornecedores de hardware e frameworks conhecidos de machine learning, como TensorFlow (link em inglês), para otimizar e implantar a compatibilidade com a NNAPI 1.2.

API Thermal

Quando os dispositivos ficam muito quentes, eles podem limitar a CPU e/ou a GPU, e isso pode afetar apps e jogos de maneiras inesperadas. No Android 10, os apps e jogos podem usar uma API Thermal para monitorar mudanças no dispositivo e tomar medidas que ajudem a restaurar a temperatura normal. Por exemplo, apps de streaming podem reduzir a resolução/taxa de bits ou o tráfego de rede, um app de câmera pode desativar o flash ou a melhoria intensiva de imagem, ou um jogo pode reduzir o frame rate ou a tesselação de polígonos. Leia mais aqui.

Compatibilidade por meio de APIs públicas

O Android 10 continua a expandir as restrições nas interfaces que não são SDK, para que os apps mudem gradualmente para usar apenas APIs públicas. Se uma interface que você usa atualmente for restrita, solicite uma nova API pública para ela. Para ajudar você a fazer a transição e impedir que seus apps sejam interrompidos, nós ativamos as restrições somente quando o app está direcionado para o Android 10 (API 29). Para mais detalhes sobre as restrições, consulte o guia do desenvolvedor.

Atualizações mais rápidas, código mais atualizado

O Android 10 foi criado para receber atualizações mais rápidas por meio do Projeto Treble, que fornece uma interface consistente e testável entre o Android e o código do dispositivo subjacente dos fabricantes de dispositivos e do hardware utilizado. Com o Treble, os fabricantes de dispositivos podem levar o Android 10 para dispositivos compatíveis com o Treble mais rapidamente e com menor custo.

O Android 10 também é a primeira versão com suporte ao Projeto Mainline (oficialmente chamado de atualizações do sistema Google Play), nossa nova tecnologia para proteger os usuários do Android e manter os dispositivos atualizados com mudanças de código importantes, diretamente do Google Play. Com as atualizações do sistema do Google Play, podemos atualizar componentes internos específicos em todos os dispositivos com o Android 10 e versões mais recentes, sem precisar de uma atualização completa do sistema do fabricante.

Para os desenvolvedores, esperamos que essas atualizações no Android 10 ajudem a impulsionar a consistência da implementação da plataforma em todos os dispositivos e, com o tempo, tragam maior uniformidade, o que reduzirá os custos de desenvolvimento e teste.

Primeiros passos

Para conferir todos os recursos de desenvolvedor do Android 10, acesse developer.android.com/10.