Класс Android LocationClient устарел, но используется в документации

Если мы рассмотрим документацию LocationClient , мы увидим, что класс устарел.

Но устаревший класс используется в документации для получения текущего местоположения .

Я думаю, что это немного вводит в заблуждение, или я смотрю на неправильную документацию?

Solutions Collecting From Web of "Класс Android LocationClient устарел, но используется в документации"

Снова Google выпустил новый API, но они не обновили документацию: $ После траты времени, пытаясь понять, как это работает, я получил его, здесь у вас есть полный пример с использованием нового / новейшего API службы местоположения … Наслаждайтесь Развивающийся 🙂

 import android.location.Location; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; 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 Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private final String TAG = "MyAwesomeApp"; private TextView mLocationView; private GoogleApiClient mGoogleApiClient; private LocationRequest mLocationRequest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLocationView = new TextView(this); setContentView(mLocationView); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } @Override protected void onStart() { super.onStart(); // Connect the client. mGoogleApiClient.connect(); } @Override protected void onStop() { // Disconnecting the client invalidates it. mGoogleApiClient.disconnect(); super.onStop(); } @Override public void onConnected(Bundle bundle) { mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setInterval(1000); // Update location every second LocationServices.FusedLocationApi.requestLocationUpdates( mGoogleApiClient, mLocationRequest, this); } @Override public void onConnectionSuspended(int i) { Log.i(TAG, "GoogleApiClient connection has been suspend"); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.i(TAG, "GoogleApiClient connection has failed"); } @Override public void onLocationChanged(Location location) { mLocationView.setText("Location received: " + location.toString()); } } 

И не забудьте добавить эти разрешения в ваш файл AndroidManifest.xml:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

Примечание. Если вам просто нужно получить последнее местоположение (без обновлений), вы можете использовать LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient) из OnConnected

Некоторая документация устарела в Google (некоторые примеры, которые вы упомянули, все еще используют устаревший LocationClient ). Вы должны использовать новый GoogleApiClient, как описано в примерах Службы местоположения:

 private GoogleApiClient mGoogleApiClient; mGoogleApiClient = new GoogleApiClient.Builder(context) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build() 

И когда новый клиент подключен, вы можете использовать плавное местоположение api, например, следующим образом:

 LocationServices.FusedLocationApi.requestLocationUpdates(theNewClient, locationRequest, locationListener); 

Похоже, это было описано в блоге разработчиков . Для LocationClient вы должны использовать это совместно с LocationServices, который затем ведет нас к GeofencingApi .

LocationClient удален. GoogleApiClient – api для использования в API-интерфейсах API Google Play.

Пример кода для общих сценариев находится здесь, и учебные классы были обновлены с более скоростью.

В соответствии с кодом обновления документации ..

 package iwannado.com.myapplicationforsha1key; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Geocoder; import android.location.Location; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.identity.intents.Address; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapView; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import java.io.IOException; import java.util.List; public class MapWithMapViewActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private static final String TAG = MapWithMapViewActivity.class.getCanonicalName(); private GoogleMap mMap = null; private MapView mMapView = null; private EditText loatcationEditText = null; private GoogleApiClient mGoogleApiClient = null; private Location mLocationRequest = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_with_map_view); loatcationEditText = (EditText) findViewById(R.id.loatcation_edit_text); mMapView = (MapView) findViewById(R.id.mapView); /* * The method is used to create mapView * */ mMapView.onCreate(savedInstanceState); /* *The method Return Google map * */ mMapView.getMapAsync(this); gotoCurrentLoactionGooglePlayService(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override public void onLowMemory() { super.onLowMemory(); mMapView.onLowMemory(); } @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); mGoogleApiClient.disconnect(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mMapView.onSaveInstanceState(outState); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; } private void gotoCurrentLoactionGooglePlayService() { /*working with new google api for laction.. http://stackoverflow.com/a/25173057 * */ mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } @Override public void onConnected(@Nullable Bundle bundle) { /* * Follow this documentation.. https://developer.android.com/training/location/retrieve-current.html * * Please add Runtime permission here for android 6 * */ mLocationRequest = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient); if (mLocationRequest != null) { LatLng latLng = new LatLng(mLocationRequest.getLatitude(),mLocationRequest.getLongitude()); mMap.addMarker(new MarkerOptions().position(latLng).title("Programmatically Current Loaction")); mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); Toast.makeText(this,"getLatitude() = "+String.valueOf(mLocationRequest.getLatitude())+"\n getLongitude() = "+String.valueOf(mLocationRequest.getLongitude()),Toast.LENGTH_LONG).show(); } } @Override public void onConnectionSuspended(int i) { Log.i(TAG, "GoogleApiClient connection has been suspend"); } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { Log.i(TAG, "GoogleApiClient connection has failed"); } @Override public void onLocationChanged(Location location) { Toast.makeText(this,"Location received: " + location.toString(),Toast.LENGTH_LONG).show(); } }