Windows Phone GPS Emulator

http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/01/28/windows-phone-gps-emulator.aspx

Windows Phone GPS Emulator

Во все устройства, работающие на платформе Windows Phone 7, встроен Assisted

GPS (aGPS) (http://en.wikipedia.org/wiki/Assisted_GPS), который используется

картами, камерами и поиском (чтобы показывать результаты, ориентированные на

местность, в которой вы находитесь). Доступ разработчиков к информации о

местоположении осуществляется с помощью пространства имён

System.Device.Location, поддерживаемого .NET 4 и более поздними версиями. Класс

GeoCoordinateWatcher

(http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinatewatcher.aspx)

выдаёт информацию о местоположении на основе координат широты и долготы.

Работать с GeoCoordinateWatcher

(http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinatewatcher.aspx)

сравнительно просто. Принципы работы с этим классом и тестирования приложения

на Windows Phone 7 будут разъяснены детально чуть позже. Однако иногда

приложению требуется больше чем просто местоположение, ему требуется

отслеживание движения или тестирование поведение приложения в различных

местах.

Конечно, было бы странно ездить повсюду с телефоном, подключенным к ноутбуку, и

осуществлять отладку приложения.

Не беспокойтесь, решение есть. Windows Phone GPS Emulator (небольшое

WPF-приложение) и одна dll-библиотека WP7 позволят вам производить отладку

приложения в эмуляторе платформы или на настоящем телефоне не покидая свой дом

или офис. После завершения тестирования и отладки вам нужно всего лишь поменять

одну строчку кода, после чего приложение переключается в режим использования

настоящего GPS.

C помощью GPS Emulator вы можете установить на карте местоположение в любой

точке земного шара. Кроме того, вы можете планировать движение по нескольким

точкам или использовать сервисы Bing для расчёта направлений движения между

точками. Вы можете запланировать маршрут, а приложение симулирует передвижение

через заданные точки.

Пакет Windows Phone GPS Emulator:

— Приложение Windows Phone GPS Emulator

— Клиент-эмулятор DLL Windows Phone GPS

— Простой клиент-тестировщик для Windows Phone

— Полное приложение для Windows Phone, использующее карты Bing (более сложный

пример)

GPS Emulator позволяет создавать и воспроизводить сложный путь передвижения,

будто вы на самом деле перемещаетесь по этому пути. Вы выбираете приложение для

Windows Phone и получаете информацию о местоположении из GPS Emulator в таком

виде, в каком поступает информация с настоящего GPS.

http://windowsteamblog.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-53-84-metablogapi/6567.image_5F00_4DFD99C2.png

Использование GPS Emulator в вашем приложении для Windows Phone

Для начала, давайте выясним, как GPS Emulator помогает отлаживать приложение

для Windows Phone?

После того, как вы скачаете (http://create.msdn.com/downloads/?id=710) пакет

Windows Phone GPS Emulator, вы увидите файл GPS Emulator Client. В этом

dll-файле имеется класс GeoCoordinateWatcher, его наименование точно такое же,

как у класса System.Device.Location. GeoCoordinateWatcher, но в другом

пространстве имён. Этот самодельный, «ненастоящий» класс GeoCoordinateWatcher

реализует интерфейс IGeoPositionWatcher, это тот же интерфейс, что и

«настоящий» класс System.Device.Location.GeoPositionWatcher. Поэтому, можно

сказать, что GPSEmulatorClient.GeoCoordinateWatcher реализует тот же API, что и

настоящий System.Device.Location.GeoCoordinateWatcher. Это означает, что оба

класса прозрачны для разработчика при использовании API определения

местоположения. В программу добавлены все функции, которые не были определены в

интерфейсе IGeoPositionWatcher, но имеются в классе

System.Device.Location.GeoCoordinateWatcher. В результате вы можете написать

приложение с использованием GeoCoordinateWatcher и всего лишь изменить процесс

запуска на основе своего оборудования. Вам потребуется добавить указание на

использование GPSEmulatorClient с помощью строки “using GPSEmulatorClient”.

В приложении GPSEmulatorPhoneTestClient необходимо определить символ, используя

ключевое слово #define. Далее, в конструкторе MainPage нужно использовать

строку #if GPS_EMULATOR, что позволяет разделить тестирование приложения и

использование его в реальной жизни; пример кода:

// This line has to be the first line in the file

#define GPS_EMULATOR // defining a compiler GPS symbol.

// Init

IGeoPositionWatcher _Watcher;

#if GPS_EMULATOR

_Watcher = new GpsEmulatorClient.GeoCoordinateWatcher();

#else

_Watcher = new System.Device.Location.GeoCoordinateWatcher();

#endif

Поскольку _Watcher содержится в обоих реализациях IGeoPositionWatcher

— настоящей и ненастоящей — она может быть приведена к

переменной. Начиная с этой точки с помощью метода и свойств

GeoCoordinateWatcher можно наблюдать за изменениями местоположения и статуса.

Использование GeoCoordinateWatcher

Как было сказано, класс GeoCoordinateWatcher является частью пространства имён

System.Device.Location. GeoCoordinateWatcher обладает следующими свойствами:

— DesiredAccuracy содержится в типе GpsCoordinateAccuracy, и может быть Default

или High. Значение High означает, что поступают данные GPS высокой точности,

они предоставляют более точное определение местоположения (до нескольких

метров). В этом случае батарея устройства используется более интенсивно.

Примечание. В одном из конструкторов GeoCoordinateWatcher имеется ввод

GpsPositionAccuracy. По умолчанию установлено значение Default, обозначающее

невысокую точность определения местоположения.

— Permission содержится в типе GeoPositionPermission, эта функция определяет

уровень доступа приложения к устройству. Windows Phone требует, чтобы вы

указали в манифесте приложения, что хотите использовать GPS.

— Position содержится в типе GeoCoordinate, она фиксирует текущее

местоположение, если статус GPS активен.

— Status содержится в типе GpsPositionStatus и указывает, на то, что в GPS

поступают данные.

Существует ещё одна функция, MovementThreshold, она определяет минимальный

уровень интервала движения, и по умолчанию это ноль. Необходимо учитывать, что

GPS передаёт информацию о событиях с частотой примерно раз в секунду. Это

кажется не очень большим объёмом, но если вы двигаетесь не быстро или если

вашему приложению не нужно отслеживать передвижение с высокой точностью,

установите MovementThreshold в значение, отличное от нуля. Подробнее об этом

написано у Джейма Родригеза

(http://blogs.msdn.com/b/jaimer/archive/2010/11/11/geocoordinatewatcher-tips-part1.aspx).

Далее, вам необходимо зарегистрировать следующие события:

— PositionChanged. Случается, когда сервис определяет изменение местоположения

м усётом ограничений, установленных, например, в MovementThreshold

— StatusChanged. Случается, когда статус сервиса меняется с Initializing,

напрмер, в Ready.

Помимо этих событий существуют и другие, и все они отражаются в вашем

приложении. В тестовом примере были просто зафиксированы значения и отображены

на экране, код и картинка ниже.

void watcher_PositionChanged(object sender,

GeoPositionChangedEventArgs e)

{

tbTimeAcquired.Text = e.Position.Timestamp.ToString();

tbLatitude.Text = e.Position.Location.Latitude.ToString();

tbLongtitude.Text = e.Position.Location.Longitude.ToString();

}

Как видно, GeoPositionChangedEventArgs удерживает значение, зафиксированное

событием PositionChanged. В Position из типа класса GeoCoordinates, помимо

прочих свойств, включены значения широты, долготы и времени. В нём могут

содержаться данные VerticalAccuracy, высота, скорость и пр.

Вывод данных в приложение выглядит примерно так:

http://windowsteamblog.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-53-84-metablogapi/8863.image_5F00_201FAB30.png

Синий кружок показывает текущее местоположение, переданное с помощью Windows

Phone GPS Emulator. На картинке вы видите 24-е строение Microsoft — его широта

47,6416, долгота -122,1306.

Несколько правил

— Запускайте GPS Emulator с администраторскими правами; программа откроет канал

WCF, через который приложение для Windows Phone сможет прочесть эмуляцию

местоположения.

— Удостоверьтесь, что GPS Emulator запущен перед тем, как вызывать метод

GPSEmulatorClient.GeoCoordinateWatcherStart. Ни одна из демонстраций

по-настоящему не работает с этим сценарием.

— Для полного доступа ко всем возможностям GPS Emulator вам будет необходимо

создать аккаунт на Bing Maps. Это можно сделать на странице

http://www.bingmapsportal.com.

— Не забудьте удалить символ #define GPS_EMULATOR перед тем, как производить

тестирование на настоящем устройстве.

Windows Phone GPS Emulator – отличное устройство для комфортного домашнего или

офисного тестирования приложений для Windows Phone, использующих в свой работе

GPS. Но не забывайте тестировать свои приложения и на настоящих устройствах,

поскольку информация о местоположении или её отсутствие могут вызывать

непредсказуемые результаты.

Пакет Windows Phone GPS Emulator содержит обширную документацию с примерами и

объяснением принципа работы программы.

Следите за новостями Windows Phone в твиттере http://twitter.com/wp7dev.

Следите за новостями в твиттере Yochay http://twitter.com/yochayk

Вступайте в команду разработчиков.

http://create.msdn.com/en-US/

http://create.msdn.com/en-us/home/getting_started

http://msdn.microsoft.com/en-us/wp7trainingcourse.aspx

Добавить комментарий