forked from hussien89aa/AndroidTutorialForBeginners
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGoogleApiClient.java
More file actions
Latest commit
140 lines (101 loc) · 3.98 KB
/
Copy pathGoogleApiClient.java
File metadata and controls
140 lines (101 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
publicclassMyLocationListener
implementsGoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener
{
privatefinalStringTAG = "LOC_RECURRING_SAMPLE";
// Constants that define how often location updates will be delivered
privatefinallongLOC_UPDATE_INTERVAL = 10000; // 10s in milliseconds
privatefinallongLOC_FASTEST_UPDATE = 5000; // 5s in milliseconds
protectedGoogleApiClientmGoogleApiClient;
protectedLocationRequestmLocRequest;
publicLocationmCurLocation;
Contextcontext;
publicMyLocationListener( Contextcontext) {
this.context=context;
mCurLocation = null;
// build the Play Services client object
mGoogleApiClient = newGoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mLocRequest=newLocationRequest();
mLocRequest.setInterval(LOC_UPDATE_INTERVAL);
mLocRequest.setFastestInterval(LOC_FASTEST_UPDATE);
mLocRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
// TODO: create the LocationRequest we'll use for location updates
onStart();
}
publicvoidstartLocationUpdates() {
// TODO: start the location updates
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient,mLocRequest,this);
}
publicvoidstopLocationUpdates() {
// TODO: stop the updates
LocationServices.FusedLocationApi.removeLocationUpdates(
mGoogleApiClient, this);
}
protectedvoidupdateUI() {
// take the lat and long of the current location object and add it to the list
if (mCurLocation != null) {
Stringlat = String.format("Lat: %f\n", mCurLocation.getLatitude());
Stringlon = String.format("Lon: %f\n", mCurLocation.getLongitude());
}
}
protectedvoidinitializeUI() {
// start by getting the last known location as a starting point
if (mCurLocation == null) {
mCurLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
updateUI();
}
}
/**
* Called to handle the button clicks in the view
*/
publicvoidonClick(intid ) {
switch (id){
case1:
startLocationUpdates();
break;
case0:
stopLocationUpdates();
break;
}
}
/**
* Called by Play Services when the user's location changes
*/
@Override
publicvoidonLocationChanged(Locationloc) {
mCurLocation = loc;
LocationService.location=loc;
updateUI();
}
/**
* Google Play Services Lifecycle methods
*/
@Override
publicvoidonConnected(BundleconnectionHint) {
initializeUI();
startLocationUpdates();
}
@Override
publicvoidonConnectionFailed(ConnectionResultresult) {
Log.d(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode());
}
@Override
publicvoidonConnectionSuspended(intcause) {
Log.d(TAG, "Connection was suspended for some reason");
mGoogleApiClient.connect();
}
/**
* Activity lifecycle events
*/
publicvoidonStart() {
mGoogleApiClient.connect();
}
publicvoidonStop() {
mGoogleApiClient.disconnect();
}
}