O (FLoC) oferece um mecanismo de preservação de privacidade para a seleção de anúncios com base em interesses.
Quando um usuário navega pela Web, o navegador utiliza o algoritmo do FLoC para determinar a "coorte de interesses", que será a mesma para milhares de navegadores com históricos similares de navegação recente. O navegador recalcula sua coorte periodicamente no dispositivo do usuário, sem compartilhar dados individuais de navegação com o fornecedor do navegador ou qualquer outra entidade.
Os anunciantes (sites que pagam por anúncios) podem incluir código em seus próprios sites a fim de coletar e fornecer dados de coorte a suas plataformas de tecnologia de anúncios (empresas que fornecem software e ferramentas para a entrega de anúncios). Por exemplo, uma plataforma de tecnologia de anúncios pode aprender em uma loja de calçados on-line que os navegadores das coortes 1101 e 1354 parecem interessados nos equipamentos de caminhada da loja. Com outros anunciantes, a plataforma de tecnologia de anúncios aprende sobre outros interesses dessas coortes.
Posteriormente, a plataforma de anúncios pode usar esses dados para selecionar anúncios relevantes (como um anúncio de botas de caminhada da loja de calçados) quando um navegador de uma dessas coortes solicitar uma página de um site que exibe anúncios, como um site de notícias.
O Privacy Sandbox é uma série de propostas para atender a casos de uso de terceiros sem cookies de terceiros ou outros mecanismos de rastreamento. Consulte uma visão geral de todas as propostas em Digging into the Privacy Sandbox.
Essa proposta requer seu feedback. Se tiver algum comentário, crie uma questão no repositório FLoC Explainer. Se você tiver algum feedback sobre o experimento no Chrome com essa proposta, poste uma resposta no Intent to Experiment.
Muitas empresas utilizam a publicidade para atrair tráfego para seus sites, e muitos sites de editores financiam conteúdo com a venda de inventários de anúncios. As pessoas geralmente preferem ver anúncios que são relevantes e úteis para elas, e anúncios relevantes também trazem mais negócios para os anunciantes e mais receita para os sites que os hospedam. Em outras palavras, o espaço publicitário é mais valioso quando exibe anúncios relevantes. Portanto, a seleção de anúncios relevantes aumenta a receita dos sites apoiados por anúncios. Isso, por sua vez, significa que os anúncios relevantes ajudam a financiar a criação de conteúdos que beneficiam os usuários.
No entanto, muitas pessoas estão preocupadas com as implicações de privacidade da publicidade personalizada, que atualmente se baseia em técnicas como cookies de rastreamento e impressões digitais de dispositivos que são usados para rastrear comportamentos individuais de navegação. O objetivo da proposta do FLoC é permitir uma seleção mais eficiente de anúncios sem comprometer a privacidade.
O exemplo abaixo descreve os diferentes papéis na seleção de um anúncio usando o FLoC.
O anunciante (uma empresa que paga pela publicidade) neste exemplo é um varejista on-line de calçados:shoestore.example
O editor (um site que vende espaço publicitário) no exemplo é um site de notícias:dailynews.example
A plataforma de tecnologia de anúncios (que fornece software e ferramentas para a entrega de anúncios) é:adnetwork.example
Neste exemplo, chamamos os usuários de Yoshi e Alex. Inicialmente, os navegadores deles pertencem à mesma coorte, 1354.
Demos aos usuários os nomes Yoshi e Alex, mas apenas para a finalidade do exemplo. Com o FLoC, os nomes e as identidades individuais não são revelados ao anunciante, ao editor ou à plataforma de tecnologia de anúncios.
Não pense na coorte como uma coleção de pessoas. Você deve pensar nela como um agrupamento de atividades de navegação.
Agora, é a vez de Alex.
As técnicas atuais de seleção de anúncios se baseiam em técnicas como cookies de rastreamento e impressões digitais de dispositivos, que são utilizados por terceiros, como os anunciantes, para rastrear comportamentos individuais de navegação.
Com o FLoC, o navegador não compartilha o histórico de navegação com o serviço FLoC ou qualquer outra entidade. O navegador no dispositivo do usuário determina a qual coorte pertence. O histórico de navegação do usuário nunca sai do dispositivo.
Em nenhum ponto desse processo o histórico de navegação do usuário é compartilhado com o serviço FLoC ou com qualquer terceiro. A coorte do navegador é calculada pelo navegador no dispositivo do usuário. Nenhum dado do usuário é adquirido ou armazenado pelo serviço FLoC.
SIM! A coorte de um navegador com certeza pode mudar. Você provavelmente não visita os mesmos sites todas as semanas, e a coorte do navegador refletirá isso.
Uma coorte representa um cluster de atividades de navegação, não uma coleção de pessoas. As características de atividade de uma coorte são geralmente consistentes ao longo do tempo, e as coortes são úteis para a seleção de anúncios porque agrupam comportamentos similares de navegação recente. Os navegadores de cada pessoa flutuarão para dentro e para fora de uma coorte à medida que o comportamento de navegação mudar. Inicialmente, esperamos que o navegador recalcule sua coorte a cada sete dias.
No exemplo acima, a coorte dos navegadores de Yoshi e Alex é 1354. No futuro, os navegadores de Yoshi e Alex poderão passar para uma coorte diferente, caso os interesses deles mudem. No exemplo abaixo, o navegador de Yoshi passa para a coorte 1101, e o de Alex passa para a coorte 1378. Os navegadores de outras pessoas entrarão e sairão das coortes à medida que os interesses de navegação delas mudarem.
Uma coorte define um agrupamento de atividades de navegação, não um grupo de pessoas. Os navegadores entrarão e sairão de uma coorte à medida que suas atividades mudarem.
Como descrito acima, o navegador do usuário obtém dados de seu serviço FLoC que descrevem o modelo matemático para coortes: um espaço multidimensional que representa a atividade de navegação de todos os usuários. O navegador, então, usa um algoritmo para determinar a região desse "espaço de coorte" (ou seja, qual coorte) mais corresponde a seu próprio comportamento de navegação recente.
Cada coorte terá milhares de navegadores.
Um tamanho de coorte menor pode ser mais útil para personalizar anúncios, mas terá menos probabilidade de parar o rastreamento do usuário - e vice-versa. Um mecanismo para atribuir navegadores a coortes deve equilibrar privacidade e utilidade. O Privacy Sandbox usa a k-anonimidade para permitir que um usuário "se esconda na multidão". Uma coorte é k-anônima se for compartilhada por pelo menos k usuários. Quanto mais alto o número de k, mais a coorte preserva a privacidade.
O algoritmo de agrupamento usado para construir o modelo de coorte do FLoC é projetado para avaliar se uma coorte pode estar correlacionada a categorias confidenciais sem aprender por que uma categoria é confidencial. Coortes que possam revelar categorias confidenciais, como raça, sexualidade ou histórico médico, serão bloqueadas. Em outras palavras, ao determinar sua coorte, um navegador só escolherá entre as coortes que não revelarão categorias confidenciais.
Com o FLoC, o navegador de um usuário pertencerá a uma de milhares de coortes, juntamente com milhares de navegadores de outros usuários. Ao contrário dos cookies de terceiros e de outros mecanismos de segmentação, o FLoC revela apenas a coorte em que se encontra o navegador de um usuário, não o ID do usuário individual. Ele não permite a outras entidades a distinção de um indivíduo dentro de uma coorte. Além disso, as informações sobre a atividade de navegação que são usadas para a determinação da coorte de um navegador são mantidas localmente no navegador ou dispositivo e não são carregadas para outro lugar. O navegador pode, ainda, fazer uso de outros métodos de anonimização, como a privacidade diferencial.
Os sites terão a possibilidade de aceitar ou recusar o FLoC. Portanto, os sites com tópicos confidenciais poderão impedir que as visitas a seus sites sejam incluídas no cálculo do FLoC. Como proteção adicional, a análise feita pelo serviço FLoC avaliará se uma coorte pode revelar informações confidenciais sobre os usuários sem aprender por que essa coorte é confidencial. Caso uma coorte possa representar um número maior do que o típico de pessoas que visitam sites de uma categoria confidencial, essa coorte será totalmente removida. Situação financeira negativada e saúde mental estão entre as categorias confidenciais cobertas por essa análise.
Os sites recusam o FLoC definindo o cabeçalho interest-cohort=() em Permissions-Policy. Para a avaliação de origem do FLoC no Chrome 89, os sites que não fizerem essa recusa serão incluídos no cálculo do FLoC se o Chrome detectar que esses sites carregam anúncios. (A página Ad Tagging in Chromium explica como funciona o mecanismo de detecção de anúncios do Chrome.) É claro que os sites também podem simplesmente não acessar nem registrar os IDs de coorte de seus visitantes.
interest-cohort=()
A API do FLoC é muito simples: um único método que retorna uma promessa, que é resolvida em um objeto que fornece o id e a version da coorte:
id
version
document.interestCohort()
Os dados da coorte disponibilizados são semelhantes ao seguinte:
{ "id": "1415926", "version": "chrome.1.0"}
O valor de version permite que os sites que utilizam o FLoC saibam a qual navegador e qual modelo de FLoC o ID da coorte se refere. Como descrito abaixo, a promessa retornada por document.interestCohort() será rejeitada para qualquer frame que não tenha a permissão interest-cohort.
interest-cohort
A API do FLoC está disponível no Chrome 89 e superiores, mas se você não estiver participando da avaliação de origem, terá que definir sinalizações e executar o Chrome usando a linha de comando. A página Run Chromium with flags explica como fazer isso em diferentes sistemas operacionais.
Inicie o Chrome com as seguintes sinalizações:
--enable-blink-features=InterestCohortAPI --enable-features="FederatedLearningOfCohorts:update_interval/10s/minimum_history_domain_size_required/1"
Verifique se os cookies de terceiros não estão bloqueados e se não há nenhum bloqueador de anúncios em execução.
Veja a demonstração em floc.glitch.me.
O artigo Como participar da avaliação de origem do FLoC explica como avaliar o FLoC nos contextos de primeira parte e de terceiros.
A política de permissões interest-cohort permite que um site declare que não deseja ser incluído na lista de sites do usuário para cálculo de coorte. A política será allow por padrão. A promessa retornada por document.interestCohort() será rejeitada para qualquer frame que não tenha a permissão interest-cohort. Se o frame principal não tiver a permissão interest-cohort permission, a visita à página não será incluída no cálculo da coorte de interesses.
allow
interest-cohort permission
Por exemplo, um site pode recusar todos os cálculos de coorte do FLoC enviando o cabeçalho de resposta HTTP:
Permissions-Policy: interest-cohort=()
Se tiver algum comentário sobre a API, crie uma questão no repositório FLoC Explainer.
Foto de Rhys Kentish no Unsplash.
O Federated Learning of Cohorts (FLoC) oferece um mecanismo de preservação de privacidade para a seleção de anúncios com base em interesses. Quando um usuário navega pela Web, o navegador utiliza o algoritmo do FLoC para determinar a "coorte de interesses", que será a mesma para milhares de navegadores com históricos similares de navegação recente. O navegador do usuário é associado a uma coorte de interesses por vez e recalcula sua coorte periodicamente (no momento, uma vez a cada sete dias, durante essa avaliação de origem inicial) no dispositivo do usuário, sem compartilhar dados individuais de navegação com o fornecedor do navegador ou qualquer outra entidade.
Para saber mais sobre o FLoC, consulte O que é o Federated Learning of Cohorts (FLoC)?.
A avaliação começará no Chrome 89 e será disponibilizada como uma avaliação de origem de terceiros.Você deverá se registrar para receber um token de avaliação de origem do FLoC.
Para acessar dados da coorte de interesses em seu(s) próprio(s) site(s), adicione o token de avaliação de origem às suas páginas da Web utilizando um destes métodos:
Como uma metatag de <head> em cada página servida:
<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
Como um cabeçalho HTTP:
Origin-Trial: TOKEN_GOES_HERE
Com isso, você pode avaliar o FLoC no contexto de primeira parte: por exemplo, para observar as coortes dos visitantes do(s) seu(s) site(s).
Você precisará injetar o token de avaliação de origem em uma metatag a fim de testar a API do FLoC no código em sites de terceiros. A página Origin Trials Guide for Web Developers explica como fazer isso.
Faça isso pelo site de avaliação de origem do Chrome. Esse feedback não é público e está disponível apenas para um grupo limitado de pessoas na equipe do Chrome.Quando o token expirar, você receberá um e-mail com um link para renovação. Antes de renovar o token, você será solicitado novamente a enviar feedback.
{ "id": "14159", "version": "chrome.1.0" }
--enable-blink-features=InterestCohortAPI --enable-features="FederatedLearningOfCohorts:update_interval/10s/minimum_history_domain_size_required/1,FlocIdSortingLshBasedComputation,InterestCohortFeaturePolicy"
O FLoC API explainer sugere casos de uso, mas não define como a API deve ser utilizada. Diferentes sites e serviços terão diferentes restrições e requisitos para o uso do FLoC a fim de fornecer conteúdo e anúncios relevantes.
Se você gerencia sua própria tecnologia de recomendações de conteúdo, publicidade ou serviços de marketing, pode aplicar seus insights do FLoC para adaptar o conteúdo ou as mensagens de marketing a coortes específicas. Se você utiliza empresas terceirizadas para esses serviços, pode fazer mais sentido solicitar que elas participem da avaliação de origem e façam experiências que incluam o seu site e também outros sites.
Como um exemplo, para que um editor encontre maneiras de selecionar conteúdo relevante, o processo de avaliação do FLoC durante a avaliação de origem pode ser algo semelhante ao seguinte:
Um site deve ser capaz de declarar que não deseja ser incluído na lista de sites do usuário para cálculo de coorte. Uma nova política de permissões interest-cohort permite isso. A política será allow por padrão.
Para qualquer frame que não tenha a permissão interest-cohort, a promessa retornada na chamada a document.interestCohort() será rejeitada. Se o frame principal não tiver a permissão interest-cohort, a visita à página não será incluída no cálculo da coorte de interesses.
Durante a avaliação de origem do FLoC, os sites que não fizerem essa recusa serão incluídos no cálculo do FLoC se o Chrome detectar que esses sites carregam recursos relacionados a anúncios.
A página Ad Tagging in Chromium explica como funciona o mecanismo de detecção de anúncios do Chrome.
Atualização mais recente: Quinta-feira, 1º de abril de 2021 Para melhorias ao artigo
Este é o Now in Android, seu guia atualizado de novidades e fatos importantes do mundo de desenvolvimento no Android.
A segunda versão da visualização do desenvolvedor do Android 12 já está disponível.
Leia o blog e tenha uma visão geral da versão para desenvolvedores, desde melhorias no picture-in-picture até uma nova API RenderEffect para facilitar e aprimorar os efeitos gráficos, como foco e filtros de cores.
Enquanto isso, melhoramos a documentação do desenvolvedor referente a essas versões de pré-lançamento, conforme descrito a seguir:
Confira o site da Visualização do desenvolvedor do Android 12 para ver informações sobre mudanças de comportamento, novos recursos e APIs e muito mais. E, o mais importante: experimente apps na nova versão e envie seu feedback sobre quaisquer problemas que encontrar. Esse é o objetivo dessas versões de pré-lançamento: refinar tudo até o momento do lançamento do produto acabado.
Fique ligado nas próximas versões, enquanto prosseguimos até a versão final, com cada vez mais recursos, correções e funcionalidades. Sem sombra de dúvida.
A série MAD Skills continua rolando, com conteúdo técnico sobre Modern Android Development. A série WorkManager no MAD Skills chega ao fim esta semana, mas antes disso há muito conteúdo a ser verificado:
Suspensão de uso do Firebase JobDispatcher e do GCMNetworkManager:Você ainda usa as APIs Firebase JobDispatcher ou GCMNetworkManager? Se usa, então… não deveria, porque as duas estão obsoletas, e é hora de evoluir. WorkManager ao resgate!
Neste episódio, Caren Chang mostra como migrar códigos para usar o WorkManager. Além do vídeo abaixo, não deixe de conferir os guias sobre a migração do Firebase JobDispatcher e do GCMNetworkManager.
Community Tip:Hugo Visser compartilha com você como ele usa o WorkManager para programar o download e o processamento regulares de dados no app relacionado à saúde em que ele trabalha. Ele também fala como um problema que eles encontraram em alguns dispositivos resultou na identificação de um erro que agora foi corrigido nas versões mais recentes do WorkManager (o feedback ajuda!).
Sessão de Perguntas e respostas sobre o WorkManager:Para o episódio final da série WorkManager, mais uma vez teremos uma sessão de Perguntas e respostas ao vivo com os especialistas do WorkManager. Junte-se a mim (fazendo as perguntas) e a Ben Weiss e Caren Chang (seus anfitriões da série) e Sumir Kataria e Rahul Ravikumar (os engenheiros por trás do WorkManager) na manhã da quinta-feira (horário do Pacífico) enquanto tentamos responder a todas as suas perguntas sobre essa API.
Sei que é muito provável que a sessão de Perguntas e respostas já tenha acontecido quando você estiver lendo isto. Não se preocupe: você ainda pode verificar a gravação no link abaixo para saber o que aconteceu.
Para ver o conteúdo atual, não deixe de conferir a playlist do MAD Skills no YouTube, os artigos no Medium ou esta página de destino útil, que fornece acesso a todo o conteúdo.
Recentemente, lançamos algumas versões estáveis de correções de erros do AndroidX, incluindo Fragment 1.3.2, Activity 1.2.2 e Lifecycle 2.3.1.
Mais algumas novas bibliotecas interessantes acabaram de chegar à sua primeira versão Alfa, incluindo:
O Oboe é uma biblioteca nativa que oferece áudio de alto desempenho e baixa latência em várias versões do Android e dispositivos. Conversamos com os engenheiros do Oboe no último mês de abril no podcast do ADB e, agora, o Oboe está integrado ao SDK do Games. Daniel Galpin postou um artigo no blog do Android Developers detalhando como adicioná-lo a um projeto e começar a utilizá-lo em códigos.
High Performance Game Audio with Oboe
Manuel Vivo escreveu um artigo para introduzir as novas APIs no Lifecycle 2.4.0-alpha01 e permitir a coleta mais segura de fluxos do Kotlin a partir da camada da IU.
A safer way to collect flows from Android UIs
Nicole Borrelli postou um artigo sobre como e quando usar PendingIntents de forma apropriada. Esse tópico vem a calhar devido à mudança orientada à segurança na próxima versão, que exige que os apps segmentados para o Android 12 declarem a mutabilidade de PendingIntents.
All About PendingIntents
O Android Basics in Kotlin, um curso para as pessoas que desejam aprender sobre os fundamentos de desenvolvimento em Android e também sobre programação no Kotlin, acaba de lançar a Unit 4: Connect to the Internet. Com esse novo conteúdo, você codificará com as corrotinas do Kotlin e aprenderá a usar bibliotecas importantes, como Retrofit e Coil, para lidar com dados de rede.
O Android Developers Backstage agora tem um novo site, um novo feed e um novo logotipo supermoderno!
Essa mudança não deve afetar os atuais assinantes do ADB; o feed faz o redirecionamento para que você não tenha que renovar a assinatura. Mas, se você procura por notas do programa de episódios futuros, verifique o Libsyn, em adbackstage.libsyn.com.
O primeiro episódio postado no novo site e feed foi nossa entrevista com Chris Lacy, um experiente desenvolvedor independente de apps Android. Romain e eu conversamos com Chris sobre como ele implementou alguns de seus apps e sobre algumas das coisas que ele aprendeu sobre programação no Android e APIs ao longo do caminho.
Isso é tudo, por enquanto. Então, leia sobre os novos recursos do Android 12 DP2. Assista aos episódios mais recentes da série WorkManager do MADSkills. Experimente as mais recentes versões de bibliotecas do AndroidX. Leia artigos sobre o Oboe, os fluxos do Kotlin e PendingIntents. Participe da unidade mais recente do curso Android Basics in Kotlin. Ouça o podcast do ADB mais recente. Em breve, voltaremos com a próxima atualização do universo dos desenvolvedores Android.
Este Now in Android também é oferecido nos formatos de vídeo e podcast. O mesmo conteúdo, com menos leitura. A versão em artigo (continue lendo!) ainda é o local onde você encontra os links para todo o conteúdo abordado.
Clique no link abaixo ou simplesmente assine o podcast em seu app cliente favorito.
Now in Android: 36 - MAD Skills WorkManager, AndroidX, #AndroidDevChallenge e muito mais.
A série sobre o WorkManager continua, com mais dois episódios.
Trabalho em segundo plano: se há algo que não se deve fazer nos apps Android é bloquear o thread da IU. Neste episódio, Ben Weiss fala sobre como executar o trabalho em segundo plano utilizando o WorkManager e discute as várias abordagens possíveis. As APIs que você usa no WorkManager dependem do uso de executores, corrotinas ou do RxJava. O episódio também fala sobre como retornar um resultado quando o trabalho está concluído. Além disso, Ben faz uma das melhores interpretações de “Let’s go” que já vi até hoje nos vídeos do MAD.
Configuração e testes avançados: Ben explica também como personalizar a inicialização do WorkManager, dar suporte a apps que abrangem vários processos e testar workers, além de compartilhar algumas técnicas úteis de depuração.
Desta vez, a maioria das versões do AndroidX tem a ver com correções de erros. Isso é uma ótima notícia! Quando você tem problemas com as nossas bibliotecas, nós as corrigimos. Todo mundo sai ganhando.
Você já sabe que eu trabalho com o Hilt… então não posso prosseguir para a próxima seção sem mencionar que o Hilt foi promovido para a versão Beta. Todas as APIs Hilt e as APIs específicas do AndroidX para o suporte a ViewModel, WorkManager e Navegação agora são estáveis. Talvez você já saiba disso, mas o Hilt é a solução recomendada do Jetpack para a injeção de dependências no Android. Como parte disso, lançamos uma folha de referência que permite ver rapidamente o que fazem as diferentes anotações do Hilt e do Dagger e como utilizá-las.
Enquanto isso, se você está começando a usar o Jetpack Compose e o componente de Navegação, a equipe acaba de lançar uma nova biblioteca chamada hilt-navigation-compose para recuperar ViewModels fornecidos pelo Hilt e direcionados a um destino de um gráfico de navegação criado com a navegação do Compose. Leia mais sobre isso na documentação.
Don Turner fala sobre as melhorias na latência de áudio do Android e como isso afeta os apps de áudio em tempo real. Este artigo analisa o que mudou no ecossistema, os planos para o futuro e como dar os primeiros passos para criar apps de áudio de baixa latência usando a biblioteca Oboe.
An update on Android's audio latency
O Jetpack Compose sempre foi desenvolvido com o usuário em mente. E o principal usuário é VOCÊ, nosso estimado amigo desenvolvedor. Preethi Srinivas e Paris Hsu falam sobre como o recurso de visualização do Compose no Android Studio foi projetado e como diferentes estudos de pesquisa de UX influenciaram o design e a funcionalidade.
A UX journey of Compose Preview
Os blocos do Wear OS estão sendo totalmente reformulados. Há uma nova biblioteca de Blocos do Jetpack, ainda na versão Alfa, que permite criar blocos personalizados, um acesso simplificado a informações e ações no Wear OS sem a necessidade de abrir o app. Eles serão disponibilizados aos usuários nas futuras atualizações da plataforma Wear OS. Essa biblioteca permite começar a criar protótipos imediatamente.
Como criar blocos personalizados no Wear OS by Google com a biblioteca de Blocos do Jetpack
A equipe do Jetpack Compose acaba de lançar diretrizes de API: padrões, práticas recomendadas e diretrizes de estilo para escrever APIs idiomáticas do Jetpack Compose. Confira este guia para obter ajuda para escrever código idiomático do Compose ou simplesmente para saber mais sobre as ideias por trás das APIs do Compose em geral.
Caren Chang e eu fizemos juntos uma sessão ao vivo para explicar como usar as corrotinas no Android. Falamos sobre a documentação das corrotinas e o codelab de fundamentos e também respondemos a perguntas no chat ao vivo.
Se você quiser aprender sobre corrotinas, abra o Android Studio e codifique junto conosco neste vídeo.
Com a chegada do Jetpack Compose à versão Beta algumas semanas atrás, demos início a um Developer Challenge que inundou a Internet com apps para a adoção de filhotes na primeira semana e timers de contagem regressiva na segunda. Na semana três, chegou a hora de um desafio para os dedos mais velozes do oeste!
Levados em conta os diferentes fusos horários, os desenvolvedores Android foram desafiados a implementar um design fictício com a máxima rapidez possível para concorrer a um Pixel 5.
Se você não teve tempo de participar, não se preocupe. Você ainda pode usar esses desafios para experimentar o Compose no seu próprio ritmo. Mas, se você precisa de uma motivação extra, o "grand finale" do #AndroidDevChallenge começa no dia 17 de março. Não perca!
Publicamos outro episódio do Android Developers Backstage desde o último Now in Android. Confira no link abaixo ou no seu cliente de podcast favorito.
Chet Haase, Romain Guy e Tor Norbye conversaram com quatro membros da equipe do Jetpack Compose, Nick Butcher, Clara Bayarri, Leland Richardson e Adam Powell, para discutir sobre o que significa “o Compose está na versão Beta” e sobre alguns recursos oferecidos pelo Jetpack, como corrotinas, a implementação do Material Design e o ConstraintLayout.
Episódio 158: Jetpack Compose... C'est bêta!
A missão da equipe de Relacionamentos com desenvolvedores Android é ajudar as pessoas a criar ótimos apps. Deseja fazer parte da nossa equipe? Temos algumas vagas em aberto em todo o mundo que podem ser do seu interesse. Se você ainda não sabe o que a nossa equipe faz, leia a postagem do blog de Jacob Lehrbaum para obter mais informações e ver uma descrição das vagas disponíveis.
Android Developer Relations is hiring
Isso é tudo, por enquanto. Consulte no MAD as informações sobre o WorkManager, na última série do MAD Skills. Leia os artigos sobre latência de áudio, jornada de UX da visualização do Compose, as vagas disponíveis em nossa equipe, a nova biblioteca de Blocos do Wear OS e as diretrizes de API para o Jetpack Compose. Assista ao episódio do Android Code-Along sobre corrotinas. Componha códigos com o #AndroidDevChallenge. Ouça o podcast do ADB mais recente. Faça parte da equipe DevRel. Em breve, voltaremos com a próxima atualização do universo dos desenvolvedores Android.
Postado por Jolanda Verhoef, engenheira de relacionamentos com desenvolvedores
A biblioteca de Blocos foi introduzida em 2019 e, a partir desse momento, ela se tornou um dos recursos mais práticos e úteis dos smartwatches com o Wear OS by Google. Os blocos são rápidos de acessar, convenientes e projetados para fornecer aos usuários acesso por deslizamento a tudo o que eles precisam saber e fazer diretamente em seus pulsos. Isso também oferece controle sobre quais informações e ações os usuários desejam ver.
Hoje, temos o prazer de anunciar que a biblioteca de Blocos do Jetpack está na versão Alfa. Essa biblioteca permite aos desenvolvedores criar blocos personalizados em smartwatches com o Wear OS. Esses blocos personalizados estarão disponíveis aos usuários no segundo trimestre deste ano, quando lançarmos a atualização correspondente da plataforma Wear OS.
Os blocos podem ser projetados para muitos casos de uso, como para acompanhar o progresso das atividades diárias do usuário, iniciar rapidamente um treino, tocar uma música ouvida recentemente ou enviar uma mensagem para um contato favorito. Enquanto os apps podem ser imersivos, os blocos são carregados rapidamente e se concentram nas necessidades imediatas do usuário. Se o usuário quiser mais informações, poderá tocar nos blocos para abrir um app relacionado no relógio ou telefone e ter uma experiência mais profunda.
Os blocos são criados com o Android Studio, como parte do aplicativo Wear OS. Comece adicionando as dependências de blocos do Wear OS:
dependencies { implementation "androidx.wear:wear-tiles:1.0.0-alpha01" debugImplementation "androidx.wear:wear-tiles-renderer:1.0.0-alpha01" }
A primeira dependência inclui a biblioteca de que você precisa para criar um bloco, enquanto a segunda permite visualizar o bloco em uma atividade.
Em seguida, forneça as informações para renderizar o bloco usando o TileProviderService:
TileProviderService
class MyTileService : TileProviderService() { override fun onTileRequest(requestParams: RequestReaders.TileRequest) = Futures.immediateFuture(Tile.builder() .setResourcesVersion("1") .setTimeline(Timeline.builder().addTimelineEntry( // For more information about timelines, see the docs TimelineEntry.builder().setLayout( Layout.builder().setRoot( Text.builder().setText("Hello world!") ) ) ) ).build()) override fun onResourcesRequest(requestParams: ResourcesRequest) = Futures.immediateFuture(Resources.builder() .setVersion("1") .build() ) }
Esse código tem duas partes importantes:
onTileRequest()
TimelineEntry
onResourcesRequest()
Crie uma atividade simples para visualizar o bloco. Adicione essa atividade a src/debug em vez de src/main, porque essa atividade só é usada para fins de depuração/visualização.
src/debug
src/main
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val rootLayout = findViewById<FrameLayout>(R.id.tile_container) TileManager( context = this, component = ComponentName(this, MyTileService::class.java), parentView = rootLayout ).create() } }
Agora você está pronto para publicar o bloco. Para obter mais informações sobre como fazer isso e saber mais sobre os blocos, leia nosso novo guia e confira nossas amostras de blocos para vê-los em ação.
A biblioteca de Blocos do Jetpack está na versão Alfa, e queremos receber seu feedback para que possamos melhorar a API. Boa programação!
Postado por Dave Burke, vice-presidente de engenharia
No mês passado, compartilhamos a primeira Visualização do desenvolvedor do Android 12, uma prévia da próxima versão do Android. Hoje, trazemos a você o próximo marco de versão do lançamento deste ano, com mais recursos novos e mudanças para que você experimente com os apps. Nosso programa de prévias iniciais é motivado por nossa filosofia fundamental de abertura e colaboração com você, que faz parte da nossa comunidade. Sua contribuição nos ajuda a fazer do Android uma plataforma melhor para desenvolvedores e usuários, portanto continue enviando feedback!
No Android 12, estamos tornando o SO mais inteligente, mais fácil de usar e com melhor desempenho, com a privacidade e a segurança como o centro de tudo. Também estamos trabalhando para fornecer novas ferramentas para a criação de ótimas experiências para os usuários, quer eles estejam usando smartphones, laptops, tablets, TVs ou carros. Algumas coisas a serem observadas no lançamento de hoje incluem novas APIs para cantos arredondados, melhorias em APIs picture-in-picture, melhor gerenciamento de dispositivos associados, efeitos mais fáceis, como desfoque e filtro de cores, controles de sobreposição de apps e muito mais.
Há muitas novidades na Visualização do desenvolvedor 2. Continue lendo para ver alguns destaques e visite o site para desenvolvedores Android 12 para ver os detalhes e downloads para o Pixel. Para quem já executa a Visualização do desenvolvedor 1 ou 1.1, também oferecemos uma atualização OTA.
Queremos saber a sua opinião e agradecer a todos os que compartilharam feedbacks tão úteis até o momento.
Continuamos nos concentrando em dar mais transparência e controle aos usuários e em manter a segurança de seus dispositivos e dados. No lançamento de hoje, adicionamos alguns recursos que você pode conferir e testar com os apps.
Controles de sobreposição de apps - A janela de alerta do sistema Android dá aos apps uma forma de chamar a atenção dos usuários para ações importantes mostrando uma sobreposição por cima do app ativo. Mas essas janelas podem interromper o usuário, por isso já exigimos que os apps solicitem permissão antes de exibi-las. No Android 12, daremos a você o controle sobre a exibição dessas sobreposições sobre o conteúdo. Após você declarar uma nova permissão, o app pode chamar Window#setHideOverlayWindows() para indicar que todas as janelas TYPE_APPLICATION_OVERLAY devem ser ocultadas quando a janela do app estiver visível. Você pode optar por fazer isso ao exibir telas confidenciais, como fluxos de confirmação de transações. Saiba mais aqui.
Segurança estendida para ações de notificação em tela de bloqueio - O Android 12 adiciona controles mais detalhados de privacidade e segurança para notificações exibidas na tela de bloqueio do dispositivo. Agora, você pode configurar ações de notificação para que, quando acionadas a partir da tela de bloqueio, elas sempre gerem um desafio de autenticação. Isso estende os controles de visibilidade de notificação já disponíveis por meio das APIs de notificação. Por exemplo, isso permite que um app de mensagens exija autenticação antes de excluir uma mensagem ou marcá-la como lida. Saiba mais aqui.
Você pode ler mais sobre essas e outras mudanças de privacidade e segurança aqui.
Estamos trabalhando para oferecer mais ferramentas para ajudar você a entregar uma experiência mais refinada e um desempenho melhor aos usuários. Estas são algumas das atualizações do lançamento de hoje.
Suporte a cantos arredondados - Muitos dispositivos modernos usam telas com cantos arredondados, que conferem uma aparência limpa e moderna, mas também introduzem algumas considerações a mais para os desenvolvedores de apps. Para oferecer uma ótima UX nesses dispositivos, os desenvolvedores precisam levar em conta os cantos arredondados e ajustar quaisquer elementos da IU próximos a fim de evitar que eles sejam truncados.
Para ajudar nisso, estamos introduzindo novas APIs para permitir a consulta de cantos arredondados e a obtenção de detalhes. Um RoundedCorner contém os detalhes de um canto, incluindo raio, ponto central e outros dados. Você pode chamar Display.getRoundedCorner() para obter os detalhes absolutos de cada canto arredondado. Também pode chamar WindowInsets.getRoundedCorner() para obter os detalhes do canto relativos aos limites do app. Com eles, você pode gerenciar a posição dos elementos da IU e do conteúdo como necessário. Saiba mais aqui.
Melhorias de picture-in-picture (PIP) - Para os usuários da navegação por gestos, melhoramos a forma como os apps fazem a transição para o modo picture-in-picture (PIP) com o gesto de deslizar para a página inicial. Se um app ativar o PIP automático, o sistema agora faz a transição direta do app para o modo PIP com o gesto de deslizar para a tela inicial, em vez de aguardar a conclusão da animação de transição para a tela inicial. Isto torna a transição mais suave e melhora o desempenho percebido. Também melhoramos o redimensionamento da janela PIP para conteúdo que não seja de vídeo. Agora, os apps podem ativar o redimensionamento transparente para deixar que o sistema redimensione a atividade PIP quando necessário. O Android 12 também dá suporte ao armazenamento da janela PiP com o arraste para a esquerda ou para a direita da tela. Além disso, para facilitar a manipulação de janelas PIP, atualizamos os comportamentos de toque. O toque único agora exibe os controles, e tocar duas vezes alterna o tamanho da janela PIP. Saiba mais aqui.
Manutenção da atividade de dispositivos associados - Para apps que gerenciam dispositivos associados, como smartwatches e controladores de condicionamento físico, pode ser um desafio garantir que o app esteja em execução e conectado sempre que houver um dispositivo como esses nas proximidades. Para facilitar as coisas, estamos estendendo o Companion Device Manager com uma nova API CompanionDeviceService. Os apps que gerenciam dispositivos associados podem implementar esse serviço para permitir que o sistema ative o app sempre que houver um dispositivo desse tipo por perto. O sistema mantém o serviço vinculado sempre que o dispositivo estiver próximo e notifica o serviço quando o dispositivo entra e sai do alcance ou é desligado, para permitir que o app limpe o estado conforme necessário. Os apps também podem usar um novo perfil de dispositivo associado ao se conectarem a um relógio, o que simplifica o registro com o empacotamento das permissões relacionadas em uma única concessão. Saiba mais aqui.
Melhorias de estimativa de largura de banda - Para os desenvolvedores que precisam saber a largura de banda típica disponível para cada usuário a fim de adaptar a experiência, agora fornecemos a estimativa avançada de largura de banda. Melhoramos as APIs de estimativa de largura de banda existentes para permitir que seja recuperada uma estimativa da capacidade agregada por operadora ou SSID de Wi-Fi, tipo de rede e nível de sinal para todos os usuários do dispositivo. A nova estimativa deverá ser mais simples e precisa do que a maioria dos outros métodos de estimativa, por isso experimente e conte para nós como ela funcionou para você.
Simplificação de desfoque, filtros de cores e outros efeitos - No Android 12, estamos simplificando a aplicação de efeitos gráficos comuns às Visualizações e hierarquias de renderização. Você pode usar o RenderEffect para aplicar desfoques, filtros de cores e muito mais a qualquer RenderNode. É possível combinar esses efeitos em cadeia (compondo um efeito interno e externo ordenado) ou mesclá-los. Também é possível aplicar efeitos diretamente às Visualizações (aproveitando o RenderNode subjacente) chamando View.setRenderEffect(RenderEffect).
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Desfocando uma visualização com RenderEffect
Isso permite desfocar o conteúdo de um ImageView sem a necessidade de obter os dados do bitmap, processar a imagem, criar um novo Bitmap e colocá-lo de volta no ImageView. RenderEffect utiliza o pipeline de renderização existente para minimizar os cálculos excessivos.
Experimente e envie-nos a sua opinião! Saiba mais aqui.
Você também pode criar um efeito de vidro congelado para o fundo da janela usando uma nova API Window.setBackgroundBlurRadius(). Com isso, é possível definir um raio para controlar a densidade e o escopo, e a plataforma aplica o desfoque ao conteúdo de fundo apenas dentro dos limites da janela do app. Você ainda pode usar blurBehindRadius para desfocar todo o conteúdo por trás da janela, criando um efeito de profundidade para uma janela flutuante.
Janela de uma caixa de diálogo com desfoque no plano de fundo e desfoque por trás (blur behind)...
Estamos trabalhando para agilizar e simplificar as atualizações priorizando a compatibilidade do aplicativo à medida que lançamos novas versões da plataforma. No Android 12, a maioria das mudanças voltadas para os apps é ativável, para que você tenha mais tempo, e nossos processos e ferramentas foram atualizados para ajudar você a se preparar mais rapidamente.
Com a Visualização do desenvolvedor 2, estamos bem avançados na versão e continuamos a melhorar a estabilidade geral, então chegou a hora de experimentar os novos recursos e mudanças e enviar-nos seu feedback. Queremos saber principalmente sobre o que você acha de nossas APIs e também os detalhes de como as mudanças da plataforma afetam os apps. Acesse a página de feedback para compartilhar suas opiniões ou relatar problemas.
Este é um bom momento para começar o teste de compatibilidade e identificar o trabalho que ainda tem a fazer. Recomendamos agir de forma antecipada para que você possa lançar uma atualização compatível com o Android 12 Beta 1. Desta vez, não será preciso mudar o targetSdkVersion do app, mas recomendamos usar os botões de alternância de comportamento para ter uma ideia preliminar de como o app pode ser afetado pelas mudanças ativáveis no Android 12.
Quando alcançarmos a estabilidade da plataforma em agosto de 2021, todos os comportamentos do sistema voltados para os apps, como APIs SDK/NDK e listas não SDK, estarão finalizados. Nesse ponto, você poderá concluir o teste de compatibilidade final e lançar uma versão totalmente compatível do app, SDK ou biblioteca. Saiba mais sobre o cronograma para desenvolvedores.
Botões de alternância de compatibilidade de apps nas opções do desenvolvedor.
A Visualização do desenvolvedor tem tudo o que você precisa para experimentar os recursos do Android 12, testar apps e nos enviar feedback. Você pode começar hoje mesmo atualizando uma imagem de sistema de dispositivo para um dispositivo Pixel 3/3 XL, Pixel 3a/3a XL, Pixel 4/4 XL, Pixel 4a/4a 5G ou Pixel 5 ou usando o Android Emulator. Se já tiver instalado um build de visualização em um dispositivo Pixel, você receberá futuras atualizações OTA automaticamente para todas as visualizações e versões Beta posteriores. Veja mais detalhes sobre como obter o Android 12 aqui.
Você também pode testar apps no Android TV usando a versão de hoje e experimentar a novíssima experiência do Google TV. Saiba mais aqui e comece com o ADT-3 developer kit.
Para acessar todas as informações, visite o site para desenvolvedores Android 12.