안녕하세요. 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;
}