Merge branch 'mapManualLocation' of s416084/find-my-tutor-android into develop
This commit is contained in:
commit
955f823b25
@ -75,9 +75,14 @@ public class MapActivity extends BaseActivity
|
|||||||
private int mInterval = 10000;
|
private int mInterval = 10000;
|
||||||
private Handler mHandler = new Handler();
|
private Handler mHandler = new Handler();
|
||||||
private Runnable mStatusChecker;
|
private Runnable mStatusChecker;
|
||||||
|
private Handler manualLocHandler = new Handler();
|
||||||
|
private Runnable manualLocStatusChecker;
|
||||||
private MapView mapView;
|
private MapView mapView;
|
||||||
private MapboxMap mapboxMap;
|
private MapboxMap mapboxMap;
|
||||||
|
private Button selectLocationButton;
|
||||||
private Marker droppedMarker;
|
private Marker droppedMarker;
|
||||||
|
private Marker tmpLocalMarker;
|
||||||
|
private Coordinate droppedMarkercoordinate;
|
||||||
private HashMap<String, Coordinate> coordsMap = new HashMap<>();
|
private HashMap<String, Coordinate> coordsMap = new HashMap<>();
|
||||||
private HashMap<String, Marker> markerHash = new HashMap<>();
|
private HashMap<String, Marker> markerHash = new HashMap<>();
|
||||||
private Set<String> previousCoordsIds = new HashSet<>();
|
private Set<String> previousCoordsIds = new HashSet<>();
|
||||||
@ -86,6 +91,7 @@ public class MapActivity extends BaseActivity
|
|||||||
private int zoomParam = 17;
|
private int zoomParam = 17;
|
||||||
private int bearingParam = 180;
|
private int bearingParam = 180;
|
||||||
private int tiltParam = 30;
|
private int tiltParam = 30;
|
||||||
|
private String myID;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -93,7 +99,7 @@ public class MapActivity extends BaseActivity
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
final SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
|
final SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
|
||||||
|
|
||||||
|
myID = PrefUtils.getUserId(getApplicationContext());
|
||||||
// fetching coords service
|
// fetching coords service
|
||||||
coordinateService = ApiClient.getClient(getApplicationContext())
|
coordinateService = ApiClient.getClient(getApplicationContext())
|
||||||
.create(CoordinateService.class);
|
.create(CoordinateService.class);
|
||||||
@ -109,8 +115,10 @@ public class MapActivity extends BaseActivity
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Bundle extras = getIntent().getExtras();
|
Bundle extras = getIntent().getExtras();
|
||||||
|
|
||||||
|
selectLocationButton = findViewById(R.id.select_location_button);
|
||||||
|
|
||||||
Mapbox.getInstance(this, getString(R.string.access_token));
|
Mapbox.getInstance(this, getString(R.string.access_token));
|
||||||
mapView = findViewById(R.id.mapView);
|
mapView = findViewById(R.id.mapView);
|
||||||
@ -126,8 +134,26 @@ public class MapActivity extends BaseActivity
|
|||||||
MapActivity.this.mapboxMap = mapboxMap;
|
MapActivity.this.mapboxMap = mapboxMap;
|
||||||
mStatusChecker.run();
|
mStatusChecker.run();
|
||||||
enableLocationPlugin();
|
enableLocationPlugin();
|
||||||
|
|
||||||
mapboxMap.setOnMarkerClickListener(marker -> {
|
mapboxMap.setOnMarkerClickListener(marker -> {
|
||||||
createMarkerModal(marker.getTitle());
|
String id = marker.getTitle();
|
||||||
|
if (id.equals(myID)) {
|
||||||
|
Log.e(tag + "Manual", "my own marker from API");
|
||||||
|
Button rmButton = findViewById(R.id.remove_location_button);
|
||||||
|
rmButton.setVisibility(View.VISIBLE);
|
||||||
|
rmButton.setOnClickListener(view -> {
|
||||||
|
Log.e(tag + "Manual", "manual coords sending stopped");
|
||||||
|
// TODO to remove after BGserv
|
||||||
|
manualLocHandler.removeCallbacks(manualLocStatusChecker);
|
||||||
|
|
||||||
|
rmButton.setVisibility(View.GONE);
|
||||||
|
Toast.makeText(MapActivity.this, "Your marker will disappear in next couple minutes", Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
createMarkerModal(id);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -207,38 +233,31 @@ public class MapActivity extends BaseActivity
|
|||||||
|
|
||||||
private void setOnMapLongClickListener() {
|
private void setOnMapLongClickListener() {
|
||||||
|
|
||||||
final boolean[] cancel = {false};
|
|
||||||
Button selectLocationButton = findViewById(R.id.select_location_button);
|
|
||||||
|
|
||||||
mapboxMap.addOnMapLongClickListener((LatLng latLng) -> {
|
mapboxMap.addOnMapLongClickListener((LatLng latLng) -> {
|
||||||
selectLocationButton.setVisibility(View.VISIBLE);
|
selectLocationButton.setVisibility(View.VISIBLE);
|
||||||
Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.green_marker);
|
Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.green_marker);
|
||||||
|
|
||||||
|
if (tmpLocalMarker == null) {
|
||||||
|
|
||||||
if (droppedMarker == null) {
|
tmpLocalMarker = mapboxMap.addMarker(new MarkerOptions()
|
||||||
|
|
||||||
droppedMarker = mapboxMap.addMarker(new MarkerOptions()
|
|
||||||
.position(latLng)
|
.position(latLng)
|
||||||
.icon(icon)
|
.icon(icon)
|
||||||
.title("My Loc")
|
.title("My Loc")
|
||||||
.setSnippet("Snipecik"));
|
.setSnippet("Snipecik"));
|
||||||
|
|
||||||
} else if (!cancel[0]) {
|
} else {
|
||||||
ValueAnimator markerAnimator = ObjectAnimator.ofObject(droppedMarker, "position",
|
ValueAnimator markerAnimator = ObjectAnimator.ofObject(tmpLocalMarker, "position",
|
||||||
new mapUtils.LatLngEvaluator(), droppedMarker.getPosition(), latLng);
|
new mapUtils.LatLngEvaluator(), tmpLocalMarker.getPosition(), latLng);
|
||||||
markerAnimator.setDuration(2000);
|
markerAnimator.setDuration(2000);
|
||||||
markerAnimator.start();
|
markerAnimator.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
selectLocationButton.setOnClickListener((View view) -> {
|
selectLocationButton.setOnClickListener((View view) -> {
|
||||||
|
if (tmpLocalMarker != null) {
|
||||||
if (!cancel[0] && droppedMarker != null) {
|
|
||||||
// Toast instructing user to tap on the mapboxMap
|
// Toast instructing user to tap on the mapboxMap
|
||||||
|
|
||||||
|
|
||||||
// TODO PUT MANUAL CORD
|
// TODO PUT MANUAL CORD
|
||||||
try {
|
try {
|
||||||
Coordinate coordinate = new Coordinate(
|
droppedMarkercoordinate = new Coordinate(
|
||||||
latLng.getLatitude(),
|
latLng.getLatitude(),
|
||||||
latLng.getLongitude(),
|
latLng.getLongitude(),
|
||||||
latLng.getAltitude(),
|
latLng.getAltitude(),
|
||||||
@ -248,64 +267,57 @@ public class MapActivity extends BaseActivity
|
|||||||
PrefUtils.getLocationLevel(getApplicationContext())
|
PrefUtils.getLocationLevel(getApplicationContext())
|
||||||
);
|
);
|
||||||
|
|
||||||
disposable.add(
|
// TODO remove after BG sending
|
||||||
coordinateService
|
manualLocStatusChecker = () -> {
|
||||||
.postCoordinate(coordinate)
|
try {
|
||||||
.subscribeOn(Schedulers.io())
|
Log.e(tag + "Manual", "sending manual coords");
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
// TODO ^^^ wrapper to removve
|
||||||
.subscribeWith(new DisposableSingleObserver<Coordinate>() {
|
disposable.add(
|
||||||
@SuppressLint("LongLogTag")
|
coordinateService
|
||||||
@Override
|
.postCoordinate(droppedMarkercoordinate)
|
||||||
public void onSuccess(Coordinate coord) {
|
.subscribeOn(Schedulers.io())
|
||||||
Log.e(tag + "POST", String.valueOf(coord));
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
}
|
.subscribeWith(new DisposableSingleObserver<Coordinate>() {
|
||||||
|
@SuppressLint("LongLogTag")
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Coordinate coord) {
|
||||||
|
Log.e(tag + "POST", String.valueOf(coord));
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("LongLogTag")
|
@SuppressLint("LongLogTag")
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
|
|
||||||
Log.e(tag + "onError", e.getMessage());
|
Log.e(tag + "onError", e.getMessage());
|
||||||
|
|
||||||
|
if (e instanceof HttpException) {
|
||||||
|
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
||||||
|
Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
// TODO \/\/\/\/\/ wrapper to removve
|
||||||
|
} finally {
|
||||||
|
manualLocHandler.postDelayed(manualLocStatusChecker, mInterval);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
manualLocStatusChecker.run();
|
||||||
|
|
||||||
if (e instanceof HttpException) {
|
|
||||||
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
|
||||||
Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
Timber.e(String.valueOf(e));
|
Timber.e(String.valueOf(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
MapActivity.this,
|
MapActivity.this,
|
||||||
"Manual Locations selected!" + latLng,
|
"Manual Locations selected!" + latLng,
|
||||||
Toast.LENGTH_LONG
|
Toast.LENGTH_LONG
|
||||||
).show();
|
).show();
|
||||||
|
|
||||||
selectLocationButton.setBackgroundColor(
|
|
||||||
ContextCompat.getColor(MapActivity.this, R.color.colorAccent));
|
|
||||||
selectLocationButton.setText("Remove Manual location");
|
|
||||||
selectLocationButton.setVisibility(View.VISIBLE);
|
|
||||||
cancel[0] = true;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// TODO REMOVE Manual Locatio
|
|
||||||
mapboxMap.removeMarker(droppedMarker);
|
|
||||||
droppedMarker = null;
|
|
||||||
|
|
||||||
Toast.makeText(
|
|
||||||
MapActivity.this,
|
|
||||||
"REMOVED!!" + latLng,
|
|
||||||
Toast.LENGTH_LONG
|
|
||||||
).show();
|
|
||||||
|
|
||||||
cancel[0] = false;
|
|
||||||
selectLocationButton.setVisibility(View.GONE);
|
selectLocationButton.setVisibility(View.GONE);
|
||||||
selectLocationButton.setText(R.string.select_a_location);
|
mapboxMap.removeMarker(tmpLocalMarker);
|
||||||
selectLocationButton.setBackgroundColor(
|
tmpLocalMarker = null;
|
||||||
ContextCompat.getColor(MapActivity.this, R.color.colorPrimary));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -330,13 +342,11 @@ public class MapActivity extends BaseActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (coordsList.isEmpty()) {
|
if (coordsList.isEmpty()) {
|
||||||
Log.e(tag, "200 empty []");
|
Timber.e("200 empty []");
|
||||||
//mapboxMap.clear();
|
mapboxMap.clear();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ArrayList<String> tmp = new ArrayList<>();
|
ArrayList<String> tmp = new ArrayList<>();
|
||||||
for (Coordinate coordinate : coordsList) {
|
for (Coordinate coordinate : coordsList) {
|
||||||
tmp.add(coordinate.getUserId());
|
tmp.add(coordinate.getUserId());
|
||||||
@ -371,9 +381,6 @@ public class MapActivity extends BaseActivity
|
|||||||
|
|
||||||
if (coordinate != null) {
|
if (coordinate != null) {
|
||||||
Log.e(tag, "Coordin: " + coordinate.getLatitude() + " | " + coordinate.getLongitude());
|
Log.e(tag, "Coordin: " + coordinate.getLatitude() + " | " + coordinate.getLongitude());
|
||||||
// Log.e(tag, "Element: " + element.getLatitude()+" | " + element.getLongitude());
|
|
||||||
// Log.e(tag, "isEqual: " + coordinate.getLatitude().equals(element.getLatitude()));
|
|
||||||
// Log.e(tag, "isEqual: " + coordinate.getLongitude().equals(element.getLongitude()));
|
|
||||||
|
|
||||||
boolean statement = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude());
|
boolean statement = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude());
|
||||||
Log.e(tag, "diff || diff: " + !statement);
|
Log.e(tag, "diff || diff: " + !statement);
|
||||||
@ -406,7 +413,11 @@ public class MapActivity extends BaseActivity
|
|||||||
MarkerOptions markerOptions = new MarkerOptions()
|
MarkerOptions markerOptions = new MarkerOptions()
|
||||||
.title(id)
|
.title(id)
|
||||||
.position(new LatLng(element.getLatitude(), element.getLongitude()));
|
.position(new LatLng(element.getLatitude(), element.getLongitude()));
|
||||||
|
// Check if this is me
|
||||||
|
if (id.equals(myID)) {
|
||||||
|
Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker);
|
||||||
|
markerOptions.setIcon(icon);
|
||||||
|
}
|
||||||
Marker marker = mapboxMap.addMarker(markerOptions);
|
Marker marker = mapboxMap.addMarker(markerOptions);
|
||||||
|
|
||||||
markerHash.put(id, marker);
|
markerHash.put(id, marker);
|
||||||
@ -534,6 +545,8 @@ public class MapActivity extends BaseActivity
|
|||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
mapView.onDestroy();
|
mapView.onDestroy();
|
||||||
mHandler.removeCallbacks(mStatusChecker);
|
mHandler.removeCallbacks(mStatusChecker);
|
||||||
|
// TODO remove after BG sending
|
||||||
|
manualLocHandler.removeCallbacks(manualLocStatusChecker);
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package com.uam.wmi.findmytutor.utils;
|
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.mapbox.mapboxsdk.annotations.InfoWindow;
|
|
||||||
import com.mapbox.mapboxsdk.annotations.Marker;
|
|
||||||
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
|
|
||||||
import com.mapbox.mapboxsdk.maps.MapView;
|
|
||||||
|
|
||||||
public class MapboxMarker extends Marker {
|
|
||||||
public MapboxMarker( MarkerOptions markerOptions ){
|
|
||||||
super(markerOptions);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
@NonNull
|
|
||||||
|
|
||||||
private InfoWindow showInfoWindow(InfoWindow iw, MapView mapView) {
|
|
||||||
iw.open(mapView, this, this.getPosition(), 0, 0);
|
|
||||||
this.infoWindowShown = true;
|
|
||||||
return iw;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
@ -2,6 +2,11 @@ package com.uam.wmi.findmytutor.utils;
|
|||||||
|
|
||||||
import android.animation.TypeEvaluator;
|
import android.animation.TypeEvaluator;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.content.res.AssetManager;
|
||||||
|
|
||||||
import com.mapbox.mapboxsdk.annotations.Polygon;
|
import com.mapbox.mapboxsdk.annotations.Polygon;
|
||||||
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
|
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
|
||||||
@ -11,6 +16,8 @@ import com.mapbox.mapboxsdk.geometry.LatLng;
|
|||||||
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
|
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
|
||||||
import com.mapbox.mapboxsdk.maps.MapView;
|
import com.mapbox.mapboxsdk.maps.MapView;
|
||||||
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
||||||
|
import com.mapbox.mapboxsdk.style.layers.FillLayer;
|
||||||
|
import com.mapbox.mapboxsdk.style.layers.Layer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -23,15 +30,6 @@ public class mapUtils {
|
|||||||
.include(new LatLng(52.46548540224137, 16.925255680881094))
|
.include(new LatLng(52.46548540224137, 16.925255680881094))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
private static final PolygonOptions boundsArea = new PolygonOptions()
|
|
||||||
.add(WMI_BOUNDS.getNorthWest())
|
|
||||||
.add(WMI_BOUNDS.getNorthEast())
|
|
||||||
.add(WMI_BOUNDS.getSouthEast())
|
|
||||||
.add(WMI_BOUNDS.getSouthWest())
|
|
||||||
.alpha(0.0f);
|
|
||||||
// For adding and removing
|
|
||||||
private static Polygon polygon;
|
|
||||||
|
|
||||||
// Map Bounds Area
|
// Map Bounds Area
|
||||||
public static void setMapBoundsArea(Context context, MapboxMap mapboxMap, MapView mapView, Boolean check) {
|
public static void setMapBoundsArea(Context context, MapboxMap mapboxMap, MapView mapView, Boolean check) {
|
||||||
|
|
||||||
@ -40,16 +38,40 @@ public class mapUtils {
|
|||||||
mapboxMap.setLatLngBoundsForCameraTarget(WMI_BOUNDS);
|
mapboxMap.setLatLngBoundsForCameraTarget(WMI_BOUNDS);
|
||||||
makeNewCamera(mapboxMap, 52.466799, 16.927002, 17, 0, 0, 4000);
|
makeNewCamera(mapboxMap, 52.466799, 16.927002, 17, 0, 0, 4000);
|
||||||
mapboxMap.setMinZoomPreference(16); // TODO export to map config
|
mapboxMap.setMinZoomPreference(16); // TODO export to map config
|
||||||
|
// drawBoundsArea(context, mapboxMap, mapView, check);
|
||||||
// Visualise bounds area
|
|
||||||
// showBoundsArea
|
|
||||||
polygon = mapboxMap.addPolygon(boundsArea);
|
|
||||||
} else {
|
} else {
|
||||||
mapboxMap.setLatLngBoundsForCameraTarget(null);
|
mapboxMap.setLatLngBoundsForCameraTarget(null);
|
||||||
mapboxMap.setMinZoomPreference(2);
|
mapboxMap.setMinZoomPreference(2);
|
||||||
mapboxMap.removePolygon(polygon);
|
// drawBoundsArea(context, mapboxMap, mapView, check);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: remove b4 release
|
||||||
|
private static final PolygonOptions boundsArea = new PolygonOptions()
|
||||||
|
.add(WMI_BOUNDS.getNorthWest())
|
||||||
|
.add(WMI_BOUNDS.getNorthEast())
|
||||||
|
.add(WMI_BOUNDS.getSouthEast())
|
||||||
|
.add(WMI_BOUNDS.getSouthWest())
|
||||||
|
.alpha(0.1f)
|
||||||
|
.fillColor(Color.YELLOW);
|
||||||
|
// For adding and removing
|
||||||
|
private static Polygon polygon;
|
||||||
|
private static View crosshair;
|
||||||
|
|
||||||
|
private static void drawBoundsArea(Context context, MapboxMap mapboxMap, MapView mapView, Boolean check) {
|
||||||
|
if (check) {
|
||||||
|
// Visualise bounds area
|
||||||
|
// showBoundsArea
|
||||||
|
polygon = mapboxMap.addPolygon(boundsArea);
|
||||||
|
// showCrosshair
|
||||||
|
crosshair = new View(context);
|
||||||
|
crosshair.setLayoutParams(new FrameLayout.LayoutParams(15, 15, Gravity.CENTER));
|
||||||
|
crosshair.setBackgroundColor(Color.GREEN);
|
||||||
|
mapView.addView(crosshair);
|
||||||
|
} else {
|
||||||
|
mapboxMap.removePolygon(polygon);
|
||||||
|
mapView.removeView(crosshair);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 3.2 KiB |
@ -111,6 +111,17 @@
|
|||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/remove_location_button"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:background="@color/colorAccent"
|
||||||
|
android:text="@string/remove_manual_location"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
</android.support.constraint.ConstraintLayout>
|
@ -206,5 +206,6 @@
|
|||||||
<string name="launch_activity" />
|
<string name="launch_activity" />
|
||||||
<string name="remove_location_updates" />
|
<string name="remove_location_updates" />
|
||||||
<string name="map_activity_label">MapActivity</string>
|
<string name="map_activity_label">MapActivity</string>
|
||||||
|
<string name="remove_manual_location">Remove Manual location</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user