Этот коммит содержится в:
Anton Tananaev
2018-01-09 08:25:57 +13:00
родитель 2719b57f7c
Коммит c892a20104
+16 -8
Просмотреть файл
@@ -53,6 +53,8 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
private Location lastLocation; private Location lastLocation;
private boolean started;
public PositionProvider(Context context, PositionListener listener) { public PositionProvider(Context context, PositionListener listener) {
this.context = context; this.context = context;
this.listener = listener; this.listener = listener;
@@ -66,6 +68,7 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
} }
public void startUpdates() { public void startUpdates() {
started = true;
apiClient = new LostApiClient.Builder(context).addConnectionCallbacks(this).build(); apiClient = new LostApiClient.Builder(context).addConnectionCallbacks(this).build();
apiClient.connect(); apiClient.connect();
} }
@@ -84,11 +87,14 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
@Override @Override
public void onConnected() { public void onConnected() {
LocationRequest request = LocationRequest.create() if (started) {
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium"))) LocationRequest request = LocationRequest.create()
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval); .setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval);
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, this); LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, this);
} else {
apiClient.disconnect();
}
} }
@Override @Override
@@ -111,9 +117,11 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
} }
public void stopUpdates() { public void stopUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this); if (apiClient.isConnected()) {
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
apiClient.disconnect(); apiClient.disconnect();
}
started = false;
} }
public static double getBatteryLevel(Context context) { public static double getBatteryLevel(Context context) {