Add basic support for deprecated MyLocation feature in maps API

related to #56
This commit is contained in:
mar-v-in 2015-12-03 19:18:02 -08:00
parent b6506209a9
commit fab75d444a
2 changed files with 47 additions and 3 deletions

2
extern/GmsApi vendored

@ -1 +1 @@
Subproject commit 609e53a7d363183de4494600d4141b7c7cf5a692
Subproject commit fbe903fbcbcc27af3579c9b7b35c40b105224a01

View File

@ -17,7 +17,12 @@
package org.microg.gms.maps;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Looper;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
@ -85,6 +90,34 @@ public class GoogleMapImpl extends IGoogleMapDelegate.Stub
private IOnMarkerClickListener onMarkerClickListener;
private IOnMarkerDragListener onMarkerDragListener;
private IOnCameraChangeListener onCameraChangeListener;
private IOnMyLocationChangeListener onMyLocationChangeListener;
private Criteria criteria;
private LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO: Actually do my location overlay
if (onMyLocationChangeListener != null && location != null) {
try {
onMyLocationChangeListener.onMyLocationChanged(ObjectWrapper.wrap(location));
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
public GoogleMapImpl(LayoutInflater inflater, GoogleMapOptions options) {
context = inflater.getContext();
@ -92,6 +125,11 @@ public class GoogleMapImpl extends IGoogleMapDelegate.Stub
uiSettings = new UiSettingsImpl(this);
projection = new ProjectionImpl(backendMap.getViewport());
this.options = options;
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
if (options != null) initFromOptions();
}
@ -379,6 +417,12 @@ public class GoogleMapImpl extends IGoogleMapDelegate.Stub
@Override
public void setMyLocationEnabled(boolean myLocation) throws RemoteException {
Log.w(TAG, "MyLocation not yet supported");
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (myLocation) {
locationManager.requestLocationUpdates(5000, 10, criteria, listener, Looper.getMainLooper());
} else {
locationManager.removeUpdates(listener);
}
}
@Override
@ -455,7 +499,7 @@ public class GoogleMapImpl extends IGoogleMapDelegate.Stub
@Override
public void setOnMyLocationChangeListener(IOnMyLocationChangeListener listener)
throws RemoteException {
this.onMyLocationChangeListener = listener;
}
@Override
@ -496,7 +540,7 @@ public class GoogleMapImpl extends IGoogleMapDelegate.Stub
@Override
public void setLocationSource(ILocationSourceDelegate locationSource) throws RemoteException {
Log.d(TAG, "setLocationSource: " + locationSource);
}
@Override