정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 .NET 위치 API 모범 사례

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

 
참고참고:

Windows Phone 8 에는 위치 인식 앱을 만들 수 있는 새로운 Windows Phone Runtime API가 있습니다. 이 항목의 내용은 Windows Phone OS 7.0 에서 도입되었으며, 계속해서 완전히 지원되는 .NET 위치 API에 적용됩니다. 사용 중인 응용프로그램에 적합한 API에 대한 자세한 내용은 Windows Phone 8의 위치를 참조하세요.

이 항목에는 위치 서비스를 사용하는 Windows Phone 응용프로그램을 만들기 위한 권장 사항이 수록되어 있습니다.

위치 인식 응용프로그램을 만들 때 개발자는 응용프로그램에 정확한 위치 데이터를 제공하는 일과 응용프로그램의 전력 소비를 최소화하는 일의 균형을 유지해야 합니다. 모바일 장치에서 응용프로그램의 이러한 두 가지 요구 사항은 역관계에 있습니다. Wi-Fi 및 셀 방식 무선 전화처럼 정확도가 떨어지는 위치 정보를 생성하는 하드웨어는 일반적으로 보다 정밀한 위치 데이터를 수집할 수 있는 GPS 수신기보다 전력을 적게 소비합니다. 응용프로그램을 설계할 때 따라야 할 두 가지 기본 규칙이 있습니다.

  • 응용프로그램에 높은 정확도가 절대적으로 필요한 경우가 아니라면 위치 서비스에 낮은 정확도와 전력 소비 최적화 설정을 사용합니다.

  • 위치 서비스는 응용프로그램에 필요할 때만 켜고, 사용을 완료하면 끕니다.

위치 데이터에 적정한 수준의 정확도 선택

위치 서비스는 여러 위치 정보 소스를 사용하지만 이 소스 중 일부를 일정 시간 동안 사용할 수 없는 경우(예: GPS 위성 또는 휴대폰 기지국에 액세스할 수 없는 경우), 네이티브 코드 계층이 사용 가능한 데이터를 평가하고 최적의 소스 집합을 선택하는 작업을 처리합니다. 응용프로그램에서는 높은 정확도 또는 기본값 중에서 선택하고, 전력 소비 최적화 설정을 선택하기만 하면 됩니다. 기본 위치 서비스 클래스인 GeoCoordinateWatcher를 초기화할 때 이 값을 설정할 수 있습니다.

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);

적절한 움직임 임계값 설정

모바일 장치의 GPS 하드웨어에는 안테나가 없기 때문에 일반적으로 센서가 아주 민감하게 디자인됩니다. 이 민감도는 표면 반사에서 소량의 신호 잡음을 유발하고 다른 환경적 영향을 초래할 수 있습니다. 기본 위치 서비스 클래스인 GeoCoordinateWatcherMovementThreshold 속성을 노출합니다. 이 속성은 PositionChanged 이벤트가 발생하기 전에 바뀌어야 하는 최소한의 위치 변경 사항을 지정합니다. MovementThreshold 속성을 아주 낮은 값으로 설정하면 응용프로그램이 실제로 신호 잡음의 결과인 이벤트를 수신하게 할 수 있습니다. 위치가 상당히 변경된 경우에만 나타내도록 신호 민감도를 낮추려면 MovementThreshold 속성을 20미터 이상으로 설정합니다. 이렇게 하면 응용프로그램의 전력 소비도 낮아집니다. 움직임 임계값을 0미터로 설정하면 초당 1회의 빈도로 이벤트가 자주 발생하게 됩니다. 이 설정은 탐색 응용프로그램에 유용할 수 있습니다.

위치 데이터를 사용할 수 없는 경우의 계획

위치 서비스는 여러 소스를 사용하여 단말기의 위치를 확인하지만 위치 데이터를 사용할 수 없는 경우가 있습니다. 응용프로그램은 이 데이터가 없어도 제대로 작동해야 합니다. StatusChanged 이벤트는 위치 서비스의 상태가 변경될 때마다 발생합니다. 응용프로그램에서는 이 이벤트 처리기를 이용해 사용자에게 위치 데이터를 사용할 수 있음을 알리고, 이에 따라 응용프로그램의 동작을 수정할 수 있습니다.

위치 서비스에서 위치 데이터를 가져올 수 있는 경우라 하더라도 첫 번째 판독값을 초기화하고 가져오는 데 일반적으로 15초가 소요되며, 최대 120초가 소요될 수도 있습니다. 응용프로그램은 이 점을 염두에 두고 디자인해야 합니다. 또한 서비스가 시작되기를 기다리는 동안 응용프로그램이 응답할 수 없다면 사용자에게 이를 알려야 합니다. 정확도를 낮게 설정하면 GPS에서 데이터가 반환되기를 기다리지 않으므로, GPS가 아직 활성화되어 있지 않은 경우에 일반적으로 속도가 더 빨라집니다. 다른 응용프로그램에서 GPS를 사용하고 있고 이미 데이터를 가져오는 중이라면 정확도를 높게 설정해 정확도를 낮게 설정했을 때보다 빠르게 데이터를 반환할 수 있습니다.

표시: