Pronto!

Para começar a desenvolver, acesse nossa documentação do desenvolvedor.

Ativar a API do Google Places para Android

Para começar, orientaremos você pelo Console de Desenvolvedores do Google para realizar algumas atividades:

  1. Criar ou selecionar um projeto
  2. Ativar a Google Places API for Android
  3. Criar chaves apropriadas
Continuar

Local atual

Use a Google Places API for Android para descobrir onde o dispositivo está localizado no momento. Ou seja, o local na localização do dispositivo indicada neste momento. Exemplos de locais incluem negócios, pontos de interesse e localizações geográficas.

Permissões

Se o aplicativo usa PlaceDetectionApi.getCurrentPlace(), é preciso solicitar permissão de ACCESS_FINE_LOCATION.

Novo modelo de permissões no Android 6.0 Marshmallow

O Android 6.0 Marshmallow introduziu um novo modelo de processamento de permissões que otimiza o processo para quando os usuários instalam e atualizam aplicativos. Desde que você use a versão 8.1 ou posterior do Google Play Services, é possível configurar o aplicativo para trabalhar com o Android 6.0 Marshmallow SDK e usar o novo modelo de permissões.

Se o aplicativo for compatível com o novo modelo de permissões, o usuário não terá que conceder nenhuma permissão quando instala ou atualiza o aplicativo. Em vez disso, o aplicativo deve solicitar permissões quando precisar delas em tempo de execução, e o sistema exibe uma caixa de diálogo ao usuário para solicitar a permissão.

Para saber mais, veja a documentação do Android 6.0 Marshmallow e as alterações que você deve fazer no aplicativo para o novo modelo de permissões.

Limites de uso

O uso do método PlaceDetectionApi.getCurrentPlace() está sujeito a limites escalonados de consultas. Consulte a documentação sobre limites de uso.

Obter localização atual

Para encontrar a empresa ou outro local na localização atual do dispositivo, chame PlaceDetectionApi.getCurrentPlace().

Há também a opção de especificar um PlaceFilter para restringir os resultados a um ou mais IDs de local (até 10) ou selecionar apenas locais que estejam atualmente abertos. Se nenhum filtro for especificado, os resultados não serão filtrados.

A API retorna um PlaceLikelihoodBuffer em um PendingResult. O PlaceLikelihoodBuffer contém uma lista de objetos PlaceLikelihood representando locais prováveis. Cada local do resultado contém uma indicação da probabilidade de ele ser o correto. O buffer pode ficar vazio se não houver local conhecido correspondente aos critérios de filtro.

Chame PlaceLikelihood.getPlace() para recuperar um objeto Place e PlaceLikelihood.getLikelihood() para obter a classificação de probabilidade do local. Quanto maior o valor, maior a probabilidade de que o lugar seja a melhor correspondência.

O exemplo de código a seguir recupera a lista de locais onde é mais provável que o dispositivo esteja localizado e registra o nome e a probabilidade para cada local.

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
    .getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
  @Override
  public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
    for (PlaceLikelihood placeLikelihood : likelyPlaces) {
      Log.i(TAG, String.format("Place '%s' has likelihood: %g",
          placeLikelihood.getPlace().getName(),
          placeLikelihood.getLikelihood()));
    }
    likelyPlaces.release();
  }
});

Observações sobre os valores de probabilidade:

  • Fornecem a probabilidade relativa de o local ser a melhor correspondência dentro da lista de locais retornados para uma única solicitação. Não é possível comparar probabilidades entre solicitações diferentes.
  • O valor da probabilidade estará entre 0 e 1,0.
  • A soma das probabilidades em determinado PlaceLikelihoodBuffer é sempre menor ou igual a 1. Observe que a soma não é necessariamente 1.

Por exemplo: para representar uma probabilidade de 55% de que o local correto seja o Local A e uma probabilidade de 35% de que seja o Local B, o PlaceLikelihoodBuffer tem dois membros, Local A com uma probabilidade de 0.55 e Local B com uma probabilidade de 0.35.

Exibir atribuições no seu aplicativo

Quando o aplicativo exibe informações fornecidas por PlaceDetectionApi.getCurrentPlace(), ele deve também exibir atribuições. Consulte a documentação sobre atribuições.

Enviar comentários sobre…

location_on
Google Places API for Android