--- android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2009/09/10 19:09:09 310 +++ android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2009/09/11 08:48:18 316 @@ -3,14 +3,18 @@ import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import android.app.Dialog; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; +import android.location.Address; +import android.location.Geocoder; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.ListView; import android.widget.TextView; @@ -53,8 +57,7 @@ String name = launchedBy.getStringExtra("name"); ((TextView) findViewById(R.id.stationName)).setText( name ); - String addr = launchedBy.getStringExtra("address"); - ((TextView) findViewById(R.id.stationAddr)).setText( addr ); + ((TextView) findViewById(R.id.stationAddr)).setText( "searching..." ); int stationId = launchedBy.getIntExtra("stationid", -1); @@ -154,6 +157,32 @@ } } + String lookupAddress(double latitude, double longitude) { + + Geocoder coder = new Geocoder(this, new Locale("da")); + StringBuilder sb = new StringBuilder(); + Log.i("lookupaddr", "" + latitude + "/" + longitude); + try { + List
addressList = coder.getFromLocation(latitude, longitude, 1); + Address addr = addressList.get(0); + + + int max = addr.getMaxAddressLineIndex(); + for (int i=0; i0) + sb.append(", "); + + sb.append(addr.getAddressLine(i)); + } + + + } catch (Exception e) { + Log.e("DepartureList", "geocoder failed", e); + } + + return sb.toString(); + } + class DialogDismisser implements View.OnClickListener { Dialog dlg; @@ -179,6 +208,7 @@ class DepartureFetcher extends AsyncTask { + String addr; @Override protected void onPostExecute(Void result) { super.onPostExecute(result); @@ -186,12 +216,16 @@ adapter.setDepartures(departures); pgDialog.dismiss(); + + ((TextView) findViewById(R.id.stationAddr)).setText( addr ); + if (departures.size() == 0) MessageBox.showMessage(DepartureList.this, "No departures found"); } @Override protected Void doInBackground(Integer... params) { + addr = lookupAddress( latitude , longitude); provider.lookupDepartures(params[0]); departures = provider.getDepartures(); return null;