Android에서 현재 GPS 위치 가져 오기
-
29-10-2019 - |
문제
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