У меня есть следующий код, который получает текущее местоположение устройства:
public class MapPlace extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener
{
private LocationRequest mLocationRequest;
private GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
// location coordinates
double dLatitude = 0.0;
double dLongitude = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_place);
if (mGoogleApiClient == null || !mGoogleApiClient.isConnected())
{
buildGoogleApiClient();
mGoogleApiClient.connect();
}
MapFragment mapF = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
if (mapF != null)
mapF.getMapAsync(this);
}
protected synchronized void buildGoogleApiClient()
{
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {}
@Override
public void onLocationChanged(Location location)
{
mLastLocation = location;
dLatitude = mLastLocation.getLatitude();
dLongitude = mLastLocation.getLongitude();
}
}
}
Этот код работает нормально, но на некоторых устройствах не работает, чтобы добиться успеха с помощью этого кода, мне нужно перезапустить устройство или закрыть и снова открыть действие, поэтому я хочу избежать этой проблемы.
В качестве рекомендации этого ответ на переполнение стека я попытался перейти на LocationFusedLocation, чтобы решить эту проблему, но столкнулся с некоторыми проблемами при добавлении реализации GooglePlayServicesClient в java. class, потому что эта библиотека временно устарела, как указано в этой ссылке. Так что я могу сделать? Есть ли другой способ сделать это?