我对Android应用开发相当陌生,我目前正在寻找使用 Google Play服务检索用户的当前位置(坐标和城市)。截至目前,我没有找到任何明确的分步教程。 任何建议或指导将不胜感激!
答案 0 :(得分:3)
您可以使用Google Play服务库中的fused location provider API来检索设备last known location:
Location lastLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
if (lastLocation != null) {
double latitude = lastLocation.getLatitude();
double longitude = lastLocation.getLongitude();
//Once you get the coordinates, you can retrieve the city name using the Geocoder class:
Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());
List<Address> addresses;
addresses = gcd.getFromLocation(latitude, longitude, 1);
if (addresses != null) {
if (addresses.size() > 0)
String cityName = addresses.get(0).getLocality();
}
}
在你的清单中:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
此处a detailed tutorial为您提供帮助
答案 1 :(得分:0)
这是Google Android文档关于使用 FusedLocationProvider
获取当前位置的内容在大多数情况下,您会对用户的当前位置感兴趣, 通常等于设备的最后已知位置。
您可以使用此方法
public void getCurrentLocation() {
FusedLocationProviderClient locationProviderClient = LocationServices.
getFusedLocationProviderClient(this);
locationProviderClient.getLastLocation()
.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
Log.d("Location",currentLocation.toString());
}
});
}
}
您需要添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
上面的代码是简化版本。如果您的应用程序在Android Lollipop及更高版本上运行,则需要要求Location permission at runtime ALSO 。
您可以看到完整的代码HERE。
答案 2 :(得分:0)
您无需在最新的Google Play服务中连接GoogleApiClient,就可以直接请求位置更新。
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(20 * 1000);
mFusedLocationProviderClient.requestLocationUpdates(locationRequest,locationCallback, Looper.myLooper());
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
}
};