Created
January 13, 2017 20:36
-
-
Save ezamelczyk/935e41c9563474b5b616e1b55f7e55ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.location.Location; | |
import android.os.Bundle; | |
import android.support.v7.app.ActionBarActivity; | |
import android.util.Log; | |
import com.google.android.gms.common.ConnectionResult; | |
import com.google.android.gms.common.api.GoogleApiClient; | |
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; | |
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; | |
import com.google.android.gms.location.LocationListener; | |
import com.google.android.gms.location.LocationRequest; | |
import com.google.android.gms.location.LocationServices; | |
public class MainActivity extends ActionBarActivity implements | |
ConnectionCallbacks, OnConnectionFailedListener, LocationListener { | |
private static final String TAG = "MainActivity"; | |
protected GoogleApiClient mGoogleApiClient; | |
protected LocationRequest mLocationRequest; | |
protected Location mCurrentLocation; | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
buildGoogleApiClient(); | |
} | |
protected synchronized void buildGoogleApiClient() { | |
Log.i(TAG, "Building GoogleApiClient"); | |
mGoogleApiClient = new GoogleApiClient.Builder(this) | |
.addConnectionCallbacks(this) | |
.addOnConnectionFailedListener(this) | |
.addApi(LocationServices.API) | |
.build(); | |
createLocationRequest(); | |
} | |
protected void createLocationRequest() { | |
mLocationRequest = new LocationRequest(); | |
mLocationRequest.setInterval(10000); | |
mLocationRequest.setFastestInterval(1000); | |
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); | |
} | |
protected void startLocationUpdates() { | |
LocationServices.FusedLocationApi.requestLocationUpdates( | |
mGoogleApiClient, mLocationRequest, this); | |
} | |
protected void stopLocationUpdates() { | |
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
mGoogleApiClient.connect(); | |
} | |
@Override | |
public void onResume() { | |
super.onResume(); | |
if (mGoogleApiClient.isConnected()) { | |
startLocationUpdates(); | |
} | |
} | |
@Override | |
protected void onPause() { | |
super.onPause(); | |
if (mGoogleApiClient.isConnected()) { | |
stopLocationUpdates(); | |
} | |
} | |
@Override | |
protected void onStop() { | |
mGoogleApiClient.disconnect(); | |
super.onStop(); | |
} | |
@Override | |
public void onConnected(Bundle connectionHint) { | |
Log.i(TAG, "Connected to GoogleApiClient"); | |
if (mCurrentLocation == null) { | |
mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); | |
} | |
startLocationUpdates(); | |
} | |
@Override | |
public void onLocationChanged(Location location) { | |
mCurrentLocation = location; | |
Log.i(TAG, location.getLatitude() + " " + location.getLongitude()); | |
} | |
@Override | |
public void onConnectionSuspended(int cause) { | |
Log.i(TAG, "Connection suspended"); | |
mGoogleApiClient.connect(); | |
} | |
@Override | |
public void onConnectionFailed(ConnectionResult result) { | |
Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment