gpt4 book ai didi

android - 从android类获取位置

转载 作者:行者123 更新时间:2023-11-29 23:35:07 26 4
gpt4 key购买 nike

我正在寻找一个类(class)来获得一个位置来获得纬度和经度。我从 fragment 调用这个类,这得到了最好的提供者并调用了一个方法来获取位置变量。我有这个变量position,但是当我返回变量pos时,position为空;为什么?我传递这个变量?

var pos into 方法没问题,但是当我返回的时候是null。

public class locationmng {
public Context context;
private FusedLocationProviderClient fusedLocationProviderClient;
Location position;


public locationmng(Context c){
context=c;

}

public Location GetLoc() {
if(ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

LocationManager lm = (LocationManager)
context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = lm.getBestProvider(criteria, true);

if (bestProvider.equals(LocationManager.NETWORK_PROVIDER)) {

position = getcoarseposition();

return position;
}

@SuppressLint("MissingPermission")
public Location getcoarseposition() {
final Location[] pos = new Location[1];
fusedLocationProviderClient=
LocationServices.getFusedLocationProviderClient(context);
fusedLocationProviderClient.getLastLocation()
.addOnSuccessListener((Activity) context, new
OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
pos[0] =location;
}else {
Log.i("locmng","not found loc ");
}

}
});

Log.i("locationmanager6894","ho trovato "+ a[0].getLongitude()+ "lat: "+ a[0].getLatitude());

return pos[0];

}

最佳答案

您的位置设置在 OnSuccessListener<Location>() ,它不是立即调用。因此,您设置了一个监听器,但只有在获得您的位置时才会调用它。因此,您需要做的是:执行 GetLoc() 中定义的所有逻辑在你的onSuccess(Location location)听众的方法。

关于android - 从android类获取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52328844/

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