package com.odc.beachodc.activities;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.odc.beachodc.db.models.Playa;
import com.odc.beachodc.utilities.Geo;
import com.odc.beachodc.utilities.Utilities;
import com.odc.beachodc.utilities.ValidacionPlaya;
import java.util.ArrayList;
/**
* Created by Paco on 09/08/2014.
*/
public class LocationActivity extends FragmentActivity implements GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {
private LocationClient mLocationClient;
private LocationRequest mLocationRequest;
private boolean firstStarted = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationClient = new LocationClient(this,this,this);
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
mLocationRequest.setInterval(30000);
mLocationRequest.setFastestInterval(1000);
if (savedInstanceState != null){
if (Utilities.imageLoader == null) {
Utilities.setImageLoader(getApplicationContext());
}
if ((savedInstanceState.getSerializable("playa") != null) && (ValidacionPlaya.playa == null)) {
ValidacionPlaya.playa = (Playa) savedInstanceState.getSerializable("playa");
}
if ((savedInstanceState.getSerializable("cargadaImagenes") != null)) {
ValidacionPlaya.cargadaImagenes = (Boolean) savedInstanceState.getSerializable("cargadaImagenes");
}
if ((savedInstanceState.getSerializable("cargadaPlayas") != null)) {
ValidacionPlaya.cargadaPlayas = (Boolean) savedInstanceState.getSerializable("cargadaPlayas");
}
if ((savedInstanceState.getSerializable("cargadaTemperatura") != null)) {
ValidacionPlaya.cargadaTemperatura = (Boolean) savedInstanceState.getSerializable("cargadaTemperatura");
}
if ((savedInstanceState.getSerializable("cargadosComentarios") != null)) {
ValidacionPlaya.cargadosComentarios = (Boolean) savedInstanceState.getSerializable("cargadosComentarios");
}
if ((savedInstanceState.getSerializable("cargadosMensajesPlaya") != null)) {
ValidacionPlaya.cargadosMensajesPlaya = (Boolean) savedInstanceState.getSerializable("cargadosMensajesPlaya");
}
if ((savedInstanceState.getSerializable("cargadosUltimosCheckins") != null)) {
ValidacionPlaya.cargadosUltimosCheckins = (Boolean) savedInstanceState.getSerializable("cargadosUltimosCheckins");
}
if ((savedInstanceState.getSerializable("comentariosPlaya") != null)) {
ValidacionPlaya.comentariosPlaya = (ArrayList) savedInstanceState.getSerializable("comentariosPlaya");
}
if ((savedInstanceState.getSerializable("iconWeather") != null)) {
ValidacionPlaya.iconWeather = (String) savedInstanceState.getSerializable("iconWeather");
}
if ((savedInstanceState.getSerializable("imagenes") != null)) {
ValidacionPlaya.imagenes = (ArrayList) savedInstanceState.getSerializable("imagenes");
}
if ((savedInstanceState.getSerializable("lanzadaVerPlaya") != null)) {
ValidacionPlaya.lanzadaVerPlaya = (Boolean) savedInstanceState.getSerializable("lanzadaVerPlaya");
}
if ((savedInstanceState.getSerializable("mensajesBotella") != null)) {
ValidacionPlaya.mensajesBotella = (ArrayList) savedInstanceState.getSerializable("mensajesBotella");
}
if ((savedInstanceState.getSerializable("playas") != null)) {
ValidacionPlaya.playas = (ArrayList) savedInstanceState.getSerializable("playas");
}
if ((savedInstanceState.getSerializable("playasCheckins") != null)) {
ValidacionPlaya.playasCheckins = (ArrayList) savedInstanceState.getSerializable("playasCheckins");
}
if ((savedInstanceState.getSerializable("temperatura") != null)) {
ValidacionPlaya.temperatura = (Double) savedInstanceState.getSerializable("temperatura");
}
}
}
@Override
protected void onStart() {
super.onStart();
if(GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS)
mLocationClient.connect();
}
@Override
public void onResume(){
super.onResume();
if(!firstStarted && mLocationClient.isConnected()){
startUpdates();
}
}
@Override
public void onPause(){
super.onPause();
if(mLocationClient.isConnected())
mLocationClient.removeLocationUpdates(this);
}
@Override
protected void onStop() {
if(mLocationClient.isConnected())
mLocationClient.disconnect();
firstStarted = true;
super.onStop();
}
@Override
public void onConnected(Bundle bundle) {
startUpdates();
firstStarted = false;
}
private void startUpdates(){
mLocationClient.requestLocationUpdates(mLocationRequest,this);
}
@Override
public void onLocationChanged(Location location) {
Geo.myLocation = location;
}
@Override
public void onDisconnected(){
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putSerializable("playa", ValidacionPlaya.playa);
state.putSerializable("cargadaImagenes", ValidacionPlaya.cargadaImagenes);
state.putSerializable("cargadaPlayas", ValidacionPlaya.cargadaPlayas);
state.putSerializable("cargadaTemperatura", ValidacionPlaya.cargadaTemperatura);
state.putSerializable("cargadosComentarios", ValidacionPlaya.cargadosComentarios);
state.putSerializable("cargadosMensajesPlaya", ValidacionPlaya.cargadosMensajesPlaya);
state.putSerializable("cargadosUltimosCheckins", ValidacionPlaya.cargadosUltimosCheckins);
state.putSerializable("comentariosPlaya", ValidacionPlaya.comentariosPlaya);
state.putSerializable("iconWeather", ValidacionPlaya.iconWeather);
state.putSerializable("imagenes", ValidacionPlaya.imagenes);
state.putSerializable("lanzadaVerPlaya", ValidacionPlaya.lanzadaVerPlaya);
state.putSerializable("mensajesBotella", ValidacionPlaya.mensajesBotella);
state.putSerializable("playas", ValidacionPlaya.playas);
state.putSerializable("playasCheckins", ValidacionPlaya.playasCheckins);
state.putSerializable("temperatura", ValidacionPlaya.temperatura);
}
}