Android Open Source - Go2-Rennes Abstract Activity






From Project

Back to project page Go2-Rennes.

License

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.

Java Source Code

/*******************************************************************************
 * Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com
 * /*  www  . j ava  2  s . c  om*/
 * 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.Date;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.Location;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

import fr.gotorennes.util.LocationUtils;

public abstract class AbstractActivity extends Activity {

  public static final String ACTION_LOGOUT = "fr.gotorennes.LOGOUT";

  protected double latitude;
  protected double longitude;

  protected Calendar calendrier = Calendar.getInstance();

  public static final int DATE_DIALOG_ID = 0;
  public static final int TIME_DIALOG_ID = 1;

  protected GoToRennes goToRennes;
  protected LayoutInflater layoutInflater;
  protected BroadcastReceiver receiver;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    layoutInflater = this.getLayoutInflater();

    receiver = new BroadcastReceiver() {

      @Override
      public void onReceive(Context context, Intent intent) {
        finish();
      }

    };

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(ACTION_LOGOUT);
    registerReceiver(receiver, intentFilter);

    final ProgressDialog waitDialog = ProgressDialog.show(this,
        getString(R.string.titre), getString(R.string.chargement),
        true, true);

    final AsyncTask<Void, Void, Boolean> initTask = new AsyncTask<Void, Void, Boolean>() {
      
      private String message = null;

      @Override
      protected Boolean doInBackground(Void... params) {
        try {
          goToRennes = GoToRennes.getInstance(AbstractActivity.this, waitDialog);
        } catch (Throwable ex) {
          Log.e("GoToRennes", "Error init go2Rennes " + ex.getMessage());
          message = ex.getMessage();
          return false;
        }
        return true;
      }

      @Override
      protected void onPostExecute(Boolean result) {
        waitDialog.dismiss();

        if (result == null || !result) {
          showError(getString(R.string.erreurInitialisation) + " : " + message, true);
        } else {
          init(getIntent());
          goToRennes.track(getTrackingName());
        }
      }
    };

    waitDialog.setOnCancelListener(new OnCancelListener() {

      @Override
      public void onCancel(DialogInterface dialog) {
        if (initTask != null) {
          initTask.cancel(true);
        }
        finish();
      }
    });

    initTask.execute();
  }

  protected abstract void init(Intent intent);

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    init(intent);
  }

  protected abstract String getTrackingName();

  protected void logout() {
    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction(ACTION_LOGOUT);
    sendBroadcast(broadcastIntent);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.accueil:
      goToRennes.trackEvent("Menu", "Accueil");
      Intent intentAccueil = new Intent(getApplicationContext(),
          GoToRennesActivity.class);
      intentAccueil.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(intentAccueil);
      return true;
    case R.id.quitter:
      goToRennes.trackEvent("Menu", "Quitter");
      logout();
      return true;
    default:
      return super.onOptionsItemSelected(item);
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
    if (isTaskRoot()) {
      if (goToRennes != null)
        goToRennes.stop();
    }
    if (adView != null) {
      adView.destroy();
    }
  }

  @Override
  protected void onPause() {
    super.onPause();
    LocationUtils.desactiveLocation(this);
  }
  
  private AdView adView = null;

  @Override
  protected void onResume() {
    super.onResume();
    LocationUtils.activeLocation(this);

    ViewGroup layout = (ViewGroup) findViewById(R.id.adLayout);
    if (layout != null && adView == null) {
      adView = new AdView(this, AdSize.BANNER, "ca-app-pub-5396385527314971/1328911094");
      layout.addView(adView);
    }
    
    if (adView != null) {
      AdRequest adRequest = new AdRequest();
      adRequest.setLocation(LocationUtils.getLocation(this));
      adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
      adRequest.addTestDevice("8A95E7269CA459C74F63A410B14D6444");
      adView.loadAd(adRequest);
    }
    
    Log.e("GoToRennes", Secure.getString(getContentResolver(), Secure.ANDROID_ID));
  }

  protected int getMapIcon() {
    return 0;
  }

  protected void addCalendrier(Intent intent) {

    calendrier = Calendar.getInstance();
    calendrier.setTime(new Date(intent.getLongExtra("date",
        System.currentTimeMillis())));

    TextView date = (TextView) findViewById(R.id.date);
    date.setText(DateFormat.format("dd/MM/yyyy", calendrier));
    date.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        showDialog(DATE_DIALOG_ID);
      }

    });

    TextView time = (TextView) findViewById(R.id.time);
    time.setText(DateFormat.format("kk:mm", calendrier));
    time.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        showDialog(TIME_DIALOG_ID);
      }

    });
  }

  private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
      calendrier.set(Calendar.YEAR, year);
      calendrier.set(Calendar.MONTH, monthOfYear);
      calendrier.set(Calendar.DAY_OF_MONTH, dayOfMonth);

      TextView date = (TextView) findViewById(R.id.date);
      date.setText(DateFormat.format("dd/MM/yyyy", calendrier));

      onCalendrierChanged();
    }
  };

  private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
      calendrier.set(Calendar.HOUR_OF_DAY, hourOfDay);
      calendrier.set(Calendar.MINUTE, minute);

      TextView time = (TextView) findViewById(R.id.time);
      time.setText(DateFormat.format("kk:mm", calendrier));

      onCalendrierChanged();
    }
  };

  protected void onCalendrierChanged() {
    
    // Nothing
  }

  @Override
  protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
      return new DatePickerDialog(this, mDateSetListener,
          calendrier.get(Calendar.YEAR),
          calendrier.get(Calendar.MONTH),
          calendrier.get(Calendar.DAY_OF_MONTH));
    case TIME_DIALOG_ID:
      return new TimePickerDialog(this, mTimeSetListener,
          calendrier.get(Calendar.HOUR_OF_DAY),
          calendrier.get(Calendar.MINUTE), true);
    }
    return null;
  }

  public void showMap(View view) {
    showMap(latitude, longitude);
  }
  
  public void showMap(double latitude, double longitude) {
    Intent intentMap = new Intent(getApplicationContext(),
        ProximityMapActivity.class);
    intentMap.putExtra("latitude", latitude);
    intentMap.putExtra("longitude", longitude);
    intentMap.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intentMap);
  }

  protected void showError(String message) {
    showError(message, false);
  }

  protected void showError(String message, final boolean finish) {
    AlertDialog.Builder build = new AlertDialog.Builder(this);
    build.setMessage(message);
    build.setPositiveButton("Ok",
        new android.content.DialogInterface.OnClickListener() {

          @Override
          public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            if (finish)
              finish();
          }

        });
    build.create().show();
  }

  public static String getFormattedDistance(
      fr.gotorennes.AbstractMapActivity.Location depart,
      fr.gotorennes.AbstractMapActivity.Location arrivee) {
    return AbstractMapActivity.getFormattedDistance(depart, arrivee);
  }

  protected String getFormattedDistance(double latitude, double longitude) {
    return AbstractMapActivity.getFormattedDistance(this.latitude,
        this.longitude, latitude, longitude);
  }

  protected String getMyLocationFormattedDistance(double latitude,
      double longitude) {
    Location location = LocationUtils.getLocation(this);
    if (location != null) {
      return AbstractMapActivity.getFormattedDistance(latitude,
          longitude, location.getLatitude(), location.getLongitude());
    } else {
      return "--";
    }
  }
  
  protected double getLatitude() {
    Location location = LocationUtils.getLocation(this);
    if (location != null) {
      return location.getLatitude();
    }
    return 0;
  }
  
  protected double getLongitude() {
    Location location = LocationUtils.getLocation(this);
    if (location != null) {
      return location.getLongitude();
    }
    return 0;
  }

  public void showProximite(View view) {
    Intent intent = new Intent(this, ProximiteResultActivity.class);
    intent.putExtra("latitude", latitude);
    intent.putExtra("longitude", longitude);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
  }
}




Java Source Code List

fr.gotorennes.AbstractActivity.java
fr.gotorennes.AbstractConfigurationActivity.java
fr.gotorennes.AbstractMapActivity.java
fr.gotorennes.AbstractWidgetProvider.java
fr.gotorennes.BikeStationActivity.java
fr.gotorennes.BikeStationWidgetConfigurationActivity.java
fr.gotorennes.BikeStationWidgetProvider.java
fr.gotorennes.BikeStationsActivity.java
fr.gotorennes.BikeWidgetProvider.java
fr.gotorennes.BusArretActivity.java
fr.gotorennes.BusCircuitsActivity.java
fr.gotorennes.BusCircuitsWidgetConfigurationActivity.java
fr.gotorennes.BusLignesActivity.java
fr.gotorennes.BusLignesWidgetConfigurationActivity.java
fr.gotorennes.BusStationActivity.java
fr.gotorennes.BusStationGroupsActivity.java
fr.gotorennes.BusStationsActivity.java
fr.gotorennes.BusStationsMapActivity.java
fr.gotorennes.BusStopWidgetConfigurationActivity.java
fr.gotorennes.BusStopWidgetProvider.java
fr.gotorennes.BusTripActivity.java
fr.gotorennes.CadenasActivity.java
fr.gotorennes.ClockActivity.java
fr.gotorennes.CreditsActivity.java
fr.gotorennes.FavorisActivity.java
fr.gotorennes.GoToRennesActivity.java
fr.gotorennes.GoToRennes.java
fr.gotorennes.ItineraireActivity.java
fr.gotorennes.ItineraireBusDetailActivity.java
fr.gotorennes.ItineraireBusResultActivity.java
fr.gotorennes.ItineraireMapActivity.java
fr.gotorennes.ItineraireVeloResultActivity.java
fr.gotorennes.MetroStationActivity.java
fr.gotorennes.MetroStationsActivity.java
fr.gotorennes.PointDeVenteActivity.java
fr.gotorennes.PointDeVentesActivity.java
fr.gotorennes.ProximiteActivity.java
fr.gotorennes.ProximiteResultActivity.java
fr.gotorennes.ProximityMapActivity.java
fr.gotorennes.RelayParkActivity.java
fr.gotorennes.RelayParkWidgetConfigurationActivity.java
fr.gotorennes.RelayParkWidgetProvider.java
fr.gotorennes.RelayParksActivity.java
fr.gotorennes.domain.Arret.java
fr.gotorennes.domain.BikeStation.java
fr.gotorennes.domain.Circuit.java
fr.gotorennes.domain.EquipementStatus.java
fr.gotorennes.domain.Equipement.java
fr.gotorennes.domain.Ligne.java
fr.gotorennes.domain.LineAlert.java
fr.gotorennes.domain.Localisable.java
fr.gotorennes.domain.MetroStation.java
fr.gotorennes.domain.NextDeparture.java
fr.gotorennes.domain.NextMetroDeparture.java
fr.gotorennes.domain.PointDeVenteCommune.java
fr.gotorennes.domain.PointDeVenteQuartier.java
fr.gotorennes.domain.PointDeVente.java
fr.gotorennes.domain.RelayPark.java
fr.gotorennes.domain.SensCirculation.java
fr.gotorennes.domain.StationGroup.java
fr.gotorennes.domain.Station.java
fr.gotorennes.persistence.BusDao.java
fr.gotorennes.persistence.BusDatabase.java
fr.gotorennes.remote.BikeStationService.java
fr.gotorennes.remote.BusStationService.java
fr.gotorennes.remote.CommuneService.java
fr.gotorennes.remote.EquipementService.java
fr.gotorennes.remote.EquipementStatusService.java
fr.gotorennes.remote.LineAlertService.java
fr.gotorennes.remote.MetroStationService.java
fr.gotorennes.remote.MetroStationStatusService.java
fr.gotorennes.remote.NextDepartureService.java
fr.gotorennes.remote.NextMetroDepartureService.java
fr.gotorennes.remote.PointDeVenteService.java
fr.gotorennes.remote.QuartierService.java
fr.gotorennes.remote.RelayParkService.java
fr.gotorennes.remote.RemoteService.java
fr.gotorennes.util.AsciiUtils.java
fr.gotorennes.util.BackgroundTask.java
fr.gotorennes.util.JoursUtils.java
fr.gotorennes.util.LocationUtils.java
fr.gotorennes.util.UpdateUtils.java
fr.gotorennes.view.ExpandableView.java
fr.gotorennes.view.FilterBar.java
fr.gotorennes.view.FilterSortBar.java
fr.gotorennes.view.LockPopupWindow.java
fr.gotorennes.view.MapDrawable.java
fr.gotorennes.view.TitleBar.java