2012-03-19 3 views
2

현재 타이머를 사용하여 위치 수신기가 시간 초과되었는지 확인하고 있습니까? 문제는 GPS가 계속 켜져 있다는 것입니다. 나는 이유를 알지 못한다. locationListener가 시간 초과되거나 더 우아한 메소드를 오버라이드 할 수있는 메소드가 있는가?LocationListener timeout

+0

"위치 수신기가 시간 초과"무엇인가? 그들이 합리적인 시간 내에 불리지 않을 때? – zapl

+0

예 ... 실제 위치를 확인할 수없는 경우 – opc0de

+0

문제가 명확하지 않습니다. 확실히 해 . –

답변

1

위치 관리자에 GPS 상태 수신기를 추가하는 것이 좋습니다. 상태 수신기는 GPS가 시작, 정지, 첫 번째 픽스 또는 위성 상태 (눈에 보이는 인공위성 수, 수정 사항이 4 개 이상 필요)가 변경되면 알려줍니다.

리스너는 다음과 같이 보일 수 있습니다 : 다음과 같이

class GpsStatusListener implements GpsStatus.Listener { 

    @Override 
    public void onGpsStatusChanged(final int event) { 
     switch(event) { 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_STOPPED: 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_FIRST_FIX: 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_SATELLITE_STATUS: 
         // ... 
      break; 
     } 
    } 
} 

이 그것은 추가됩니다

lm.addGpsStatusListener(new GpsStatusListener()); 

당신은 때 GPS 상태가 변경 위치 수신기를 제거 할 필요가 없습니다.

당신은 또한 다음과 같은 방법 중 하나를 재정 의하여 위치 관리자에서 추가 정보를 얻을 수 있습니다 :

public void onStatusChanged(final String provider, final int status, final Bundle extras) { 
    switch(status) { 
    case LocationProvider.AVAILABLE: 
       // ... 
     break; 
    case LocationProvider.OUT_OF_SERVICE: 
       // ... 
     break; 
    case LocationProvider.TEMPORARILY_UNAVAILABLE: 
       // ... 
     break; 
    } 
} 

@Override 
public void onProviderEnabled(final String provider) { 
       // ... 
} 

@Override 
public void onProviderDisabled(final String provider) { 
       // ... 
} 
+0

케이스를 정확히 얻을 수있는 경우 : case LocationProvider.AVAILABLE, case LocationProvider.OUT_OF_SERVICE, case LocationProvider.TEMPORARILY_UNAVAILABLE 내가 문제를 해결하는 데 도움이 될 수 있으므로 http://stackoverflow.com/questions/15747543/locationlistener-of- network-provider-is-enabled-but-onlocationchanged-is-never –

+0

각 사례를 기록하고 LocationListener (NETWORK_PROVIDER)의 onStatusChanged에 각 사례에 대한 보고서를 생성합니다. 그러나 이는 하드웨어에 따라 달라질 수 있습니다. –

+0

GPS가 위성을 더 이상 볼 수없는 경우 (예 : 건물에 들어갈 때) 일시적으로 사용할 수없는 신호를받는 경우가 있습니다. 나는 아직 서비스 신호를 보지 못했다. – Stefan

0

시간 초과가 발생하거나 현재 위치가있는 경우 위치 수신기를 제거해야합니다.