Почему gps видит изменение местоположения, а интернет нет?

Ответить
log_
Сообщения: 5
Зарегистрирован: 25 сен 2015, 21:58

Почему gps видит изменение местоположения, а интернет нет?

Сообщение log_ » 31 окт 2015, 21:29

Есть код для android, который определяет местоположение при помощи google-play-services. Код работает и местоположение выводится с заданным интервалом, но только когда включен gps, когда включен свой интернет - местоположение не находится. Как можно это исправить, и вообще может интернет находить точные координаты, как gps?

MainActivity

Код: Выделить всё

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity implements ConnectionCallbacks,
    OnConnectionFailedListener, LocationListener {

GoogleApiClient googleApiClient;
LocationRequest locationRequest;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buildGoogleApiClient();
}

public void onStart(View v) {
    googleApiClient.connect();
}

public void onStop(View v) {
    googleApiClient.disconnect();
}

public synchronized void buildGoogleApiClient() {
    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API).build();
}

@Override
public void onConnected(Bundle arg0) {
    Log.d("myLogs", "onConnected");
    locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(1000); // Update location every second
    LocationServices.FusedLocationApi.requestLocationUpdates(
            googleApiClient, locationRequest, this);
}

@Override
public void onConnectionFailed(ConnectionResult arg0) {
    Log.d("myLogs", "onConnectionFailed");
}

@Override
public void onConnectionSuspended(int arg0) {
    Log.d("myLogs", "onConnectionSuspended");
}

@Override
public void onLocationChanged(Location arg0) { // LocationListener
    Log.d("myLogs", "Location.lat = " + arg0.getLatitude() + ", long = "
            + arg0.getLongitude());
}
AndroidManifest

Код: Выделить всё

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="20" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" >
    </meta-data>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение Mikhail_dev » 01 ноя 2015, 00:22

Да вроде всё нормально. Правда у меня еще один параметр выставлен, но не думаю что он в этом плане играет роль, хотя я его по какой-то причине ведь в своё время поставил...
[syntax=java5]
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(1 * DateHelper.SECOND)
.setSmallestDisplacement(5);
[/syntax]

log_
Сообщения: 5
Зарегистрирован: 25 сен 2015, 21:58

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение log_ » 01 ноя 2015, 15:28

Попробовал добавить, ничего не изменилось. Я так понимаю обновления будут приходить через заданный интервал и плюс к этому каждый n метров. Вообще у меня теперь вопрос, а возможно ли получить через интернет долготу и широту с точностью LocationRequest.PRIORITY_HIGH_ACCURACY, может только gps на это только способен. У вас получалось получалось принимать обновления с включенным интернетом, но выключенным gps?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение Mikhail_dev » 01 ноя 2015, 17:19

Конечно. HIGH_ACCURACY вообще это получение и плохого качества, и хорошего. Возможно гугл что-то в своих фильтрах сделал не так. Мы не используем API гугла, а используем стандартное API андроида (ибо не хотим привязываться к гуглу), ну и напрямую с NMEA данными работаем.

log_
Сообщения: 5
Зарегистрирован: 25 сен 2015, 21:58

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение log_ » 01 ноя 2015, 21:48

Раз у вас работает - надо мне выяснять проблему.
Я попробовал сейчас обычным методом находить обновления(может у меня какие-то проблемы с api гуглом). При locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000 * 1, 10, listener) и включенным gps всё опять-таки работает.

При locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 1, 10, listener) и включенным интернетом сразу вылетает лог из public void onProviderDisabled(String provider), где provider = network. При включении, выключении интернета(wifi) почему то не выходят логи из onProviderDisabled и onProviderEnabled, но как только включаю gps, сразу вылетает onProviderEnabled. Всё очень странно. Не может быть такого, что где-то в настройках интернета заблокирована функция передачи местоположения?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение Mikhail_dev » 01 ноя 2015, 22:55

Не может быть такого, что где-то в настройках интернета заблокирована функция передачи местоположения?
В мире андроида ничего невозможного нет. Порой такие забавные ошибки ловишь.
Постарайтесь протестировать на другом устройстве.

log_
Сообщения: 5
Зарегистрирован: 25 сен 2015, 21:58

Re: Почему gps видит изменение местоположения, а интернет не

Сообщение log_ » 02 ноя 2015, 19:19

Спасибо за ответы, попробую протестировать на днях на другом устройстве. Отпишусь о работе этого же приложения на др. телефоне, может у кого-нибудь похожая проблема.

Ответить