안녕하세요. GPS에 대해 좀 아시는 분께 도움을 받고자 합니다.

아직은 공부차원에서 개인적으로 자전거를 타고 다녀서 GPS를 이용한 속도계를 좀 만들어 보고 있는데요.


GPS가 연결되었는데 onLocationChanged 요게 간헐적으로 발생해서 속도가 나오다 안나오다 합니다.

(GPS연결되었는지 확인하면 연결된것을 확인함.)


request는 m_lm.requestLocationUpdates(m_provider, 1000, 0, (LocationListener)this);

이와 같이 했구요.


1. 테스트 장소 : 실외

2. 동작 : request listener로 속도를 받으면 별도의 쓰레드(1초주기)에서 speed 값을  TextView에 나타냄.


동작을 안하는것도 아니고 했다 안했다 하니..

무엇이 문제일까요??


핸드폰이 문제인지...


Criterria 설정은 이렇게했습니다.

private String configGPS()

  {

        Criteria criteria = new Criteria();

        criteria.setAccuracy(Criteria.ACCURACY_FINE);//위도와 경도에 대해 원하는 정확도를 나타냅니다.

        criteria.setAltitudeRequired(false);//공급자가 고도 정보를 제공해야하는지 여부(등산관련 앱일 경우 true)

        criteria.setBearingRequired(true);//공급자가 방향 정보를 제공해야하는지 여부(네비 앱일 경우 true)

        criteria.setCostAllowed(true);//공급자가 금전적 비용을 부과 할 수 있는지 여부를 나타냅니다.

criteria.setSpeedRequired(true);//속도 정보 제공 여부 설정(네비같이 속도가 필요한 앱일 경우 true)

        criteria.setPowerRequirement(Criteria.POWER_HIGH);//원하는 최대 전력 수준을 나타냅니다.

        String provider = null;  

        provider = m_lm.getBestProvider(criteria, true);   

        LocationProvider lProvider = m_lm.getProvider(provider);

        provider = lProvider.getName();

        if (provider == null) {          

            //GPS제공자가 없으면 기지국에서라도 Location 정보 얻어옴.

            Toast.makeText(m_Context, "nothing GPS provider", 2000).show();   

            provider = LocationManager.NETWORK_PROVIDER;  

        }

        return provider;

  }