Статьи

Начало работы с Microsoft Band SDK

В октябре 2014 года Microsoft выпустила «Microsoft Band» — смарт-часы / фитнес-группу. Его прием удивил даже Microsoft, которая после подготовки ограниченного количества устройств обнаружила, что спрос намного превышает предложение. Вскоре после этого они выпустили Band SDK, что позволило разработчикам ориентироваться на Band и предоставлять приложения для сопровождения Band или расширения его опыта. Спустя год после своего первого выпуска Band 2 был выпущен, улучшая несколько аспектов устройства и размахивая новым более гладким, изогнутым дизайном.

Microsoft Band 2

Microsoft Band 2 (Изображение предоставлено Microsoft)

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

Band SDK Особенности

Прежде чем мы углубимся в функции SDK, важно понять, что любой код пользователя / SDK будет работать не на самой Band (это похоже на модель, используемую Apple Watch), а на устройстве в паре с Band ,

Устройство может работать на любой платформе, поддерживаемой Band SDK — iOS, Android и Windows (включая приложения Windows 10 и Windows 8.1).

Однако, когда вы используете SDK, он предоставит вам богатую функциональность, включая доступ к данным сенсора, предоставляя пользовательский интерфейс, отображаемый на полосе (известный как «тайлы» и «контент тайлов»), и отправляя уведомления на полосу.

Функции, предлагаемые Microsoft Band SDK, следующие:

  • Мультиплатформенная поддержка
  • Подписка на данные датчика
  • Создание плитки и управление
  • Плитка уведомлений
  • Пользовательские макеты
  • Тактильные уведомления
  • Персонализация темы группы

Ленточные датчики

Как мы упоминали ранее, группа упакована с датчиками. Вот полный список датчиков, предоставленных либо Band / Band 2:

  • Акселерометр — измеряет ускорения по осям X, Y, Z.
  • Гироскоп — Измеряет угловую скорость.
  • Расстояние — измеряет расстояние в сантиметрах, а также показывает текущую скорость.
  • Частота сердечных сокращений измеряет количество ударов в минуту.
  • Шагомер — Измеряет шаги с момента последнего сброса диапазона.
  • Температура кожи — измеряет температуру кожи пользователя в градусах Цельсия.
  • УФ — Измеряет текущую интенсивность воздействия ультрафиолетового излучения.
  • Калории — измеряет общее количество сожженных калорий.
  • Гальваническая реакция кожи * — Обеспечивает сопротивление кожи пользователя.
  • Интервал RR * — обеспечивает интервал между двумя последними непрерывными сердечными сокращениями.
  • Ambient Light * — Обеспечивает текущую интенсивность освещения помещения.
  • Барометр * — показывает текущее давление сырого воздуха.
  • Альтиметр * — Обеспечивает текущую высоту.

* Только Microsoft Band 2.

Более подробную информацию можно найти на странице Microsoft Band Sensors .

В этой статье мы рассмотрим, как мы можем считывать данные датчиков, используя все три основные платформы — iOS, Android и Windows. Во-первых, нам нужно настроить наши приложения на использование SDK.

Загрузите SDK, соответствующий выбранной платформе, на странице платформы Microsoft Band . Если вы хотите создать приложение UWP (универсальная платформа Windows), вы можете использовать Nuget для загрузки и установки SDK в наше приложение с помощью пакета Microsoft Band nuget .

Начнем с iOS.

iOS — Настройка Band SDK Environment

В настоящее время Band SDK поддерживается на iOS 7 и выше. Поддержка iOS Simulator недоступна, поэтому нам нужно протестировать наше приложение на реальном устройстве в паре с Band.

Если мы хотим, чтобы наше приложение поддерживало связь с диапазоном, когда оно работает в фоновом режиме, нам нужно включить «Использовать аксессуары Bluetooth LE» в фоновом режиме. Ради этого урока это не понадобится.

  • Запустите Xcode (версия 6.0 и выше) и создайте новое одностраничное приложение для iPhone. В этой статье будет использоваться Objective-C, но довольно просто перевести пример кода на Swift.
  • Перво-наперво, нам нужно добавить Band SDK в наш проект. В навигаторе проекта щелкните правой кнопкой мыши на названии нашего проекта и выберите «Добавить файлы…» .
  • Найдите и выберите файл инфраструктуры MicrosoftBandKit (откуда вы скачали и извлекли файл SDK) и выберите опцию «Копировать элементы при необходимости» .
  • Выберите «Фазы сборки» под целью проекта. И добавьте CoreBluetooth.framework в «Связывание бинарных файлов с библиотеками» .

Теперь мы готовы начать кодирование.

iOS — подключение к бэнд-устройству

Перейдите к файлу ViewController.m. Добавьте оператор импорта, чтобы получить доступ к SDK Micorsoft Band.

#import <MicrosoftBandKit_iOS/MicrosoftBandKit_iOS.h> 

Давайте добавим делегата к определению ViewController. Через этого делегата мы получим обратные вызовы, когда нам удастся успешно подключиться или отключиться от устройства.

Добавьте следующие обратные вызовы в разделе реализации ViewController:

 @interface ViewController () <MSBClientManagerDelegate> .... @implementation ViewController -(void)clientManager:(MSBClientManager *)cm clientDidConnect:(MSBClient *)client { // handle connected event } -(void)clientManager:(MSBClientManager *)cm clientDidDisconnect:(MSBClient *)client { // handle disconnected event } -(void)clientManager:(MSBClientManager *)cm client:(MSBClient *)client didFailToConnectWithError:(NSError *)error { // handle failure event } 

Позже мы попытаемся соединиться с устройством Band, мы сохраним этот экземпляр в свойстве, чтобы мы могли получить к нему доступ различными способами.

 @interface ViewController () <MSBClientManagerDelegate> @property (nonatomic, weak) MSBClient *client; @end 

В этом руководстве предполагается, что вы, читатель, достаточно хорошо владеете разработкой для iOS, и создание простого пользовательского интерфейса с кнопками и ярлыками вполне в ваших руках. Чтобы сделать это руководство максимально простым, мы не будем вдаваться в подробности о том, как создать пользовательский интерфейс и связать его с экземплярами и действиями на стороне ViewController. Теперь добавьте кнопку и подключите ее к действию с именем init.

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

Как и было обещано, мы настраиваем наш ViewController для уведомлений через делегата при вызове setDelegate .

Затем мы получаем доступ к коллекции attachedClients . Это предоставит нам список всех устройств Band, сопряженных с устройством, на котором запущено это приложение. (Да, к одному устройству может быть подключено несколько полос!) . Ваш код может иметь эвристику / пользовательский интерфейс, чтобы решить, к какому банду подключиться, в этом уроке мы просто возьмем первый.

Наконец, мы инициируем вызов, чтобы попытаться подключиться к этому устройству, вызвав connectClient и передав клиентский экземпляр Band.

 - (IBAction)init:(id)sender { [[MSBClientManager sharedManager] setDelegate:self]; NSArray *attachedClients = [[MSBClientManager sharedManager] attachedClients]; self.client = [attachedClients firstObject]; if (self.client) { [[MSBClientManager sharedManager] connectClient:self.client]; } } 

iOS — Доступ к сенсору

Предполагая, что все прошло хорошо, и нам удалось подключиться к полосе, теперь мы можем перейти к получению доступа к датчику данных. Однако некоторые датчики требуют явного согласия пользователя. В настоящее время только датчики сердечного ритма и RR Interval требуют согласия, но это можно изменить без предупреждения. Рекомендуется проверять согласие всякий раз, когда вам требуется доступ к датчику.

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

Сначала мы проверяем, есть ли у нас согласие пользователя на данный датчик. Как мы упоминали выше, поскольку в этом конкретном примере мы запрашиваем доступ к датчику MSBUserConsentNotSpecified , мы, скорее всего, MSBUserConsentNotSpecified . Нам нужно будет вызвать requestHRUserConsentWithCompletion . На устройстве появится диалоговое окно, в котором пользователь сможет подтвердить доступ нашего приложения к своему сердечному ритму.

Согласие сердечного ритма на iOS

Диалог согласия на iOS

Последовательный вызов этого метода теперь должен дать нам MSBUserConsentGranted или MSBUserConsentDeclined . Ради этого урока предположим, что оптимистический сценарий произошел и пользователь согласился. Теперь мы можем вызвать метод startHeartRateUpdates который мы скоро опишем.

 - (IBAction)getSensor:(id)sender { MSBUserConsent consent = [self.client.sensorManager heartRateUserConsent]; switch (consent) { case MSBUserConsentGranted: // user has granted access [self startHeartRateUpdates]; break; case MSBUserConsentNotSpecified: // request user consent [self.client.sensorManager requestHRUserConsentWithCompletion: ^(BOOL userConsent, NSError *error) { if (userConsent) { // user granted access } else { // user declined access } }]; break; case MSBUserConsentDeclined: // user has declined access break; default: break; } } 

Чтобы получать обновления датчиков, мы будем вызывать startHeartRateUpdatesToQueue . В случае успеха он вызовет параметр обратного вызова (известный в «Objective-C» как «блок») с интервалом, предварительно настроенным для каждого датчика (см. Документацию для получения дополнительной информации об интервале каждого обновления датчика). Внутри блока вы можете свободно обращаться с данными по своему усмотрению. Для целей данного руководства мы будем обновлять пользовательский интерфейс информацией, предоставляемой параметрами обратного вызова. Для каждого звонка мы будем получать значение, представляющее текущие данные датчика, в данном случае, пульс и показатель качества, которые должны помочь нам понять, насколько надежна эта информация. В частности, с частотой сердечных сокращений вы должны сомневаться в достоверности образца, если параметр качества не заблокирован.

 - (void)startHeartRateUpdates { NSError *subscriptionError; [self.client.sensorManager startHeartRateUpdatesToQueue:nil errorRef:&subscriptionError withHandler:^(MSBSensorHeartRateData *heartRateData, NSError *error) { if (error) { // handle error } _heartRateLabel.text = [NSString stringWithFormat:@"Heart Rate: %3u %@", (unsigned int)heartRateData.heartRate, heartRateData.quality == MSBSensorHeartRateQualityAcquiring ? @"Acquiring" : @"Locked"]; }]; if (subscriptionError) { // failed to subscribe } } 

Как только мы закончили доступ к датчику, отписаться от датчика считается хорошим поведением. Эта часть достаточно проста, один вызов stopHeartRateUpdatesErrorRef должен сделать stopHeartRateUpdatesErrorRef дело.

 - (IBAction)stop:(id)sender { [self.client.sensorManager stopHeartRateUpdatesErrorRef:nil]; } 

С помощью нескольких простых строк кода мы показали, как создать приложение для iOS с нуля, подключить Band и получать от него данные о частоте сердечных сокращений.

Поскольку Band SDK является мультиплатформенным, код для Android и Windows похож по своей концепции. Давайте посмотрим на Android.

Android — Настройка Band SDK Environment

В настоящее время Band SDK поддерживается на Android API 17 и выше.

Android SDK использует возможности, предоставляемые приложением Microsoft Health. Для использования SDK на Android требуется наличие приложения Microsoft Health на телефоне. Если на телефоне не установлено приложение Microsoft Health, любые попытки создания клиента Microsoft Band не будут выполнены с ошибкой.

Любое приложение для Android должно предоставлять следующие разрешения в своем AndroidManifest.xml :

 <uses -permission android:name="android.permission.BLUETOOTH"></uses> <uses -permission android:name="com.microsoft.band.service.access.BIND_BAND_SERVICE"></uses> 

Для начала запустите Android Studio (или вашу любимую Android IDE) и создайте базовое приложение для Android.

Нам нужно добавить Band SDK в наш проект. Перейдите в каталог приложения проекта Android и найдите папки libs (вы можете создать его, если он еще не существует), и скопируйте файл microsoft-band- @ version @ .jar в это место.

Щелкните правой кнопкой мыши на модуле приложения (в окне структуры проекта) и выберите «Открыть настройки модуля». Выберите вкладку «Зависимости» и нажмите кнопку «+», чтобы добавить «Зависимость файла». Вы должны увидеть внутри папки libs файл jar, который мы скопировали ранее. Выберите его и нажмите ОК .

Добавьте указанные выше разрешения в AndroidManifest.xml .

Теперь мы готовы начать кодирование.

Android — подключение к музыкальному устройству

Перейдите к файлу Activity и добавьте следующие операторы импорта, чтобы получить доступ к Microsoft Band SDK:

 import com.microsoft.band.BandClient; import com.microsoft.band.BandClientManager; import com.microsoft.band.BandException; import com.microsoft.band.BandInfo; import com.microsoft.band.BandIOException; import com.microsoft.band.ConnectionState; import com.microsoft.band.sensors.BandHeartRateEvent; import com.microsoft.band.sensors.BandHeartRateEventListener; import com.microsoft.band.sensors.HeartRateConsentListener; 

Подключение к группе должно быть сделано через фоновый поток. Мы будем использовать механизм Android AsyncTask . Для этого также добавьте оператор импорта.

 import android.os.AsyncTask; 

Позже мы попробуем подключиться к устройству Band. Мы будем хранить этот экземпляр в приватном члене, чтобы в будущем иметь доступ к нему различными способами.

 private BandClient client = null; 

Теперь давайте добавим класс, наследуемый от AsyncTask .

 private class BandConnectTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { return null; } } 

Как и в разделе iOS, мы предполагаем, что в разработке для Android достаточно бегло, что создание простого пользовательского интерфейса с кнопками и ярлыками вполне в ваших руках. Подробная информация о том, как создать пользовательский интерфейс и связать его с экземплярами и действиями на стороне действия, выходит за рамки этой статьи. Теперь нам нужно добавить кнопку и подключить ее к слушателю. Добавьте его в свое приложение.

Внутри слушателя мы выполним нашу фоновую задачу, отвечающую за подключение к группе:

 btnConnect.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new BandConnectTask().execute(); } 

Давайте реализуем логику подключения. Устройство, на котором запущено это приложение, должно быть сопряжено как минимум с одной полосой (может быть несколько). Этот код подключается к первой полосе, которую он находит, но вы можете предоставить логику, чтобы позволить пользователю выбрать определенную полосу для приложения, если это необходимо. Как только мы получим экземпляр, мы подключимся к нему.

 protected Void doInBackground(Void... params) { BandInfo[] devices = BandClientManager.getInstance().getPairedBands(); client = BandClientManager.getInstance().create(getBaseContext(), devices[0]); try { ConnectionState state = client.connect().await(); if(state == ConnectionState.CONNECTED) { // do work on success } else { // do work on failure } } catch (InterruptedException e) { e.printStackTrace(); } catch (BandException e) { e.printStackTrace(); } return null; } 

Android — доступ к датчику

Предполагая, что все прошло хорошо, и нам удалось подключиться к группе, мы можем приступить к получению доступа к каналу данных датчика. Однако, как и в случае с iOS, некоторые датчики требуют явного согласия пользователя. На данный момент только датчики частоты сердечных сокращений и RR Interval требуют согласия, но это можно изменить без предупреждения. Рекомендуется проверять согласие всякий раз, когда вам требуется доступ к датчику.

Мы предполагаем, что у вас есть еще одна кнопка, которая может вызвать следующий метод, который мы обсудим.

Сначала мы проверяем, есть ли у нас согласие пользователя на данный датчик. Поскольку мы запрашиваем доступ к датчику сердечного ритма, вызывая requestHeartRateConsent , он отображает диалоговое окно для requestHeartRateConsent его согласия пользователем.

Согласие на Android

Согласие на Android

 btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(client.getSensorManager().getCurrentHeartRateConsent() != UserConsent.GRANTED) { client.getSensorManager().requestHeartRateConsent(MainActivity.this, new HeartRateConsentListener() { @Override public void userAccepted(boolean consentGiven) { } }); } } }); 

Предполагая, что пользователь одобрил, мы можем начать получать данные датчика. Вы можете вызвать этот метод, если пользователь дал согласие с помощью метода userAccepted или если текущее состояние userAccepted что пользователь уже дал согласие. Мы вызываем метод registerHeartRateEventListener и передаем ему определенного слушателя, который мы создадим на мгновение.

 private void startRecievingData() { try { client.getSensorManager().registerHeartRateEventListener(heartRateListener); } catch(BandException ex) { } } 

В этом уроке мы создали этот слушатель на MainActivity следующим образом:

 final BandHeartRateEventListener heartRateListener = new BandHeartRateEventListener() { @Override public void onBandHeartRateChanged(final BandHeartRateEvent event) { } }; 

Этого должно быть достаточно для компиляции, но мы хотели бы пройти лишнюю милю и обновить интерфейс. Еще раз, мы предполагаем, что у вас есть TextView в вашем распоряжении (если нет, пожалуйста, добавьте его в свой макет) . Поскольку мы работаем с элементом пользовательского интерфейса, мы должны обрабатывать обновления в потоке пользовательского интерфейса, и поэтому мы будем вызывать метод runOnUI и обновлять пользовательский интерфейс данными, полученными из события.

 final BandHeartRateEventListener heartRateListener = new BandHeartRateEventListener() { @Override public void onBandHeartRateChanged(final BandHeartRateEvent event) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { updateText.setText(String.format("Heart Rate = %d beats per minute\n" + "Quality = %s\n", event.getHeartRate(), event.getQuality())); } }); } }; 

Когда мы закончим доступ к датчику, рекомендуется отказаться от подписки на датчик. Эта часть достаточно проста — один вызов unregisterHeartRateEventListener должен помочь.

 btnStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { client.getSensorManager().unregisterHeartRateEventListener(heartRateListener); } catch(BandIOException ex) { } } }); 

С помощью нескольких простых строк кода мы теперь создали приложение Android с нуля, подключили его к группе и получили от него данные о частоте сердечных сокращений.

Теперь давайте запустим Visual Studio и посмотрим, как Windows обрабатывает тот же сценарий.

Windows — Настройка Band SDK Environment

Все версии Microsoft Band SDK для платформ Windows требуют Visual Studio 2013 или более поздней версии.

Если вы хотите использовать SDK с универсальной платформой Windows, вам также необходимо установить функцию универсальной платформы с помощью установщика Visual Studio.

Если вы хотите использовать SDK с Windows Phone (8.1 и выше), вам также необходимо установить надстройку Windows Phone SDK для Visual Studio.

В этом уроке мы собираемся использовать приложение на платформе Windows 10 Universal. Один и тот же код сможет работать на настольных устройствах Windows Mobile и Windows.

Шаги для создания приложения Windows Universal Platform включают в себя:

  • Создайте пустое приложение Windows (универсальное).
  • Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите «Управление пакетами Nuget…» .
  • Нажмите на поиск и выполните поиск «Microsoft Band».
  • Установите пакет Microsoft.Band в наш проект.
  • Дважды щелкните Package.appxmanifest и отметьте «Bluetooth» и «Proximity» на вкладке возможностей. Это может измениться для более ранних версий платформы Windows, обратитесь к документации Band для получения дополнительной информации.

Теперь мы готовы начать кодирование.

Windows — подключение к групповому устройству

Перейдите к файлу MainPage.xaml.cs . Добавьте следующий оператор использования, чтобы получить доступ к SDK Micorsoft Band.

 using Microsoft.Band; using Microsoft.Band.Sensors; 

Давайте добавим приватное поле для хранения экземпляра клиента Band. Мы сможем получить к нему доступ из различных методов в нашем коде.

 private IBandClient _client; 

В этом руководстве мы предполагаем, что вы понимаете, как добавить кнопки и TextBlocks в пользовательский интерфейс и как сделать их доступными с помощью кода. Для простоты мы воздержимся от использования шаблона MVVM, но следующий код можно легко перевести в команды и свойства, связанные с пользовательским интерфейсом. Band SDK сильно зависит от асинхронного ожидания . Убедитесь, что вы украшаете методы, которые вызывают и ожидают другие методы с ключевым словом "async" .

Используя синглтон BandClientManager , мы получаем доступ ко всем устройствам Band, связанным с устройством, на котором запущено это приложение. В этом уроке мы выбираем первый, но в своем коде вы можете выбрать группу, с которой хотите работать. Когда метод ConnectAsync завершится, у нас должно быть соединение с Band. Если что-то пойдет не так, мы получим исключение.

 private async void ConnectClick(object sender, RoutedEventArgs e) { var pairedBands = await BandClientManager.Instance.GetBandsAsync(); try { _client = await BandClientManager.Instance.ConnectAsync(pairedBands[0]); } catch (BandException ex) { // handle a Band connection exception } } 

Windows — Доступ к датчику

Предполагая, что все прошло хорошо, и нам удалось подключиться к группе, мы можем приступить к получению доступа к каналу данных датчика. Как и в случае с iOS и Android, для некоторых датчиков требуется явное согласие пользователя (датчики частоты сердечных сокращений и интервалов RR), поэтому рекомендуется проверять согласие всякий раз, когда вам требуется доступ к датчику, поскольку датчики, требующие разрешения, могут меняться в любое время. ,

Еще раз, мы предполагаем, что у вас есть другая кнопка в вашем представлении, чтобы иметь возможность вызвать метод, который мы обсудим далее.

Сначала мы проверяем, есть ли у нас согласие пользователя на данный датчик. Поскольку мы запрашиваем доступ к датчику сердечного ритма с помощью RequestUserConsentAsync , он отображает диалоговое окно для подтверждения пользователем с его согласия.

Согласие на сердечный ритм в Windows

Диалог согласия в Windows

 private async void StartClick(object sender, RoutedEventArgs e) { if (_client.SensorManager.HeartRate.GetCurrentUserConsent() != UserConsent.Granted) { // user hasn't consented, request consent var result = await _client.SensorManager.HeartRate.RequestUserConsentAsync(); if (result && _client.SensorManager.HeartRate.GetCurrentUserConsent() == UserConsent.Granted) { StartRecievingData(); } } if (_client.SensorManager.HeartRate.GetCurrentUserConsent() == UserConsent.Granted) { StartRecievingData(); } } 

Предполагая, что пользователь имеет утвержденный доступ, мы можем начать получать данные датчика. Вы можете вызвать этот метод, если пользователь дал согласие через результат RequestUserConsentAsync или если текущее состояние таково, что пользователь уже дал согласие. Мы вызываем метод StartReadingsAsync и подписываемся на событие, которое сработает с интервалом, указанным датчиком:

 private async void StartRecievingData() { _client.SensorManager.HeartRate.ReadingChanged += async (sender, args) => { // do work when the reading changes (ie, update a UI element) }; try { await _client.SensorManager.HeartRate.StartReadingsAsync(); } catch (BandException ex) { // handle a Band connection exception } } 

Теперь мы хотели бы обновить пользовательский интерфейс. Однако нам нужно беспокоиться о другой проблеме — чтобы мы могли обновить пользовательский интерфейс, этот код должен выполняться в потоке пользовательского интерфейса. Механизм для этого заключается в вызове Dispatcher.RunAsync и передаче ему лямбда-выражения, которое, в свою очередь, обязательно выполняется в потоке пользовательского интерфейса. Мы добавляем одну из новых функций C # 6.0 — интерполяцию строк , которая форматирует строку более понятным способом, чем старый способ использования метода String.Format .

 private async void StartRecievingData() { _client.SensorManager.HeartRate.ReadingChanged += async (sender, args) => { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => TextBlock.Text = $"Heart Rate = {args.SensorReading.HeartRate} Quality = {args.SensorReading.Quality}"); }; try { await _client.SensorManager.HeartRate.StartReadingsAsync(); } catch (BandException ex) { // handle a Band connection exception } } 

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

 private async void StopClick(object sender, RoutedEventArgs e) { await _client.SensorManager.HeartRate.StopReadingsAsync(); } 

Теперь наше приложение для Windows может подключаться к Band и получать от него данные о частоте сердечных сокращений.

Завершение

Мы рассмотрели, как начать работу, подключаться и получать реальные данные с устройства Microsoft Band. Группа Microsoft Band оснащена датчиками, которые могут предоставить весь спектр данных для подключенных приложений.

Это не все, что вы можете сделать с Band — отсюда вы можете добавлять свои собственные плитки и соединять их функциональность с помощью кнопок и уникального пользовательского интерфейса. Вы даже можете создавать скины / темы для дальнейшей персонализации группы. SDK полностью кроссплатформенный и поддерживает основные платформы на сегодняшний день — iOS, Android и Windows.

Создание приложений для группы полно возможностей, и мы не можем дождаться, чтобы увидеть, чего вы можете достичь с его помощью!

Спасибо за потраченное время, надеюсь, вам понравился этот урок и он оказался полезным. Если у вас есть мысли или вопросы, пожалуйста, добавьте их ниже.