Lumia SensorCore SDK

Доброго всем,

Сегодня мы поговорим о Lumia SensorCore SDK, который предоставляет разработчикам коллекцию инструментов для сбора и обработки информации датчиков движения и местоположения. Эти данные, полезны в первую очередь при разработке фитнес — приложений и приложений, где необходимо обрабатывать информацию о местоположении пользователя.

Основным преимуществом SDK это возможность работы в фоновом режиме, что оптимизирует процесс энергопотребления.

Введение

Использование данного SDK значительно снижает нагрузку на процессор, благодаря чему увеличивается время автономной работы устройства. Достигается это тем, что, пока приложения висят в фоновом режиме, SDK самостоятельно фиксирует данные с датчиков.

Хранение и обработка информации происходит с учетом настроек приватности пользователя. Пользователь самостоятельно принимает решение о подключении\отключении сбора информации о движении и местоположении пользователя, а также об уничтожении уже собранных данных. В процессе сбора информации не используются облачные хранилища сервисов, и все данные хранятся локально.

Для функционирования любого из SensorCore API обе настройки Данные о движении (Motion data) и Местоположение (Location data) должны обязательно быть включены на устройстве. Поэтому при разработке приложений, использующих данный SDK, необходимо предусмотреть сценарии, когда эти настройки могут быть отключены или устройство не поддерживает возможности SensorCore на аппаратном уровне.

Важно отметить, что SensorCore SDK доступен только для устройств нового поколения с операционной системой Windows Phone 8.1, таких как Nokia Lumia: 630, 635, 930, 730, 830, включая Nokia Lumia 1520.

Основные возможности

Lumia SensorCore SDK содержит в себе API для работы со следующими датчиками:

  • Шагомер;
  • Монитор активности;
  • Датчик местоположения;
  • Трекер маршрутов.

SensorCore SDK для всех API поддерживает:

[c language=»#»]

// инциализацию
StepCounter stepCounter = await StepCounter.GetDefaultAsync();

// проверку
if (await StepCounter.IsSupportedAsync()) …

// обработку ошибок
switch (SenseHelper.GetSenseError(failure.HResult))

// методы активации и деактивации для обработки жизненного цикла приложения
stepCounter.ActivateAsync();
stepCounter.DeactivateAsync();
[/c]

Step counter API

Набор инструментов для подсчета шагов, предоставляет информацию о том, сколько шагов совершил пользователь, как долго и каким образом: шагал или бегал.

Различие определяется не только скоростью, но и интенсивностью движения, так что тип движения идентифицируется даже если пользователь бегал и ходил с одинаковой скоростью.

Основные методы:

[c language=»#»]
// чтение
StepCounterReading currentSteps = await stepCounter.GetCurrentReadingAsync();

// получение событий за последний час
IList<StepCounterReading> steps = await
stepCounter.GetStepCountHistoryAsync ( DateTime.Now.AddHours( -1 ), TimeSpan.FromHours( 1 ) );
[/c]

Примером приложения с использованием данных инструментов является «Здоровье и фитнес bing».

Active monitor API

Фиксирует информацию об изменении физической активности пользователя, например определяет, когда прогулка началась и когда она уже завершилась.

Для того чтобы исключить не точные данные предусмотрена небольшая задержка при определении смены типа активности пользователя — в 5-10 секунд.

API позволяет различать следующие типы активностей:

  • Устройство в режиме ожидания (без пользователя);
  • Устройство с пользователем, но пользователь не двигается;
  • Пользователь ходит;
  • Пользователь бегает;
  • Пользователь перемещается, но Active Monitor не может идентифицировать тип движения, в этом случае тип активности классифицируется как Перемещение.

Основные методы:

[c language=»#»]
// чтение текущей активности
ActivityMonitorReading reading = await activityMonitor.GetCurrentReadingAsync();

// регистрация обработчика события <i>ReadingChanged</I>
activityMonitor.ReadingChanged += activityMonitor_ReadingChanged;

// получение активностей
IList<ActivityMonitorReading> activities = await
activityMonitor.GetActivityHistoryAsync( DateTime.Now.AddDays( -1 ), TimeSpan.FromDays( 1 ) );
[/c]

Place monitor API

С помощью этого API можно получить список координат тех мест, в которых пользователь проводил некоторое время: совершал покупки, ужинал или стоял в пробке на дороге. Основная функция этого инструмента идентифицировать места, которые пользователь посещает часто и определять их как известные.

Устройство должно оставаться в одном месте как минимум в течение 10 минут, для того чтобы место было классифицировано, как известное, и было добавлено в список. Одно место, как правило, означает круговую область с радиусом менее 200 метров. Радиус может расти в течение того времени, как пользователь перемещался по этому месту.

Расстояние между любыми двумя известными местами, должно быть более 500 метров. Это означает, что даже если два или более различных мест находятся в радиусе 500 метров друг от друга, Place Monitor API попытается объединить их в одно известное место.

Все известные места определяются классом Place, который имеет следующие атрибуты:

  • ID — уникальный идентификатор места;
  • Kind: известное, дом, работа;
  • Position — географическое положение места;
  • Radius – круговая зона вокруг предполагаемого места.

[c language=»#»]
// получение текущего места
Place place = await placeMonitor.GetCurrentPlaceAsync();

// регистрация обработчика события PlaceChanged
placeMonitor.PlaceChanged += placeMonitor_PlaceChanged;

// получение зафиксированных мест
IList<Place> places = await
placeMonitor.GetPlaceHistoryAsync (DateTime.Now.AddHours( -1 ), TimeSpan.FromHours( 1 )
[/c]

«Дом» и «Работа» определяются по следующим критериям:

  • Как часто устройство перемещалось и как тип активности демонстрировал пользователь;
  • Насколько активно использовалось устройство;
  • Подключался ли телефон к зарядному устройству.

Классификация занимает обычно 2-3 дня. Необходимо отметить, что «Дом» и «Работа» представляют собой только логические ярлыки для этих двух мест. Например, Place Monitor, обнаружит школу как «Работа», если школа посещается в соответствии с критериями, по которым определяется место «Работа».

Если владелец устройства переезжает на новый адрес или меняет работу, Place Monitor обнаружит это в течение 10 дней.

Существуют различные сценарии использования предложенных в API классификаций мест как «Дом» и «Работа», например:

  • Создание в приложениях более значимые UX. Например, приложение навигации может использовать значения этих ярлыков «Дом» для автоматического создания маршрута из дома на работу;
  • Можно так же использовать классификацию «Дом», чтобы создать гео-зону вокруг этого места, а затем использовать эту геозону, чтобы рассчитать, как долго устройство находилось Дома или сколько раз устройство выходило из Дома.
  • Приложение может использовать ‘Дом’, чтобы создать гео-зону вокруг дома и использовать эту гео-зону, чтобы вызвать некоторую функциональность в устройстве. Или приложение может отправить сообщение родителям о том, что их ребенок приехал домой.

Если приложение хочет отслеживать момент входа и выхода устройства из мест «Дом» или «Работа», в приложении необходимо использовать геофенсинг. Используя PlaceMonitor приложение может получить список известных мест Places и с помощью описанных атрибутов класса Place (гео-координат и радиуса) построить гео-зону вокруг этого места.

API спроектирован так, чтобы собирать данные, используя минимальное количество энергии и работая в фоновом режиме. Таким образом, для определения местонахождения устройства логика API использует башни сотовых операторов и точки Wi-Fi доступа.

 

Track Point Monitor API

Track Point Monitor API собирает информацию о перемещении пользователя. Он похож на инструмент Place Monitor API, однако вместо конкретных часто посещаемых мест фиксирует точки маршрута. Для выяснения местоположения устройства Track Point Monitor API так же использует вышки сотовой связи и Wi-Fi точки доступа.

Точки в треке регистрируются с 5-минутными интервалами (API будет ждать 5 минут от последней точки трека, и только потом запишет новую) и только тогда, когда минимальное расстояние между текущей и последней точками трека будет не менее 500 метров. Например, если пользователь остается в течение длительного периода времени в пределах 500 метров, Track Point Monitor запишет только одну точку трека для этой области.

Track Point Monitor API предоставляет следующие параметры класса Place:

  • LengthOfStay — рассказывает, как долго устройство находилось в этом месте.
  • Position — географическое положение точки трека.
  • Radius — расчетный радиус круговой области вокруг места. Точность этого значения зависит от различных факторов, например, как устройство используется и факторы окружения такие, как наличие вышек сотовой связи и Wi-Fi точек доступа.
  • Timestap — время фиксирования точки трека (обеспечивается с точностью в 5 минут).

Заключение

Ну, что хотел — сказал. Если нашли неточность — пишите, поправлю.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *