Back to project page Go2-Rennes.
The source code is released under:
GNU General Public License
If you think the Android project Go2-Rennes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/******************************************************************************* * Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com * //ww w .jav a 2 s . c o m * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package fr.gotorennes; import java.util.Calendar; import java.util.List; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.os.AsyncTask; import fr.gotorennes.domain.Arret; import fr.gotorennes.domain.BikeStation; public class ItineraireVeloResultActivity extends AbstractMapActivity { private boolean departOk = true; private boolean arriveeOk = true; private AsyncTask<String, String, Itineraire> t; @Override protected int getLayout() { return R.layout.map_itineraire; } @Override protected void init() { Intent intent = getIntent(); final String adresseDepart = intent.getStringExtra("depart"); final String adresseArrivee = intent.getStringExtra("arrivee"); final Calendar calendrier = Calendar.getInstance(); calendrier.setTimeInMillis(intent.getLongExtra("date", System.currentTimeMillis())); final ProgressDialog waitDialog = ProgressDialog.show(this, getString(R.string.titre), getString(R.string.itineraire), true, true, new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if(t != null){ t.cancel(true); } finish(); } }); t = new AsyncTask<String, String, Itineraire>() { @Override protected Itineraire doInBackground(String... params) { int time = Arret.getTime(calendrier, false); publishProgress(getString(R.string.geolocalisationDepart)); Location depart = getLocation(getApplicationContext(), adresseDepart); if(depart == null) { departOk = false; return null; } publishProgress(getString(R.string.geolocalisationArrivee)); Location arrivee = getLocation(getApplicationContext(), adresseArrivee); if(arrivee == null) { arriveeOk = false; return null; } int tempsMarche = getTempsMarche(depart, arrivee); if (tempsMarche <= 10) { publishProgress(getString(R.string.calculItinerairePieton)); return getItinerairePieton(time, depart, time + tempsMarche, arrivee); } publishProgress(getString(R.string.rechercheStationsDepart)); List<BikeStation> bikeStationsDepart = goToRennes.getBikeStationService().getProximityBikeStations(depart.latitude, depart.longitude); BikeStation stationDepart = bikeStationsDepart.get(0); Location locationDepartVelo = new Location(stationDepart, getApplicationContext()); int tempsMarcheDepart = getTempsMarche(depart, locationDepartVelo); publishProgress(getString(R.string.rechercheStationsArrivee)); List<BikeStation> bikeStationsArrivee = goToRennes.getBikeStationService().getProximityBikeStations(arrivee.latitude, arrivee.longitude); BikeStation stationArrivee = bikeStationsArrivee.get(0); Location locationArriveeVelo = new Location(stationArrivee, getApplicationContext()); int tempsMarcheArrivee = getTempsMarche(locationArriveeVelo, arrivee); if(stationDepart.equals(stationArrivee)) { publishProgress(getString(R.string.calculItinerairePieton)); return getItinerairePieton(time, depart, time + tempsMarche, arrivee); } int tempsVelo = getTempsVelo(locationDepartVelo, locationArriveeVelo); long tempsTotal = tempsMarcheDepart + tempsVelo + tempsMarcheArrivee; if (tempsTotal > tempsMarche) { publishProgress(getString(R.string.calculItinerairePieton)); return getItinerairePieton(time, depart, time + tempsMarche, arrivee); } publishProgress(getString(R.string.calculItineraireDepart)); Etape etapePietonDepart = getEtape(TypeEtape.PIETON, time, depart, time + tempsMarcheDepart, locationDepartVelo); publishProgress(getString(R.string.calculItineraireVelo)); Etape etapeVelo = getEtape(TypeEtape.VELO, etapePietonDepart.arrivee, locationDepartVelo, etapePietonDepart.arrivee + tempsVelo, locationArriveeVelo); publishProgress(getString(R.string.calculItineraireArrivee)); Etape etapePietonArrivee = getEtape(TypeEtape.PIETON, etapeVelo.arrivee, locationArriveeVelo, etapeVelo.arrivee + tempsMarcheArrivee, arrivee); return new Itineraire(etapePietonDepart, etapeVelo, etapePietonArrivee); } @Override protected void onPostExecute(Itineraire result) { if( result == null ) { waitDialog.dismiss(); if(!departOk) { showError(getString(R.string.erreurAdresseDepart), true); } else if(!arriveeOk) { showError(getString(R.string.erreurAdresseArrivee), true); } else { showError(getString(R.string.erreurItineraire), true); } return; } populateItineraireDetails(result); waitDialog.dismiss(); } @Override protected void onProgressUpdate(String... values) { waitDialog.setMessage(values[0]); } }; t.execute(adresseDepart, adresseArrivee); } @Override protected String getTrackingName() { return "itineraireVelo"; } @Override protected void loadProximityData() { // Rien } }