Artigo de Ritesh Nayak, publicado originalmente pelo Android Developers Blog. A tradução foi feita pela Redação iMasters com autorização.
No ano passado, na I/O, lançamos a API Awareness, uma API simples e poderosa que permite que os desenvolvedores utilizem sinais como Localização, Clima, Tempo e Atividade do Usuário para criar experiências de aplicativos contextualmente relevantes.
Disponível através dos serviços do Google Play, a API Awareness oferece duas maneiras de aproveitar os sinais de contexto dentro do seu aplicativo. A API Snapshot permite que o seu aplicativo solicite informações sobre o contexto atual do usuário, enquanto a API Fence permite que seu aplicativo reaja às mudanças no contexto do usuário e quando ele coincida com um determinado conjunto de condições. Por exemplo, “diga-me sempre que o usuário estiver andando e seus fones de ouvido estiverem conectados”.
Até agora, você poderia especificar uma barreira de tempo nas APIs Awareness, mas estava restrito a usar a representação absoluta/canônica do tempo. Com base nos comentários de feedback do desenvolvedor, percebemos que a flexibilidade da API em relação à construção de barreiras de tempo não suporta abstrações de nível superior que as pessoas usam quando pensam e falam sobre o tempo. “Este fim de semana“, “no próximo feriado“, “depois do pôr-do-sol“, são formas muito comuns e coloquiais de expressar o tempo. É por isso que estamos adicionando suporte de tempo Semântico a essas APIs a partir de hoje
Por exemplo, se você estivesse construindo um aplicativo de fitness e desejasse uma maneira de motivar os usuários todas as manhãs para iniciarem sua rotina, ou se você é um aplicativo de leitura que deseja ativar o modo noturno após o entardecer; você precisaria consultar uma API 3p para informações do amanhecer/pôr-do-sol no local do usuário e depois escrever uma barreira Awareness com esses valores de tempo canônicos. Com nossa última atualização, você pode usar nossas constantes TIME_INSTANT_SUNRISE e TIME_INSTANT_SUNSET e permitir que a plataforma gerencie toda a complexidade para você.
Vejamos um exemplo. Suponha que você esteja construindo um aplicativo de fitness que motiva os usuários às terças-feiras e quintas-feiras em torno do nascer do sol para começarem seu exercício físico matinal. Você pode configurar esse acionamento usando as seguintes linhas de código.
// A sun-state-based fence that is TRUE only on Tuesday and Thursday during Sunrise AwarenessFence.and( TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE, -10 * ONE_MINUTE_MILLIS, 5 * ONE_MINUTE_MILLIS), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_TUESDAY, 0, ONE_DAY_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_THURSDAY, 0, ONE_DAY_MILLIS)));
Um de nossos recursos de tempo semântico favoritos é o feriado público. Todos os países e regiões em particular têm diferentes feriados. Suponha que você fosse um aplicativo local de caminhadas e aventura que desejasse mostrar às atividades dos usuários que podiam desfrutar do feriado que cairia em uma sexta-feira ou uma segunda-feira. Você pode usar uma combinação de bandeiras de Dias e Feriados para identificar este estado para todos os seus usuários ao redor do mundo. Você pode fazer isso com apenas 3 linhas de código e ter esse trabalho em qualquer parte do mundo.
// A local-time fence that is TRUE only on public holidays in the // device locale that fall on Fridays or Mondays. AwarenessFence.and( TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_HOLIDAY), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_FRIDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_MONDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS)));
Em ambos os casos de exemplo, a Awareness faz o levantamento pesado de localização de tempo e de feriados com base nas configurações de localidade do dispositivo.
Estamos entusiasmados por ver quais problemas você resolverá usando esta poderosa API.
Este artigo é do Android Developers Blog. Ele foi escrito por Ritesh Nayak. A tradução foi feita pela Redação iMasters com autorização. Você pode acessar o original em: https://android-developers.googleblog.com/2017/06/semantic-time-support-now-available-on.html