0

I could retreive data from web with this code:

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void onClick (View v){
    new GetMethodDemo().execute("https://maps.googleapis.com/maps/api/directions/json?origin=Breclav&destination=Brno&sensor=false&units=metric&mode=driving");

}

public class GetMethodDemo extends AsyncTask<String , Void ,String> {
    String server_response;

    @Override
    protected String doInBackground(String... strings) {

        URL url;
        HttpURLConnection urlConnection = null;

        try {
            url = new URL(strings[0]);
            urlConnection = (HttpURLConnection) url.openConnection();

            int responseCode = urlConnection.getResponseCode();

            if(responseCode == HttpURLConnection.HTTP_OK){
                server_response = readStream(urlConnection.getInputStream());

                Log.v("CatalogClient", server_response);
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        Log.e("Response", "" + server_response);
    }
}

private String readStream(InputStream in) {
    BufferedReader reader = null;
    StringBuffer response = new StringBuffer();
    try {
        reader = new BufferedReader(new InputStreamReader(in));
        String line = "";
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return response.toString();

}       }

I am able to see in debug that I received data like in this link, but I found that I should use code below for selecting only distance from the data I received. Dont know how to combinate these codes together.. I would like to have in textView how far is the distance between two cities from url.

 final JSONObject json = new JSONObject(response);
 JSONArray routeArray = json.getJSONArray("routes");
 JSONObject routes = routeArray.getJSONObject(0);

 JSONArray newTempARr = routes.getJSONArray("legs");
 JSONObject newDisTimeOb = newTempARr.getJSONObject(0);

 JSONObject distOb = newDisTimeOb.getJSONObject("distance");
 JSONObject timeOb = newDisTimeOb.getJSONObject("duration");

 Log.i("Diatance :", distOb.getString("text"));
 Log.i("Time :", timeOb.getString("text"));

I am not the author of these codes... Thank You

RamithDR
  • 2,103
  • 2
  • 25
  • 34
JimmyR
  • 21
  • 3
  • Parse the JSON in `onPostExecute()` method and assign the value to your TextView using `setText()` method. – Prerak Sola Sep 01 '16 at 13:35
  • See [this](http://stackoverflow.com/questions/7421442/how-to-calculate-distance-between-two-cities-using-google-maps-api-v3). – Faraz Sep 01 '16 at 13:35

0 Answers0