使用 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
(以毫秒为单位)参数化您的位置请求
你当然需要mLocationListener
你的 GoogleApiClientmGoogleApiClient
需要的 LocationListener 对象来获取最后一个已知/当前位置和一个 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) {
}
};