GPS 신호를 잘 받고 있다가 건물로 들어가거나 해서
GPS 신호가 끊어 졌음을 알 수 있는 방법은 무엇일까요?
LocationListener 의 onLocation method는
public void onLocationChanged(Location loc)
gps 신호가 잡혔을 때 정상적인 정보만 넘어오며,
gps가 끊어 지면 null 값 조차 올라오지 않습니다.
그리고,
GpsStatus.Listener 에도 gps 신호가 끊어 졌을 때를 아는 방법을 못찾았습니다.
public void onGpsStatusChanged(int event)
{
switch (event)
{
case GpsStatus.GPS_EVENT_STARTED:
// gps를 잡으려고 시도를 시작하는 때, 발생하는 이벤트이다. gps 데이터를 얻었다는 신호가 아니다.
Log.d("GPS", "GPS_EVENT_STARTED");
break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
// 처음으로 실제로 gps data를 받았을 때 실행된다.
Log.d("GPS", "GPS_EVENT_FIRST_FIX");
break;
case GpsStatus.GPS_EVENT_STOPPED :
// gps를 못잡은 상황중에서도 프로그램을 종료하면 이 이벤트가 발생한다.
// GPS를 못잡고 있을 때 상태바에서 GPS 기능을 끌 때도 발생한다.
Log.d("GPS", "GPS_EVENT_STOPPED");
break;
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
// First Fix 이전에도 이후에도 지속으로 나타난다. 어디에 사용할까? gps가 잡혔든 안잡혔든 1초마다 올라옴
//Log.d("GPS", "GPS_EVENT_SATELLITE_STATUS");
break;
default:
break;
}
}
GPS 신호를 받고 있다가 끊어지는 때를 알 수 있는 방법은 무엇일까요?




[자답]
자체적인 API는 존재하지 않으며,
GpsStatus.GPS_EVENT_SATELLITE_STATUS:
스레드에서 LocationListener에서 마지막으로 받은 Location의 시간을 체크하여
처리하는 방법을 사용하여 해결합니다.
GPS 신호가 끊어지면 Location에 null이라도 보내주면 좋겠지만,
GPS 신호가 끊어짐을 알려주는 API가 없는 것이 안타깝네요.
기본적인 API인 것 같은데 말이지요.