|
|
@ -1,23 +1,15 @@
|
|
|
|
package org.tasks.location;
|
|
|
|
package org.tasks.location;
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.location.Location;
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
|
|
|
|
|
|
|
import com.google.android.gms.common.ConnectionResult;
|
|
|
|
import com.google.android.gms.common.ConnectionResult;
|
|
|
|
import com.google.android.gms.common.api.GoogleApiClient;
|
|
|
|
import com.google.android.gms.common.api.GoogleApiClient;
|
|
|
|
import com.google.android.gms.common.api.ResultCallback;
|
|
|
|
|
|
|
|
import com.google.android.gms.location.LocationServices;
|
|
|
|
import com.google.android.gms.location.LocationServices;
|
|
|
|
import com.google.android.gms.location.places.AutocompletePredictionBuffer;
|
|
|
|
|
|
|
|
import com.google.android.gms.location.places.PlaceBuffer;
|
|
|
|
|
|
|
|
import com.google.android.gms.location.places.Places;
|
|
|
|
import com.google.android.gms.location.places.Places;
|
|
|
|
import com.google.android.gms.maps.model.LatLng;
|
|
|
|
|
|
|
|
import com.google.android.gms.maps.model.LatLngBounds;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.tasks.injection.ForApplication;
|
|
|
|
import org.tasks.injection.ForApplication;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
|
|
|
|
|
|
|
import timber.log.Timber;
|
|
|
|
import timber.log.Timber;
|
|
|
@ -40,36 +32,6 @@ public class GoogleApi implements GoogleApiClient.ConnectionCallbacks {
|
|
|
|
.addConnectionCallbacks(this);
|
|
|
|
.addConnectionCallbacks(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void getPlaceDetails(final String placeId, final ResultCallback<PlaceBuffer> callback) {
|
|
|
|
|
|
|
|
Places.GeoDataApi.getPlaceById(googleApiClient, placeId).setResultCallback(new ResultCallback<PlaceBuffer>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onResult(PlaceBuffer places) {
|
|
|
|
|
|
|
|
callback.onResult(places);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void getAutocompletePredictions(final String constraint, final ResultCallback<AutocompletePredictionBuffer> callback) {
|
|
|
|
|
|
|
|
final LatLngBounds bounds = LatLngBounds.builder().include(getLastKnownLocation(googleApiClient)).build();
|
|
|
|
|
|
|
|
Places.GeoDataApi.getAutocompletePredictions(googleApiClient, constraint, bounds, null)
|
|
|
|
|
|
|
|
.setResultCallback(new ResultCallback<AutocompletePredictionBuffer>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onResult(AutocompletePredictionBuffer autocompletePredictions) {
|
|
|
|
|
|
|
|
callback.onResult(autocompletePredictions);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, 15, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private LatLng getLastKnownLocation(GoogleApiClient googleApiClient) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
|
|
|
|
|
|
|
|
return new LatLng(lastLocation.getLatitude(), lastLocation.getLongitude());
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
Timber.e(e, e.getMessage());
|
|
|
|
|
|
|
|
return new LatLng(0, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler) {
|
|
|
|
public void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler) {
|
|
|
|
connect(googleApiClientConnectionHandler, new GoogleApiClient.OnConnectionFailedListener() {
|
|
|
|
connect(googleApiClientConnectionHandler, new GoogleApiClient.OnConnectionFailedListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -79,15 +41,6 @@ public class GoogleApi implements GoogleApiClient.ConnectionCallbacks {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void connect(final GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener) {
|
|
|
|
|
|
|
|
connect(new GoogleApiClientConnectionHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onConnect(GoogleApiClient client) {
|
|
|
|
|
|
|
|
Timber.i("onConnect(%s)", client);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, onConnectionFailedListener);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler, GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener) {
|
|
|
|
private void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler, GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener) {
|
|
|
|
this.googleApiClientConnectionHandler = googleApiClientConnectionHandler;
|
|
|
|
this.googleApiClientConnectionHandler = googleApiClientConnectionHandler;
|
|
|
|
googleApiClient = builder
|
|
|
|
googleApiClient = builder
|
|
|
@ -96,10 +49,6 @@ public class GoogleApi implements GoogleApiClient.ConnectionCallbacks {
|
|
|
|
googleApiClient.connect();
|
|
|
|
googleApiClient.connect();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void disconnect() {
|
|
|
|
|
|
|
|
googleApiClient.disconnect();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onConnected(Bundle bundle) {
|
|
|
|
public void onConnected(Bundle bundle) {
|
|
|
|
Timber.i("onConnected(Bundle)");
|
|
|
|
Timber.i("onConnected(Bundle)");
|
|
|
|