안드로이드 위치 제공자-GPS 또는 네트워크 제공자?


128

내 응용 프로그램에서 사용자의 현재 위치를 결정하고 싶습니다. 그러나 이와 관련하여 몇 가지 질문이 있습니다.

  1. 다른 위치 제공자가 있는데, 어느 것이 가장 정확한가요? GPS 제공자 또는 네트워크 제공자 ?

  2. 이용 가능한 제공자가 얼마나 다른가? 그것들은 어떻게 기능합니까?

  3. 내 애플리케이션에서 GPS 기능 구현을 시작하는 방법에 대한 코드 스 니펫 또는 자습서를 제공해 주시겠습니까?


18
다시 열기에 투표-질문이 좋으며 제공된 답변이 유용합니다. Fused Location Provider가 있기 때문에 답변이 오래되었습니다. 질문을 열면 업데이트 될 수 있습니다.
Richard Le Mesurier 2013

답변:


281

안드로이드에는 3 개의 위치 제공자가 있습니다.

그들은:

gps –> (GPS, AGPS) : GPS 위치 제공자의 이름입니다. 이 공급자는 위성을 사용하여 위치를 결정합니다. 조건에 따라이 공급자는 위치 수정을 반환하는 데 시간이 걸릴 수 있습니다. android.permission.ACCESS_FINE_LOCATION 권한이 필요합니다.

네트워크 –> (AGPS, CellID, WiFi MACID) : 네트워크 위치 공급자의 이름입니다. 이 공급자는 셀 타워 및 WiFi 액세스 포인트의 가용성에 따라 위치를 결정합니다. 결과는 네트워크 조회를 통해 검색됩니다. android.permission.ACCESS_COARSE_LOCATION 또는 android.permission.ACCESS_FINE_LOCATION 권한 중 하나가 필요합니다.

수동 –> (CellID, WiFi MACID) : 실제로 위치 수정을 시작하지 않고 위치를 수신하기위한 특수 위치 공급자. 이 공급자는 다른 응용 프로그램이나 서비스가 실제로 위치를 직접 요청하지 않고 요청할 때 위치 업데이트를 수동으로받는 데 사용할 수 있습니다. 이 제공자는 다른 제공자가 생성 한 위치를 반환합니다. GPS가 활성화되어 있지 않으면이 공급자는 대략적인 수정 만 반환 할 수 있지만 android.permission.ACCESS_FINE_LOCATION 권한이 필요합니다. 이것은 안드로이드가 이러한 위치 제공자라고 부르는 것이지만, 이러한 것들을 작동시키는 기본 기술은 특정 하드웨어 및 전화 제공 기능 (네트워크 서비스)에 매핑됩니다.

가장 좋은 방법은 "네트워크"또는 "수동"공급자를 먼저 사용한 다음 "gps"로 대체하고 작업에 따라 공급자간에 전환하는 것입니다. 여기에는 모든 경우가 포함되며 최저 공통 분모 서비스 (최악의 경우)와 훌륭한 서비스 (최상의 경우)가 제공됩니다.

여기에 이미지 설명을 입력하십시오

기사 참조 : Android 위치 제공 업체-GPS, 네트워크, 패시브 작성자 Nazmul Idris

코드 참조 : https://stackoverflow.com/a/3145655/28557

-----------------------최신 정보-----------------------

이제 Android에 Fused 위치 제공 업체가 있습니다.

Fused Location Provider는 기본 위치 기술을 지능적으로 관리하고 필요에 따라 최상의 위치를 ​​제공합니다. 앱이 정확성을 높이고 전력 소비를 줄이면서 사용자의 현재 위치를 얻는 방법을 단순화합니다.

융합 된 위치 제공자는 위치를 가져 오는 세 가지 방법을 제공합니다.

  1. 마지막 위치 : 현재 위치를 한 번 알고 싶을 때 사용합니다.
  2. 리스너를 사용한 위치 요청 : 응용 프로그램이 화면 / 프런트 엔드에 있고 계속 위치를 요구할 때 사용합니다.
  3. 보류 의도를 사용하여 위치 요청 : 백그라운드에서 응용 프로그램을 사용하고 계속 위치를 요구할 때 사용합니다.

참고 문헌 :

공식 사이트 : http://developer.android.com/google/play-services/location.html

융합 된 위치 제공자 예 : GIT : https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------


2
Google Play Services Fused Locator 제공자도 사용할 수 있습니다.
Richard Le Mesurier 2013

나만의 맞춤 위치 제공 업체를 만들 수 있습니까? android.permission.INSTALL_LOCATION_PROVIDER에 서명했거나 시스템을 의미하므로 루팅 된 기기에 설치할 수 있어야합니다. 아니요?
JohnyTex

1
통합 위치 제공자는 API> = 19에서만 사용할 수 있습니다. 이전 버전을 실행하는 기기의 경우에도 이전 절차를 따라야합니까?
Shobhit Puri

GPS가 위치를 가져 오지 못하면 GPS 위치를 찾고 네트워크 제공자에게 폴백하는 샘플 코드 / 기존 API가 있습니까? 또는 타이머 논리에 의해 코드에서 처리되어야합니까?
jrhamza

수동 공급자 "" "이 공급자는 다른 응용 프로그램이나 서비스가 실제로 위치를 직접 요청하지 않고 요청하면 위치 업데이트를 수동으로받는 데 사용할 수 있습니다." ""
nurisezgin

7

GPS는 일반적으로 네트워크보다 정확하지만 GPS를 사용할 수없는 경우가 있으므로 둘 사이를 전환해야 할 수도 있습니다.

좋은 출발은 android dev 사이트를 보는 것입니다. 여기에는 사용자 위치 결정 전용 섹션이 있으며 필요한 모든 코드 샘플이 있습니다.

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


@Noman 당신은 당신의 위치 경도와 위도를 원하십니까?
Nikunj Patel

@ Scorpio 나는 실제로 NETWORK PROViDER & GPS PROVIDER 중 어떤 옵션이 더 나은지 알고 싶었습니다. . .Otra 나에게 많은 도움을 준 내 질문에 대한 답변으로 링크를 보내주십시오 ... 지금은 내 응용 프로그램에서 NETWORK PROVIDER를 사용하고 있습니다 :-)
Noman

3

여기에 언급 된 훌륭한 답변이 있습니다. 또 다른 접근 방식은 Atooma, tranql 및 Neura와 같이 온라인으로 제공되는 무료 SDK를 사용하여 Android 응용 프로그램과 통합 할 수 있습니다 (통합하는 데 20 분 미만 소요). 사용자의 정확한 위치를 제공함과 동시에 사용자의 활동에 대한 통찰력을 제공 할 수 있습니다. 또한 일부는 배터리의 1 % 미만을 소비합니다.


1
언급 한 SDK에 대한 참조를 얻을 수 있습니까?
Kishore Relangi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.