문제

그래서 응용 프로그램에서 GPS 좌표를 한 번만 샘플링하려고합니다. 지속적으로 GPS 업데이트를 얻기 위해 LocationListener 객체를 만들고 싶지 않습니다. 좌표를받을 때까지 기다렸다가 다른 작업으로 진행하고 싶습니다.

코드 스 니펫이 있습니다

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

LOC 변수는 항상 에뮬레이터에서 무효입니다. "Geo Fix Latitude Longitude"명령을 사용하여 설정하려고 시도했으며 DDMS 설정 방법을 사용해 보았습니다. 어느 방법도 코드에 영향을 미치지 않았습니다. 또한 스 니펫은 예외를 일으키지 않습니다.

당신의 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

위치에 대한 업데이트를 요청하는 호출은 차단되지 않으므로 기다리지 않을 것입니다. 또한 에뮬레이터 공급자가 시작되지 않았을 수도 있습니다.

IT의 설정이 GPS 제공 업체를 비활성화하는지 확인할 수있는 수표가있을 수 있습니까? 그런 다음 GEO FIX를 보내십시오.

그러나 위치 청취자를 사용합니다. 추가로 진행하려면 GEO 수정이 필요하기 때문에 귀하의 경우 이상적입니다. Location Listener는 위치가 변경되었을 때 LocationManager로부터 알림을받는 데 사용됩니다. 첫 번째 Geofix 후에 청취자를 등록 할 수 있습니다.

참고 : 현재 위치를 얻는 데 장치에서 시간이 걸릴 수 있으며 장치에서도 NULL을 반환 할 수 있습니다.

다른 팁

사용해보십시오 mylocationOverlay , 그 GPS 위치와 관련하여 필요한 일을하는 런 가능성을 만들고 전달하십시오.

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

그런 다음 MyLocationOverLay의 위치 업데이트를 비활성화합니다.

편집 : 위치가 null 인 이유는 코드가 실행될 때 지오 픽스가 수신되지 않았기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top