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 segundo lugar, 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 mais recentes inovações de hardware e software para criar incríveis experiências de app para os usuários.

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

Dobráveis

Graças à compatibilidade com várias janelas, o Android 10 amplia a função multitarefa entre janelas de apps e proporciona continuidade de tela para manter o estado do app à medida que o dispositivo é dobrado ou desdobrado. O Android 10 adiciona várias melhorias em onResume e onPause para oferecer compatibilidade com várias retomadas e notificar seu app quando ele estiver focado. 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 nas 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 da notificação.

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 seu app ou ativar o novo recurso de forçar modo escuro, que permite ao sistema criar dinamicamente uma versão escura do tema atual. 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, faça seu conteúdo ir de uma ponta a ponta da tela, desenhando inclusive 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 mostrar 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 estes 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 ShareTarget do AndroidX. 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 a 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 IU aprimorada do sistema, permissões e restrições mais rígidas sobre quais apps de dados podem ser usados. Consulte as mudanças de privacidade para saber como oferecer compatibilidade a 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 maior parte das APIs para buscar 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 que apps em segundo plano apareçam inesperadamente em primeiro plano e assumam 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 aprimorada.

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 compatibilidade com métodos de autenticação passiva, como facial, 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 streaming de áudio usando uma nova API de captura de reprodução de áudio. Além de ativar legendas, a API permite que você ofereça suporte a casos de uso comuns, como jogos por transmissão ao vivo. 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 que os provedores de mídia transmitam conteúdo de vídeo de alta qualidade para dispositivos Android usando menos largura de banda. Além disso, o Android 10 é compatível com a codificação de áudio usando o Opus, um codec aberto e sem royalties otimizado para streaming de voz e música, e o HDR10+ para vídeo 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 MicrophoneDirection. 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á gravando 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. O Vulkan 1.1 é agora 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 latencia. Eles podem ser um grande benefício quando a baixa latência for 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 uma série de 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 o aprimoramento intensivo da imagem, um jogo pode reduzir a frame rate ou a tesselação de polígonos. Saiba 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 estiver restrita, solicite uma nova API pública para essa interface. 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 compatível com o Projeto Mainline (link em inglês), oficialmente chamado de atualizações do sistema Google Play. Esse projeto é nossa nova tecnologia para proteger os usuários do Android e continuar atualizando os dispositivos com alterações de código importantes, diretamente pelo Google Play. Com as atualizações do sistema do Google Play, podemos atualizar componentes internos específicos em todos os dispositivos com Android 10 e versões mais recentes, sem exigir uma atualização completa do sistema feita pelo fabricante do dispositivo.

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.