【发布时间】:2018-08-01 08:04:40
【问题描述】:
我在 android 中使用 FusedLocationProviderClient 类来获取用户的最后位置。一切都很好,我可以得到纬度和经度,但 task.getResult().getBearing() 返回 0.0 和 task.getResult().hasBearing() 返回 false。如何获取用户的方位信息?
我在 AndroidManifest 文件和运行时都获得了 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限。
这是与我正在使用的用户位置相关的代码:
@SuppressLint("MissingPermission")
private void getLastLocation() {
fusedLocationClient
.getLastLocation()
.addOnCompleteListener(this, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if (task.isSuccessful() && task.getResult() != null) {
onLocationChange(task.getResult());
Log.i(TAG, "lat " + task.getResult().getLatitude() + " lng " + task.getResult().getLongitude());
Log.i(TAG, "bearing? " + task.getResult().hasBearing());
} else {
Toast.makeText(MainActivity.this, "Location Not Found!", Toast.LENGTH_SHORT).show();
}
}
});
}
private void onLocationChange(Location location) {
//do something
}
【问题讨论】:
-
你能告诉我们你是如何构造
LocationRequest(哪些标志和参数)的吗? -
@ArsenyLevin 我只是在我的
fusedLocationClient上打电话给getLastLocation。我更改了代码并将 interval 、 fastestInterval 和 periority 参数添加到LocationRequest但仍然hasBearing()返回 false。
标签: android location fusedlocationproviderclient