Ваш код выглядит нормально, за исключением того, что я не вижу, что вы добавляете ключ API к запросу API направлений.
Убедитесь, что вы добавили (неограниченно) тот, который не может быть тем же, который вы используете для загрузки своей карты Google (при условии, что ключ API Android ограничен - что и должно быть). Чтобы узнать, как его защитить, ознакомьтесь с соответствующей веткой Как использовать библиотеку Google-Directions- Android с ограниченным ключом API
Это рабочий код, который я использовал.
import android.os.Bundle;
import androidx.fragment.app.FragmentActivity;
import com.android.volley.Request;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.maps.model.LatLng;
import org.json.JSONObject;
public class MapsActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
getDirectionsUrl(new LatLng(35.1, -117.9), new LatLng(37.7, -122.4));
}
private void getDirectionsUrl(LatLng picklatlng, LatLng droplatlng) {
if (picklatlng != null && droplatlng != null) {
String str_origin = "origin=" + picklatlng.latitude + "," + picklatlng.longitude;
String str_dest = "destination=" + droplatlng.latitude + "," + droplatlng.longitude;
String sensor = "sensor=false";
String parameters = str_origin + "&" + str_dest + "&" + sensor;
String output = "json";
String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?key=MY_API_KEY&" + parameters;
JsonObjectRequest jsonRequest = new JsonObjectRequest
(Request.Method.GET, url, null, new com.android.volley.Response.Listener // CHANGES HERE
<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response.toString());
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Volley.newRequestQueue(this).add(jsonRequest);
}
}
}
Вывод:
{"geocoded_waypoints":[{"geocoder_status":"OK","place_id":"ChIJm_nMTZjSw4ARZA1AAEnxllA","types":["route"]},{"geocoder_status":"OK","place_id":"Eic3MDMgVHVubmVsIEF2ZSwgQnJpc2JhbmUsIENBIDk0MDA1LCBVU0EiGxIZChQKEglzvTxD1niPgBGTzG36JaRIkxC_BQ","types":["street_address"]}],"routes":[{"bounds":{"northeast":{"lat":37.6999852,"lng":-117.9000042},"southwest":{"lat":35.097047,"lng":-122.4068915}},"copyrights":"Map data ©2020 Google","legs":[{"distance":{"text":"355 mi","value":572013},"duration":{"text":"5 hours 41 mins","value":20477},"end_address":"703 Tunnel Ave, Brisbane, CA 94005, USA","end_location":{"lat":37.6999852,"lng":-122.4003035},"start_address":"Georgia Ave, Edwards, CA 93523, USA","start_location":{"lat":35.1006073,"lng":-117.9000042},"steps":[{"distance":{"text":"285 ft","value":87},"duration":{"text":"1 min","value":7},"end_location":{"lat":35.100593,"lng":-117.900961}, [...]
Надеюсь, это поможет!