5
respostas

Location

Professor, por favor estou com problema de tratamento do meu app que utiliza location services. Estou simulando falta de internet pelo emulador do android studio. Nesses casos o aparelho não consegue me retornar a localização do GPS. Tem alguma maneira de capturar algum tipo de timeout para o location services. Pois atualmente ele fica tentando eternamente e não me retorna nada. Nem o valor com Latitude e Longitude, nem me diz que não vai conseguir para que eu possa tentar novamente. Fico sem ação...

5 respostas

Oi Felipe, tudo bem ?

Cara no emulador, você tem uma barra lateral, certo ? Nela, você tem os (...) que é a última opção, ao clicar ali, será aberto uma nova janela, onde você consegue passar algumas configurações em runtime para o emulador, uma dessas é a localização.

Espero ter ajudado.

Abraços

Já estou utilizando essa barra, Matheus. No menu Celular estou "settando" o "Network Type" como "EDGE" para simular internet fraca ou inexistente. Porém, quero saber justamente em código android java se tem algum handler para capturar a falha no location services. Ele não vai conseguir me retornar a coordenada pois está sem net.

Felipe,

Desculpa, não havia entendido, mas temos o método :

onConnectionSuspended()

Que serve justamente para esse fim, como você pode ver aqui na documentação :

https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnectionSuspended(int)

Você pode fazer o tratamento dentro dele !

Não está chamando esse método. Eu já olhei na documentação. E já fiz inúmeros testes.

Felipe, esse inteiro que ele recebe é a causa do problema.

No seu caso, para perda de internet existe uma constante :

CAUSE_NETWORK_LOST

Você consegue fazer algo do gênero :

public void onConnectionSuspended(int code){
    if (code == CAUSE_NETWORK_LOST){
        // faz a sua regra de negócio
    }
}

Esse é o suporte que a API nos dá.