내 위치 클래스가 있습니다. 나는 내 클래스를 사용하여 GPS 위치를 검색 할 때 0, 0을 얻는다는 확률 결과가 있습니다.Android 위치가 반환되지 않음 맞춤 클래스에서 위치
내가 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를 사용하고()를 누르십시오. 내가 있고, 내가 MyLocationInstance.getGPSloc를 호출 할 때
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) {}
};
이 (this.getApplicationContext()) 반환 값이 항상 0입니다 0 : 여기에
class GetLastLocationGPS extends TimerTask {
@Override
public void run() {
lm.removeUpdates(locationListenerGps);
if(gps_enabled){
gpsLoc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);}
else{
gpsLoc = null;
}
}
}
청취자입니다 :이 GetLastLocationGPS()이다 에뮬레이터로 보낸 83 43의 강제 값으로, LocationManagerInstance.getLastKnownLocation (LM.GPS)에 하위로 있으면 나타납니다.
이 방법으로 위치를 가져 오지 않는 이유는 알 수 없습니다.
이론상 통화가 발생하면 타이머가 계속 실행되고 있습니까? 그것이 내가 대답을 내놓을 수있는 유일한 방법이다. 다른 아이디어?
업데이트. gpsLoc가 새 위치에 대한 요청이 시작되기 전에 GPS 제공 업체의 getLastKnownLocation으로 정의되도록 코드를 변경했습니다. 마지막으로 알려진 값의 값을 반환합니다. 이제는 GPSLoc가 새로운 위치에 대한 검색을 수행 할 때까지 onCreate 메소드를 계속 유지하기 위해 UI 스레드에 대한 요청을 묶고 싶지만 생각합니다. – user2097211