এটি করার প্রস্তাবিত উপায়টি হ'ল 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;
}
}
}