Desenvolvimento de aplicativos android: como começar com a localização
Muitos aplicativos do Android pode fornecer um benefício agradável para seus usuários, trazendo localização em suas experiências de usuário. Quer se trate de algo tão simples como mostrar aos usuários a sua localização em um mapa ou algo mais complexo como o fornecimento de notificações fundo com base em GPS, a adição de serviços de localização para a sua aplicação é muitas vezes algo que os usuários esperam.
Conteúdo
Há muitas maneiras que você pode adicionar localização aos seus aplicativos Android. Em Lollipop, alguns dos mais comuns são
Exibir atual cidade ou rua de endereços do usuário. Isto é chamado inversa geo-codificante.
Ativamente rastrear a localização do usuário, como quando mostrando a localização do usuário em um mapa.
Configurar uma área demarcada para receber uma notificação quando um usuário chega ou sai de uma localização.
localização dos usuários de pista para executar reconhecimento de atividade e determinar se eles estão caminhando, andando de bicicleta ou dirigir.
Detectar se um usuário está perto de um iBeacon usando Bluetooth.
Este artigo mostra um dos usos mais comuns de localização, que é para monitorar a localização dos usuários e mostrar o seu endereço atual para eles em um TextView.
Você vai precisar fazer quatro coisas para configurar locais em seu aplicativo:
Atualize seu configuração de compilação.
Abre uma conexão com o Google Play.
Inscrever-se para atualizações de localização.
Exibir o endereço do usuário.
Como atualizar sua configuração construção
Android tem um conjunto mais velha de APIs de localização built-in para o sistema operacional sob o android.location pacote. Essas APIs não estão mais mantido, portanto, você deve usar o novo Google Play Services APIs para obter a localização do usuário em seu lugar.
Para adicionar o Google Play Services Location API para seu projeto, coloque o seguinte dependência em seu build.config Arquivo:
dependências { compilar `com.google.android.gms: play-serviços de localização: 6.5.87`}
Em seguida, adicione o seguinte ao seu AndroidManifest.xml:
="android.permission.ACCESS_COARSE_LOCATION"/ Gt;="android.permission.ACCESS_FINE_LOCATION"/ Gt;android: name ="com.google.android.gms.version"android: value ="@ Inteiro / GOOGLE_PLAY_SERVICES_VERSION"/ Gt;
o ACCESS_COARSE_LOCATION permissão usa Wi-Fi e informações torre de celular, quando disponível, para fornecer localização atualiza aproximadamente do tamanho de um quarteirão da cidade. o ACCESS_FINE_LOCATION permissão você pode obter informações muito de alta resolução usando o GPS do telefone, mas à custa de maior consumo de bateria. Se seu aplicativo precisa apenas de localização grosseiro, você pode pensar que faz sentido para solicitar apenas o ACCESS_COARSE_LOCATION permissão, mas realmente a maioria dos aplicativos vai querer ambas as permissões.
Normalmente deve solicitar as permissões porque você estará usando um LocationProvider Chamou o FusedLocationProvider, que escolhe automaticamente entre Wi-Fi, torre de celular e provedores de localização GPS para lhe dar a melhor precisão com o menor custo de sua bateria. Se você sabe que nunca terá informações de localização finas, você pode considerar a remoção da ACCESS_FINE_LOCATION permissão, mas esteja ciente de que a sua aplicação pode não funcionar bem em lugares que não têm torre de celular ou acesso Wi-Fi.
o meta-dados tag é necessária sempre que você usar o Google Play biblioteca Service.
Como abrir uma conexão com o Google Play
As APIs de localização são bastante simples, mas para usá-los você precisa configurar A Google Play APIs de serviços, e esses são um pouco mais complicado de usar.
Para estabelecer uma conexão com o Google Play Services, adicione o seguinte à sua atividade ou fragmento:
// O cliente API do Google, para localização servicesGoogleApiClient googleApiClient- @ Overridepublic vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -googleApiClient = new GoogleApiClient.Builder (getActivity ()). AddConnectionCallbacks (this) .addOnConnectionFailedListener (this). addApi (LocationServices.API) .build () -&hellip -} @ Overridepublic vazio onStart () {super.onStart () -googleApiClient.connect () -} @Overridepublic anular onStop () {googleApiClient.disconnect () -super.onStop () -}
Esse código cria um novo GoogleApiClient objeto em seu onCreate () para se conectar ao Google Play Services, e, em seguida, ele tenta se conectar em sua onStart () e desligue na sua onStop (). o GoogleApiClient precisa de um objeto de retorno de chamada que ele pode informar quando uma conexão foi estabelecida, então você precisa adicionar chamadas de retorno à sua atividade ou fragmento. Você pode adicionar as chamadas de retorno ao TaskEditFragment para qualquer actividade de fragmento.
classe pública TaskEditFragment estende implementos FragmentoConnectionCallbacks, OnConnectionFailedListener{ @Sobrepor public void OnConnected (Bundle connectionHint) {// Conectado a serviços Google Play!// Este é onde você vai começar a pedir para localização// atualizações. } @Sobrepor public void onConnectionSuspended (causa int) {// O Google Play conexão foi interrompida.// Desative todos os componentes de interface do usuário que dependem de Google // APIs até OnConnected () é chamado.//// Este exemplo doesn`t precisa fazer nada aqui. } @Sobrepor public void onConnectionFailed (resultado ConnectionResult) {// Este retorno é importante para erros de manipulação // que pode ocorrer durante a tentativa de conectar-se com // Google.//// Se o seu aplicativo ganhou`t trabalho corretamente sem localização// atualizações, então ele`é importante para lidar com conexão // erros adequadamente. Vejo// https://developer.android.com/google/auth/api-client.html// para obter mais informações sobre a manipulação de erros quando // conectando a Google.//// As informações de localização é opcional para este aplicativo, de modo // erros de conexão pode ser ignorada aqui. }}
Parabéns! Você agora corretamente configurado uma conexão com o Google Play Services, que irá desligar automaticamente quando a sua actividade ou fragmento está parado. O próximo passo é solicitar atualizações de localização.
Como se inscrever para atualizações de localização
Você chegou através da parte mais difícil. Uma vez que você tem uma conexão bem-sucedida para o Google Play Services, você pode começar a ouvir para atualizações de localização.
Você primeiro precisa dizer a API Location quantas vezes e quão preciso você quer suas atualizações de localização para ser. Se você deve exibir a localização atual dos usuários a eles em um mapa, talvez você vai querer atualizações muito precisas e rápidas, de modo que os usuários podem ver onde eles estão, como eles se movem ao redor. A maioria dos aplicativos provavelmente precisará de atualizações menos frequentes, e é isso que você vai usar neste exemplo.
Adicione o seguinte campo para o seu fragmento ou atividade:
// O LocationRequest define quantas vezes precisamos de localização // updatesLocationRequest LocationRequest = new LocationRequest () setInterval (30000) .setPriority (LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY). -
este LocationRequest está configurado para pedir nova localização atualizações aproximadamente a cada 30 segundos, e tentar equilibrar boa precisão com o consumo de energia decente. Se você quiser reduzir o consumo da bateria, tente PRIORITY_LOW_POWER, ou se você quiser maior precisão, tente PRIORITY_HIGH_ACCURACY. Você ainda pode usar PRIORITY_NO_POWER para aplicativos que atualizam muito raramente em segundo plano e só querem piggy-back off a localização atualiza esse pedido outros apps! Confira LocationRequest no site do desenvolvedor do Android Para mais informações sobre as várias opções que você pode usar.
Video: Qual linguagem usar para Desenvolvimento MOBILE?
Para começar a ouvir para atualizações de localização, adicione o seguinte ao OnConnected () método que você acabou de criar:
@Overridepublic anular OnConnected (Bundle connectionHint) {// Conectado a serviços Google Play! // Inicie a subscrição de atualizações de localizaçãoFusedLocationApi.requestLocationUpdates ( googleApiClient, LocationRequest, this) -}
Este pede ao FusedLocationApi para começar a enviar a sua localização de aplicativos actualizações através do LocationRequest que acabou de configurar. Para que ele funcione, porém, você precisa fornecer um objeto de retorno de chamada que pode receber as atualizações de localização. Adicione o LocationListener interface com sua atividade ou fragmento, e depois adicionar o onLocationchanged () método assim:
classe pública TaskEditFragment estende implementsConnectionCallbacks Fragmento, OnConnectionFailedListener,com.google.android.gms.location.LocationListener{ @Sobrepor public void onLocationchanged (última localização Location) {Toast.makeText (getActivity (), location.toString (), Toast.LENGTH_LONG) .mostrar () -}}
By the way, se tudo o que interessa é a atual localização do usuário, e você não se preocupam com mantendo-o atualizado, veja FusedLocationApi.getLastLocation (), que elimina a necessidade do LocationListener interface.
Agora, se você executar sua atividade, você deve ver uma mensagem de brinde que imprime localização atual do usuário.
Ser capaz de ver as suas coordenadas GPS não é realmente tudo o que útil para os usuários por si, embora, por isso vamos usar a sua localização para descobrir seu novo endereço e exibi-lo para eles.
Como exibir o endereço do usuário
Android tem uma API built-in chamado geocoder para procurar o endereço de um usuário a partir de seu coordenadas de GPS (e vice-versa).
É muito simples de usar. O único problema é que porque faz uma solicitação de rede para o Google no segmento atual, cabe a você para certificar-se você só executá-lo no segmento de segundo plano (de modo que você não causar uma pendurar no principal segmento interface do usuário em lenta redes).
Adicione o seguinte à sua atividade ou fragmento:
Geocoder geocoder- @ Overridepublic vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -&hellip-geocoder = new Geocoder (getActivity ()) -} @ vazio Overridepublic onLocationchanged (localização final Location) {// pedir ao Google para o endereço do location.// Isso pode levar algum tempo, assim fazê-lo em uma AsyncTask.new AsyncTask () {@Overrideprotected Endereço doInBackground (void [] params) {try {List addresses = geocoder.getFromLocation (location.getLatitude (), location.getLongitude (), 1) -se (endereços! = null && addresses.size () gt; 0)voltar addresses.get (0) -} Catch (IOException e) { // ignorado}retornar nulo } // Realizado no segmento interface do usuário @Sobrepor protegido OnPostExecute void (endereço de Endereço) {if (endereço! = null) { String s = address.getThoroughfare () - if (s! = null)Toast.makeText (getActivity (), s, Toast.LENGTH_LONG) .mostrar () -} }}.executar()- }
Este código adiciona um campo Geocoder à sua atividade ou fragmento, inicializa-lo em onCreate (), e então usa-lo em onLocationchanged () para encontrar o endereço para o local atual. Em seguida, exibe uma mensagem de brinde com a “passagem” para o exemplo de endereço-para, A “600 West Chicago Avenue.” Endereço objeto retornado pela Geocoder é rica em informações consulte a javadocs para obter detalhes sobre o que mais você pode exibir.
E com isso, você tem tudo o que você precisa saber sobre a subscrição de localização atual do usuário a partir de uma atividade ou fragmento Android.