added parsing of directions response

This commit is contained in:
Sem van der Hoeven
2021-01-04 11:42:34 +01:00
parent 1ca13e3a6b
commit d433565fef
7 changed files with 153 additions and 15 deletions

View File

@@ -4,8 +4,11 @@ import android.util.Log;
import com.a1.nextlocation.data.Location;
import com.a1.nextlocation.data.Route;
import com.a1.nextlocation.json.DirectionsResult;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
@@ -22,21 +25,22 @@ public enum ApiHandler {
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
private final String BASE_URL = "https://api.openrouteservice.org/v2/directions/";
private final String API_KEY = "5b3ce3597851110001cf6248d4eee2099f724255918adc71cc502b2a";
private final String DIRECTIONS_MODE = "foot_walking";
private final String DIRECTIONS_MODE = "foot-walking";
private List<DirectionsListener> listeners = new ArrayList<>();
private OkHttpClient client = new OkHttpClient();
public Route getDirections(Location startLocation, Location endLocation) {
return getDirections(startLocation.getCoordinates(),endLocation.getCoordinates());
public void getDirections(Location startLocation, Location endLocation) {
getDirections(startLocation.getCoordinates(),endLocation.getCoordinates());
}
public Route getDirections(double startLat, double startLong, double endLat, double endLong) {
return getDirections(startLat + "," + startLong, endLat + "," + endLong);
public void getDirections(double startLat, double startLong, double endLat, double endLong) {
getDirections(startLat + "," + startLong, endLat + "," + endLong);
}
public Route getDirections(String startLocation, String endLocation) {
public void getDirections(String startLocation, String endLocation) {
String requestUrl = BASE_URL + DIRECTIONS_MODE + "?api_key=" + API_KEY + "&start=" +startLocation + "&end=" + endLocation;
AtomicReference<Route> res = null;
Thread t = new Thread(() -> {
Request request = new Request.Builder().url(requestUrl).build();
@@ -45,6 +49,14 @@ public enum ApiHandler {
if (response.body() != null) {
String responseString = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "getDirections: got response: " + responseString);
DirectionsResult result = new DirectionsResult();
result.parse(responseString);
Log.d(TAG, "getDirections: " + result.getSteps().size());
for (DirectionsListener listener : listeners) {
listener.onDirectionsAvailable(result);
}
}
} catch (IOException e) {
@@ -54,12 +66,10 @@ public enum ApiHandler {
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return res.get();
}
public void addListener(DirectionsListener listener) {
this.listeners.add(listener);
}

View File

@@ -0,0 +1,8 @@
package com.a1.nextlocation.network;
import com.a1.nextlocation.data.Route;
import com.a1.nextlocation.json.DirectionsResult;
public interface DirectionsListener {
void onDirectionsAvailable(DirectionsResult result);
}