2010-12-29 4 views
2

인사말, 안드로이드 : GPS는

사람이 내가 수정이 나는 수정이있을 때 잘 GPS 좌표하지 않을 때 나는 거친 GPS 좌표를 얻을 수있는 방법을 알고 있나요을 굵은 괜찮에서 폴백?

일부 샘플 코드는 정상적으로 검색하지 못했습니다.

나는이 발견했다 : http://www.android10.org/index.php/articleslocationmaps/226-android-location-providers-gps-network-passive

을하지만/굵은 벌금 업그레이드 할 수있는 대체를 구현하는 방법을 모르겠어요.

누군가 도와 드릴 수 있기를 바랍니다. 미리 감사드립니다.

답변

3

documentation에 대한 훌륭한 소개 자료를 찾을 수 있습니다. 기본 개념은 다른 공급자의 업데이트 수신을 활성화하는 것입니다. 새 위치가 수신되면 이전 저장 위치와 비교합니다 (샘플 기능은 위 링크에서 제공됨).

위치 개체의 정확도를 측정하는 데 사용할 수있는 getAccuracy이 있습니다. 또한 위치 제공 업체가 업데이트를 제공 한 후 얼마나 오래 지났는지 알 수 있도록 타이머를 설정해야합니다. GPS 제공 업체에서 업데이트를받은 후 2 분 이상 지나면 네트워크 업데이트 수신을 시작합니다. 네트워크 업데이트를 수신하는 동안 GPS가 새 업데이트를 제공하면 정확한 위치로 전환합니다.

+0

두 개의 청취자를 구현했습니다 - 하나는 거칠고 다른 하나는 괜찮습니다. 지금 내가 가진 문제는 가장 정확한 결과를 반환하는 방법을 찾는 것입니다. 물론 그 문서의 기능은 내가 찾고있는 것입니다. 감사! – Eamorr

2

아래 코드를 사용하면 마지막으로 알고있는 위치를 알 수 있습니다. 어레이에 대한 위치 제공자와 루프를 거꾸로 가져옵니다. GPS가 네트워크 위치를 얻지 못하면 GPS로 시작합니다. 위치를 알아야 할 때마다이 메소드를 호출 할 수 있습니다.

private double[] getGPS() { 
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

/* Loop over the array backwards, and if you get an accurate location, then break   out the loop*/ 
Location l = null; 

for (int i=providers.size()-1; i>=0; i--) { 
    l = lm.getLastKnownLocation(providers.get(i)); 
    if (l != null) break; 
} 

double[] gps = new double[2]; 
if (l != null) { 
    gps[0] = l.getLatitude(); 
    gps[1] = l.getLongitude(); 
} 
return gps; 
} 
+0

그게 뭡니까?! 그 추락은 원활하게 이루어질 것인가? 그냥 지금 시도해보십시오. 많은 감사합니다, – Eamorr