इसका उपयोग करने का अनुशंसित तरीका है LocationClient
:
सबसे पहले, स्थान अपडेट अंतराल मूल्यों को परिभाषित करें। अपनी आवश्यकताओं के लिए इसे समायोजित करें।
private static final int MILLISECONDS_PER_SECOND = 1000;
private static final long UPDATE_INTERVAL = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
private static final long FASTEST_INTERVAL = MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
लो अपने Activity
को लागू GooglePlayServicesClient.ConnectionCallbacks
, GooglePlayServicesClient.OnConnectionFailedListener
, और LocationListener
।
public class LocationActivity extends Activity implements
GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationListener {}
फिर, एक की स्थापना LocationClient
में onCreate()
अपने की विधि Activity
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationClient = new LocationClient(this, this, this);
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
}
अपने लिए आवश्यक विधियाँ जोड़ें Activity
; onConnected()
वह विधि है जिसे LocationClient
कनेक्ट होने पर कहा जाता है। onLocationChanged()
वह स्थान है जहाँ आप सबसे अद्यतित स्थान प्राप्त करेंगे।
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.w(TAG, "Location client connection failed");
}
@Override
public void onConnected(Bundle dataBundle) {
Log.d(TAG, "Location client connected");
mLocationClient.requestLocationUpdates(mLocationRequest, this);
}
@Override
public void onDisconnected() {
Log.d(TAG, "Location client disconnected");
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.d(TAG, "Updated Location: " + Double.toString(location.getLatitude()) + "," + Double.toString(location.getLongitude()));
} else {
Log.d(TAG, "Updated location NULL");
}
}
कनेक्ट करना / काटना सुनिश्चित करें, LocationClient
इसलिए यह केवल अतिरिक्त बैटरी का उपयोग कर रहा है जब बिल्कुल आवश्यक हो और इसलिए जीपीएस अनिश्चित काल तक नहीं चलता है। इससे LocationClient
डेटा प्राप्त करने के लिए जुड़ा होना चाहिए।
public void onResume() {
super.onResume();
mLocationClient.connect();
}
public void onStop() {
if (mLocationClient.isConnected()) {
mLocationClient.removeLocationUpdates(this);
}
mLocationClient.disconnect();
super.onStop();
}
उपयोगकर्ता का स्थान प्राप्त करें। पहले प्रयोग करके देखें LocationClient
; यदि वह विफल रहता है, तो वापस गिरो LocationManager
।
public Location getLocation() {
if (mLocationClient != null && mLocationClient.isConnected()) {
return mLocationClient.getLastLocation();
} else {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null) {
Location lastKnownLocationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocationGPS != null) {
return lastKnownLocationGPS;
} else {
return locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
} else {
return null;
}
}
}