Skip to content

Commit 9377dbe

Browse files
author
hussienalrubaye
committed
GoogleApiClient
1 parent 6c838ee commit 9377dbe

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

GoogleApiClient.java

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
public class MyLocationListener
2+
implements GoogleApiClient.ConnectionCallbacks,
3+
GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener
4+
{
5+
private final String TAG = "LOC_RECURRING_SAMPLE";
6+
7+
// Constants that define how often location updates will be delivered
8+
private final long LOC_UPDATE_INTERVAL = 10000; // 10s in milliseconds
9+
private final long LOC_FASTEST_UPDATE = 5000; // 5s in milliseconds
10+
11+
protected GoogleApiClient mGoogleApiClient;
12+
protected LocationRequest mLocRequest;
13+
public Location mCurLocation;
14+
15+
Context context;
16+
public MyLocationListener( Context context) {
17+
this.context=context;
18+
mCurLocation = null;
19+
20+
// build the Play Services client object
21+
mGoogleApiClient = new GoogleApiClient.Builder(context)
22+
.addConnectionCallbacks(this)
23+
.addOnConnectionFailedListener(this)
24+
.addApi(LocationServices.API)
25+
.build();
26+
mLocRequest=new LocationRequest();
27+
mLocRequest.setInterval(LOC_UPDATE_INTERVAL);
28+
mLocRequest.setFastestInterval(LOC_FASTEST_UPDATE);
29+
mLocRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
30+
// TODO: create the LocationRequest we'll use for location updates
31+
onStart();
32+
}
33+
34+
35+
public void startLocationUpdates() {
36+
// TODO: start the location updates
37+
38+
LocationServices.FusedLocationApi.requestLocationUpdates(
39+
mGoogleApiClient,mLocRequest,this);
40+
41+
42+
}
43+
44+
public void stopLocationUpdates() {
45+
// TODO: stop the updates
46+
47+
LocationServices.FusedLocationApi.removeLocationUpdates(
48+
mGoogleApiClient, this);
49+
50+
51+
}
52+
53+
protected void updateUI() {
54+
// take the lat and long of the current location object and add it to the list
55+
if (mCurLocation != null) {
56+
String lat = String.format("Lat: %f\n", mCurLocation.getLatitude());
57+
String lon = String.format("Lon: %f\n", mCurLocation.getLongitude());
58+
59+
60+
}
61+
}
62+
63+
protected void initializeUI() {
64+
// start by getting the last known location as a starting point
65+
if (mCurLocation == null) {
66+
mCurLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
67+
68+
updateUI();
69+
70+
71+
}
72+
73+
74+
}
75+
76+
/**
77+
* Called to handle the button clicks in the view
78+
*/
79+
80+
public void onClick(int id ) {
81+
switch (id){
82+
case 1:
83+
startLocationUpdates();
84+
break;
85+
case 0:
86+
stopLocationUpdates();
87+
break;
88+
}
89+
}
90+
91+
/**
92+
* Called by Play Services when the user's location changes
93+
*/
94+
@Override
95+
public void onLocationChanged(Location loc) {
96+
mCurLocation = loc;
97+
LocationService.location=loc;
98+
updateUI();
99+
}
100+
101+
102+
103+
104+
105+
106+
/**
107+
* Google Play Services Lifecycle methods
108+
*/
109+
@Override
110+
public void onConnected(Bundle connectionHint) {
111+
112+
initializeUI();
113+
startLocationUpdates();
114+
}
115+
116+
@Override
117+
public void onConnectionFailed(ConnectionResult result) {
118+
Log.d(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode());
119+
}
120+
121+
@Override
122+
public void onConnectionSuspended(int cause) {
123+
Log.d(TAG, "Connection was suspended for some reason");
124+
mGoogleApiClient.connect();
125+
}
126+
127+
/**
128+
* Activity lifecycle events
129+
*/
130+
public void onStart() {
131+
132+
mGoogleApiClient.connect();
133+
}
134+
135+
public void onStop() {
136+
mGoogleApiClient.disconnect();
137+
138+
}
139+
140+
}

0 commit comments

Comments
 (0)