gpt4 book ai didi

Android 位置服务不更新 requestLocationUpdates

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:13 24 4
gpt4 key购买 nike

我有一个获取 GPS 坐标的简单类 GPSListener:

public class GPSListener implements LocationListener {  

public static double latitude;
public static double longitude;

@Override
public void onLocationChanged(Location loc)
{
loc.getLatitude();
loc.getLongitude();
latitude = loc.getLatitude();
longitude = loc.getLongitude();
Log.d("GPSLISTENER ", "lat: "+latitude+" long:"+longitude);
} ...

然后尝试在我的 Activity 中使用这个类,我只需在我的 Activity 中的 onCreate() 函数中调用这个类:

LocationManager mlocManager =   (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new GPSListener();

Criteria criteria = new Criteria();
String bestProvider = mlocManager.getBestProvider(criteria, false);
mlocManager.requestLocationUpdates(bestProvider, 0, 0, mlocListener);

mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
lat = GPSListener.latitude;
lon = GPSListener.longitude;
Log.d("GPS", "lat: "+lat+" long:"+lon);
} else {
// TODO: GPS not enabled
Log.d("GPSERROR", "GPS not enabled");
}

但是每当我运行该应用程序时, Activity 中的 latlon 始终为零。我不太确定如何解决这个问题。

记录时:

Log.d("GPSLISTENER ", "lat: "+latitude+"  long:"+longitude);

它返回正确的纬度和经度, Activity 开始后只需一两秒。

Log.d("GPSSUCCESS", "lat: "+lat+"  long:"+lon);

两者都只返回 0.0。我的印象是 .requestLocationUpdates 会在执行 if 语句之前将值传递给 latlon。我怎样才能做到这一点?

最佳答案

您正在为纬度、经度使用公共(public)静态字段。

请将其更改为非静态并使用 setter、getter 和即时对象:

lat = mlocListener.getLatitude();
lon = mlocListener.getLongitude();

关于Android 位置服务不更新 requestLocationUpdates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394812/

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