gpt4 book ai didi

java - 如何使用 FusedLocationProviderClient 获取手机设备位置

转载 作者:行者123 更新时间:2023-12-02 05:30:43 24 4
gpt4 key购买 nike

当接近传感器被激活时,我使用 FusedLocationProviderClient 来获取设备位置。当用户靠近接近传感器时,程序应该获取设备位置,但它没有获取必要的代码,因为我认为它卡在了 .isSucessful() if 语句中。

private FusedLocationProviderClient mFusedLocationProviderClient;    
private void getDeviceLocation() {
mFusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(this);
try {
if ( ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {
return;
}
} catch (Exception e) {
e.printStackTrace();
}
final Task location = mFusedLocationProviderClient.getLastLocation();
Log.d("Works to here:","here");
location.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if ( task.isSuccessful() ) {
Location currentLocation = (Location) task.getResult();

double lat = currentLocation.getLatitude();
double lon = currentLocation.getLongitude();
Log.d("workes to here:",String.valueOf(lat));

addMarker(lat, lon);
final LatLng sydney = new LatLng(lat, lon);
mapFragment.mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions().position(sydney));
}
});
}

}

});
}

最佳答案

不要使用 getLastLocation。它几乎总是返回 null,因为它找不到该位置,如果该位置已被缓存,它只会返回 1。相反,使用 requestLocationUpdates 来获取可用的回调位置。

关于java - 如何使用 FusedLocationProviderClient 获取手机设备位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com