我有一个简单的类GPSListener
,可以获取GPS坐标:
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);
} ...
接下来我会在我的活动中尝试使用这个类,我只需要在我的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");
}
但是当我运行应用程序时,我的活动中的
lat
和lon
总是为零。我不太确定如何解决这个问题。记录日志时:
Log.d("GPSLISTENER ", "lat: "+latitude+" long:"+longitude);
它会在活动开始后一两秒钟内返回正确的纬度和经度。
Log.d("GPSSUCCESS", "lat: "+lat+" long:"+lon);
只返回0.0。我原以为
.requestLocationUpdates
将在执行if语句之前将值传递给lat
和lon
。我该如何实现这一点?