Android

18 jul, 2017

O suporte de Tempo Semântico agora está disponível nas APIs Awareness 

Publicidade

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