Fix lost API connection logic
Этот коммит содержится в:
@@ -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() {
|
||||||
|
if (started) {
|
||||||
LocationRequest request = LocationRequest.create()
|
LocationRequest request = LocationRequest.create()
|
||||||
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
|
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
|
||||||
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval);
|
.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,10 +117,12 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stopUpdates() {
|
public void stopUpdates() {
|
||||||
|
if (apiClient.isConnected()) {
|
||||||
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
|
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
|
||||||
|
|
||||||
apiClient.disconnect();
|
apiClient.disconnect();
|
||||||
}
|
}
|
||||||
|
started = false;
|
||||||
|
}
|
||||||
|
|
||||||
public static double getBatteryLevel(Context context) {
|
public static double getBatteryLevel(Context context) {
|
||||||
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user