使用 GoogleApiClient 请求您的位置更新,例如像这样并使用 Toasts 来验证您的实现:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
float LOCATION_REFRESH_DISTANCE = 5000;
long LOCATION_REFRESH_TIME = 0;
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, mlocationListener);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(mLastLocation!=null){
Toast.makeText(getApplicationContext(), "YES! mLastLocation!=null", Toast.LENGTH_SHORT).show();
double latitude = mLastLocation.getLatitude();
double longitude = mLastLocation.getLongitude();
Toast.makeText(getApplicationContext(), "Latitude = " + latitude + "\nLongitude = " + longitude, Toast.LENGTH_SHORT).show();
}
}
在这里,您可以使用变量 LOCATION_REFRESH_DISTANCE 和 LOCATION_REFRESH_TIME(以毫秒为单位)对您的位置请求进行参数化
您当然需要 LocationListener 对象 mLocationListener,您的 GoogleApiClient mGoogleApiClient 需要获取最后一个已知/当前位置和一个 Location 对象(我称之为 mLastLocation)将其存储在哪里。例如:
private Location mLastLocation;
LocationListener mlocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
mLastLocation=location;
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};