我有一个简单的类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
我怎样才能做到这一点?