我有自己的位置类。我有一个赔率结果,当我使用我的班级搜索 GPS 位置时,我得到 0, 0 回来。
而如果我在 GPS 位置管理器中搜索 getLastKnown 函数,我会得到强制值:
public Location getGPSloc(Context c){
isGPSavailable(c);
if(gps_enabled)
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locationListenerGps);
timerGPS = new Timer();
timerGPS.schedule(new GetLastLocationGPS(), 45000);
return gpsLoc;
}
这是我从函数外部调用的类,我在调用中使用 this.getApplicationContext() 。这是 GetLastLocationGPS():
class GetLastLocationGPS extends TimerTask {
@Override
public void run() {
lm.removeUpdates(locationListenerGps);
if(gps_enabled){
gpsLoc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);}
else{
gpsLoc = null;
}
}
}
这是听众:
LocationListener locationListenerGps = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
timerGPS.cancel();
gpsLoc = location;
lm.removeUpdates(this);
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
当我调用 MyLocationInstance.getGPSloc(this.getApplicationContext()) 时,返回值始终为 0、0。我将强制值 83 43 发送到模拟器,如果我在 LocationManagerInstance.getLastKnownLocation(LM.GPS) ;
我不知道为什么这个方法不会获取位置。
是因为理论上调用发生时计时器仍在运行吗?这是我能想出答案的唯一方法。还有其他想法吗?