Android 10 para desenvolvedores

O Android 10 é construído em torno de três temas importantes. Primeiro, o Android 10 está moldando a vanguarda da inovação em dispositivos móveis com aprendizado de máquina avançado e suporte a dispositivos em ascensão, 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.

Veja 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, é possível otimizar seus apps para dobráveis e outros dispositivos de tela grande.

Dobráveis

Com 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 à medida que o dispositivo é dobrado ou desdobrado. O Android 10 adiciona várias melhorias em onResume e onPause para oferecer suporte à retomada múltipla e a notificar o 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 dobráveis e grandes. Para ajudar você a criar para dispositivos dobráveis, configure um emulador dobrável como um dispositivo virtual (AVD) no Android Studio. Para detalhes sobre como otimizar seus apps para dispositivos dobráveis, consulte o guia para desenvolvedores.

Redes 5G

O 5G promete fornecer velocidades consistentemente mais rápidas e com menor latência. O Android 10 adiciona suporte à plataforma para 5G e amplia as APIs existentes para ajudar você a aproveitar essas 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 eles, seus apps e jogos podem adaptar 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 abertura de 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 para todo o sistema, ideal para pouca luz e ajuda a economizar bateria. Os usuários podem ativar um novo tema escuro do sistema acessando Configurações ou ativando a Economia de bateria. Isso muda a interface do sistema para escuro e ativa o tema escuro de apps com suporte. Você pode criar um tema escuro personalizado para o app ou ativar um novo recurso Forçar modo escuro, que permite que o sistema crie 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 para desenvolvedores para mais informações.

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

Navegação por gestos

A navegação por gestos oferece aos apps a tela cheia para conteúdo.

O Android 10 introduz um modo de navegação totalmente por gestos 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. Ela mantém a navegação familiar "Voltar", "Início" e "Recentes" por deslizamentos da borda em vez de botões visíveis. Para combinar perfeitamente com a navegação por gestos, você precisa 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 interface não sejam obscurecidas. Comece a otimizar seu app hoje mesmo e confira nossa série de postagens do blog para mais informações.

Painéis de configurações

Agora você pode mostrar as principais configurações do sistema diretamente no contexto do seu app, usando 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 exibir um painel de configurações, basta disparar uma intent com uma das novas ações Settings.Panel.

Atalhos de compartilhamento

Os atalhos de compartilhamento tornam o compartilhamento mais rápido e fácil, permitindo que os usuários pulem diretamente para outro app para compartilhar conteúdo. Os desenvolvedores podem publicar destinos de compartilhamento que iniciam uma atividade específica nos apps com conteúdo anexado, e eles são mostrados aos usuários na interface de compartilhamento. Como são publicadas com antecedência, a interface 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 (link em inglês) para ver mais detalhes.

O compartilhamento de atalhos permite que os usuários acessem diretamente uma atividade específica nos apps com 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 aprimorada do sistema, permissões mais rigorosas e restrições sobre quais apps de dados podem usar. Confira as mudanças de privacidade para ver detalhes sobre como oferecer suporte a elas nos seus apps.

Agora os usuários podem optar por conceder acesso à localização quando o app estiver 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 acesse a localização 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 as mudanças de local, consulte o guia para desenvolvedores ou nossa postagem do blog.

Proteger os dados de local em buscas por rede: a maioria das APIs para verificar 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 exata.

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

Proteger os dados do usuário no armazenamento externo: o Android 10 apresenta várias mudanças para dar 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 em sandboxes particulares, mas precisam usar a 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.

Bloquear interrupções indesejadas: o Android 10 impede a inicialização de apps em segundo plano que inesperadamente aparecem em 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 com avanços em criptografia, aumento da proteção da plataforma e autenticação. Leia mais sobre as atualizações de segurança do Android 10 aqui.

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 revisão importante 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 aumentar a proteção para várias áreas críticas de segurança da plataforma.

Biometria aprimorada: o Android 10 estende o framework BiometricPrompt (link em inglês) para oferecer suporte a 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 a substituição de credenciais de dispositivos quando necessário. Saiba mais.

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 JPEG e XMP relacionados a elementos relacionados à profundidade e um mapa de profundidade e confiança incorporado no mesmo arquivo. Eles permitem 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á-la a 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 reproduz á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 ativar as legendas, a API permite que você ofereça suporte a casos de uso conhecidos, como jogos por transmissão ao vivo. Criamos esse novo recurso pensando na privacidade e na proteção de direitos autorais. Portanto, a capacidade de um app capturar o áudio de outro é limitada, oferecendo ao app controle total sobre a possibilidade de capturar os streams 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 transmitir 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+ (links em inglês) para vídeo High Dynamic Range em dispositivos com suporte a ele. 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 com suporte.

API Native MIDI

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

Microfones direcionais e com zoom

O Android 10 oferece mais controle sobre a captura de áudio usando uma nova API MicrofoneDirection. Você pode usar a API para especificar a 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 apresenta 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 o Android 10 e versões mais recentes e uma recomendação para todos os dispositivos de 32 bits. Já observamos um avanço significativo no suporte ao Vulkan no ecossistema. Entre os dispositivos com o Android N ou versões mais recentes, 53% oferecem suporte ao Vulkan 1.0.3 ou mais recente. Com o novo requisito do Android 10, esperamos melhorar ainda mais a adoção 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 casos de uso comuns, como gerenciar dispositivos IoT e sugerir conexões de Internet, sem exigir 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ão de rede permitem que os apps exibam as redes Wi-Fi preferenciais do 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, ligações 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 trabalha 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 ambiente 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. Durante a execução, o Android 10 adiciona a coleta de lixo geracional ao coletor de lixo de cópia simultânea (CC) do ART para tornar a coleta mais eficiente em termos de tempo e CPU, reduzir a instabilidade e ajudar os apps a funcionar melhor em dispositivos mais simples.

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

API Neural Networks 1.2

Adicionamos 60 novas operações, incluindo ARGMAX, ARGMIN, LSTM quantizado, além de diversas otimizações de desempenho. Isso estabelece a base 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 aprendizado de máquina, como o TensorFlow (link em inglês), para otimizar e lançar suporte para 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 para 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. Clique mais aqui.

Compatibilidade por meio de APIs públicas

O Android 10 continua a expandir as restrições em interfaces que não são SDK, para que os apps passem gradualmente a 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 evitar que seus apps sejam corrompidos, ativamos as restrições somente quando o app é direcionado ao 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 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 fabricantes de silício. Com o Treble, os fabricantes de dispositivos podem trazer 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 (oficialmente chamado de atualizações do sistema do 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 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 promover a consistência da implementação da plataforma em todos os dispositivos e, com o tempo, tragam maior uniformidade que reduzirão os custos de desenvolvimento e teste.

Primeiros passos

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