문제

GPS 기능을 통해 사용자의 현재 위치를 확인하려고합니다.

LocationListener를 구현하는 간단한 클래스 작성 라코 디스

그리고 간단한 작업에서 이러한 경도 및 위도 값에 액세스합니다 라코 디스

그러나 항상 결과로 0.0을 반환합니다. 문제를 파악할 수 없습니다.

도움이 되었습니까?

해결책

위치 업데이트 콜백은 onCreate ()가 반환 될 때까지 실행할 수 없습니다.위도 / 경도 변수를 더미 값으로 초기화하면 해당 값이 인쇄되는 것을 볼 수 있습니다.

onLocationChanged에 로깅을 추가하여 실행되는 것을 확인한 다음 Android 애플리케이션이 콜백 및 UI 업데이트와 관련하여 작동하는 방식에 대해 읽어보세요.

또한 애플리케이션의 매니페스트에 적절한 권한이 있는지 확인하세요.

다른 팁

위치 업데이트는 사실 비동기 입니다. 즉, API는 새 위치를 사용할 수있을 때까지 호출 스레드를 기다리지 않습니다. 대신 새 위치가 계산 될 때마다 호출되는 특정 메서드 ( 콜백 )로 관찰자 객체를 등록합니다.

Android LocationManager API 에서 관찰자는 LocationListener 개체이며 위치 업데이트를위한 기본 콜백은 onLocationChanged ()

여기에이 점을 설명하는 다이어그램이 있습니다 (혼란스럽지 않고 도움이되기를 바랍니다!)

시퀀스 다이어그램

현재 코드에서 :

  • mlocListener를 Activity 하위 클래스의 구성원으로 선언
  • LocationListener 구현에 로그 출력 (Logcat 행) 추가
  • 나머지 코드를 그대로 유지합니다.
  • 매니페스트에 올바른 권한을 추가합니다 ( FINE_LOCATION 는 GPS에 필요) 아직 수행하지 않은 경우
  • 상당히 빠른 GPS 수정 (최대 30 초)을 얻으려면 휴대 전화를 인터넷에 연결하고 창 근처에 두도록합니다.

    그런 다음 앱을 실행하고 logcat에서 어떤 일이 발생하는지 확인합니다. 상태 변경 및 위치 업데이트는 초기 요청 직후에 이루어지지 않으므로 텍스트보기가 항상 (0.0,0.0)으로 표시되는 이유를 설명합니다.

    더보기 : http://developer.android.com/ guide / topics / location / obtaining-user-location.html

mLocListener를 얻은 후-아래와 같이 기준을 설정합니다.

String mlocProvider;
Criteria hdCrit = new Criteria();
hdCrit.setAccuracy(Criteria.ACCURACY_COARSE);
mlocProvider = mlocManager.getBestProvider(hdCrit, true);

그런 다음 getLastKnownLocation 사용

tv.append("\n\nLocations (starting with last known):");
Location currentLocation = mlocManager.getLastKnownLocation(mlocProvider);

매니페스트에 이러한 항목이 있는지 확인하세요.
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"

에뮬레이터를 사용하는 경우-DDMS Perspective에서 에뮬레이터 제어 탭에서 위치 제어를 찾으십시오.그런 다음 수동 탭을 사용하여 경도 및 위도를 설정하고 보내기를 클릭합니다. 프로그램이 실행 중일 때 onLocationchanged에 대한 호출이 표시됩니다.onLocationChanged에 로그인하는 것이 좋습니다.

BTW, requestLocationUpdates의 매개 변수가 "... 0,0 ..."으로 설정되어 있습니다.-배터리가 소모됩니다.-6-8 시간 만에 전화기가 꺼지는 것을 확인했습니다.- "..."로 변경합니다.30000, 100 ... "-첫 번째 매개 변수는 밀리 초 단위이고 다른 매개 변수는 미터 단위입니다.

에뮬레이터에서 확인하면 0.0이됩니다.에뮬레이터에 위치를 전달해야합니다. C : \ android-sdk_r06 \ android-sdk-windows \ tools \ ddms.bat 파일에서 전달할 수 있습니다.

ddms에는 에뮬레이터 컨트롤이라는 탭이 있습니다.거기에서 위치를 에뮬레이터로 전달할 수 있습니다. 이 시도.효과가 있기를 바랍니다.

앱을 만드는 방법

동작으로 현재 위치 좌표 가져 오기 (위치 가져 오기) 위도 / 경도

지도에 표시 할 위치를 웹 서버에 게시합니다. (제출) 이전 위치를 삭제 (Clear Location)하거나 (제출)시 삭제 (0.0.0.0)하는 Clear 버튼

Android에서 현재 GPS 위치 가져 오기 http://developer.android.com/guide/topics/location / obtaining-user-location.html

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