Датчики - uwp app developer, microsoft docs
В цій статті
Датчики дозволяють додатком отримати інформацію про взаємодію пристрою з фізичним світом, який його оточує. Датчики можуть повідомити додатком про напрямок руху, положення в просторі і перемістили пристрій. Датчики допоможуть вам зробити гру, додаток доповненої реальності або додаток загального призначення більш зручними і інтерактивними. Вони надають унікальну форму введення, наприклад використовують руху пристрою для впорядкування символів на екрані або для імітації знаходження в кабіні пілота (при цьому пристрій виконує функції штурвала).
Як правило, спочатку необхідно вирішити, чи буде додаток будуватися виключно на використанні датчиків або датчики будуть виконувати тільки функції допоміжного механізму управління. Наприклад, в симуляторі водіння, в якому пристрій використовується в якості віртуального рульового колеса, грою можна було б також керувати за допомогою екранного графічного інтерфейсу - в цьому випадку додаток працює незалежно від наявності датчиків в системі. З іншого боку, похилий лабіринт можна створити тільки для систем, що мають відповідні датчики. Вам потрібно прийняти стратегічне рішення, тобто визначити, чи буде програма повністю залежати від датчиків. Врахуйте, що схема управління за допомогою миші або торкань забезпечує кращий контроль, але не дає відчуття повної заглибленості в гру.
One dev minute - огляд датчиків
Датчикам пристрої, які працюють на основі магнітометра (компас, датчик нахилу і датчик орієнтації), може знадобитися калібрування через вплив на них факторів навколишнього середовища. Перерахування MagnetometerAccuracy може допомогти визначити необхідні дії, коли пристрій вимагає калібрування.
Дані датчиків класів OrientationSensor визначаються їх опорними осями. Ці осі визначаються альбомної орієнтації пристрою і повертаються разом з ним.
Навчитеся використовувати акселерометр для реагування на рухи користувача.
Дізнайтеся, як за допомогою компаса можна визначити поточний напрямок руху.
Дізнайтеся, як використовувати гірометри для відстеження змін в рухах користувача.
Дізнайтеся, як використовувати інклінометр для визначення поворотів щодо поперечної, поздовжньої і вертикальної осей.
Дізнайтеся, як використовувати датчик освітленості, щоб виявляти зміни рівня освітленості.
Дізнайтеся, як використовувати датчики положення в просторі для визначення орієнтації пристрою.
Пакетна обробка датчика
Деякі датчики підтримують пакетну обробку. Це залежить від окремого доступного датчика. Коли датчик реалізує пакетну обробку, він збирає кілька точок даних за певний інтервал часу, а потім передає всі ці дані одночасно. Цей принцип роботи відрізняється від звичайного поведінки, коли датчик повідомляє результати, як тільки виконає зчитування. Розглянемо наступну схему, в якій показано, як дані збираються і доставляються: спочатку при звичайній доставці, а потім при пакетної.

Головна перевага пакетної обробки датчика - збільшення часу роботи батареї. Якщо дані не відправляються відразу, економиться харчування процесора і відпадає необхідність негайної обробки даних. Компоненти системи можуть перебувати в сплячому режимі до тих пір, поки вони не знадобляться, що забезпечує суттєве енергозбереження.
Ви можете впливати на те, як часто датчик відправляє пакети, регулюючи затримку. Наприклад, датчик Акселерометр має властивість ReportLatency. Якщо для програми встановлено це властивість, датчик буде відправляти дані відразу після завершення вказаного часу. Ви можете управляти об'ємом даних, що накопичуються за цю затримку, встановивши властивість ReportInterval.
Є кілька попереджень щодо установки затримки, які необхідно пам'ятати. По-перше, кожен датчик має властивість MaxBatchSize. яке він може підтримувати в залежності від самого датчика. Це число подій, які датчик може кешувати, перш ніж він буде змушений їх відправити. Якщо помножити MaxBatchSize на ReportInterval. буде визначено максимальне значення ReportLatency. Якщо вказати значення вище цього, буде використовуватися максимальна затримка, щоб уникнути втрати даних. Крім того, потрібну затримку можна встановити для декількох додатків окремо. Для відповідності вимогам всіх додатків буде використовуватися найкоротший період затримки. У зв'язку з перерахованими вище фактами затримка, яку ви встановили в додатку, може не відповідати спостерігається затримки.
Якщо датчик використовує пакетне створення звітів, в результаті виклику GetCurrentReading буде видалений поточний пакет даних і запущений новий період затримки.
акселерометр
Датчик Акселерометр вимірює величину прискорення сили тяжіння по осях X, Y і Z для пристрою і ідеально підходить для простих додатків, заснованих на рухах. Зверніть увагу, що величина "прискорення сили тяжіння" включає прискорення під дією сили тяжіння. Якщо Ви знаходитесь в орієнтації SimpleOrientation в стані FaceUp на поверхні столу, то показання акселерометра по осі Z дорівнюватиме -1 G. Таким чином акселерометр не обов'язково вимірює тільки прискорення за координатами, тобто темп зміни швидкості. При використанні акселерометра необхідно розуміти різницю між вектором прискорення сили тяжіння (тяжіння) і вектором лінійного прискорення (рух). Зверніть увагу, що для нерухомого пристрою вектор прискорення сили тяжіння слід привести до 1.
На наступних схемах показані:
- V1 = Вектор 1 = сила під дією земного тяжіння
- V2 = Вектор 2 = вісь -Z корпусу пристрою (спрямована назовні від задньої поверхні)
- Θi = Кут нахилу = кут між віссю -Z корпусу пристрою і вектором прискорення сили тяжіння


Приклад програми, що використовує акселерометр - гра, в якій кулька на екрані перекочується в сторону, в яку нахиляється пристрій (вектор прискорення сили тяжіння). Такий принцип роботи дуже нагадує функціональність датчика Инклинометр. Дія може виконуватися за допомогою цього датчика з використанням комбінації поворотів по осі X і по осі Y. Використання вектора прискорення сили тяжіння акселерометра полегшує завдання, оскільки надає простий математично керований вектор для нахилу пристрою. Ще один приклад - програма, яка видає звук удару батогом, коли користувач різко струшує пристрій (лінійний вектор прискорення).
датчик дії
Датчик дії визначає поточний стан підключеного до нього пристрою. Цей датчик часто використовуються в додатках для занять фітнесом, які визначають, коли користувач біжить або йде з пристроєм. Список можливих дій, які можуть бути виявлені за допомогою API цього датчика, див. Розділ ActivityType.
висотометр
Датчик висотометр повертає значення, яке вказує висоту датчика. Цей датчик дозволяє відстежувати зміни висоти в метрах над рівнем моря. Прикладом програми, що могло б скористатися цією функцією, може послужити додаток для занять бігом, яке відстежує зміни висоти під час бігу для розрахунку спалених калорій. У цьому випадку дані цього датчика можуть бути об'єднані з показаннями датчика дії для підвищення точності відслідковуються даних.
Барометр дозволяє додатку отримувати барометричні свідчення. Ці дані можуть використовуватися погодних додатком для визначення поточного атмосферного тиску. Цей датчик можна використовувати і для отримання більш докладної інформації, наприклад прогнозу погоди.

Датчик компаса зазвичай використовується в додатках, в яких відображається роза вітрів або виконується навігація по карті.
Гірометри вимірює кутову швидкість по осях X, Y і Z. Його функції можна використовувати в простих додатках на основі рухів, принцип дії яких заснований не на визначенні положення пристрою в просторі, а на його обертанні з різною швидкістю. Дані гірометра можуть спотворюватися при зашумленности даних або при постійному зміщенні по одній або декількох осях. Необхідно запросити дані акселерометра, щоб перевірити, чи знаходиться пристрій в русі, і визначити, спотворюються дані гірометра в результаті зсуву, а потім внести поправку в додатку.

Приклад програми, що використовує гірометри - гра, в якій колесо рулетки приводиться в рух різким обертанням пристрою.
Инклинометр
Датчик Инклинометр визначає кут повороту пристрою по осях X, Y і Z і найкраще підходить для додатків, які використовують дані про місце перебування в просторі. Значення кутів повороту по осях X і Y визначаються по вектору прискорення сили тяжіння акселерометра і даними гірометра. Значення повороту по осі Z встановлюється за даними магнитометра і гірометра (як напрямок по компасу). Інклінометри надають розширені дані про місце перебування в просторі зрозумілим способом. Якщо вам потрібні дані про місце перебування в просторі, але не потрібно обробка даних датчиків, використовуйте інклінометри.

Датчики інклінометров можуть використовуватися додатками, які змінюють своє уявлення залежно від орієнтації пристрою. Додаток, який відображає на екрані пристрою літак, вид якого змінюється відповідно до поворотом пристрою по трьох осях, буде також використовувати показання інклінометра.
Датчик світла
Датчик світла може визначати ступінь зовнішньої освітленості. Він дозволяє з додатком відстежувати зміни умов освітленості, в яких знаходиться пристрій. Наприклад, користувач може вийти з планшетом з приміщення на вулицю в сонячний день. Інтелектуальне додаток може використовувати отримане від датчика значення для збільшення контрастності між фоном і відображуваним шрифтом. Завдяки цьому вміст на екрані чітко видно не тільки в приміщенні, але і при більш яскравому денному світлі.
Датчик положення в просторі
Положення пристрою в просторі виражається через кватерніон і матрицю перетворення повороту. Датчик положення в просторі з високою точністю визначає розташування пристрою в просторі щодо абсолютного напрямки. Дані датчика положення в просторі є похідними даними датчиків акселерометра, гірометра і магнітометри. Значення датчиків інклінометра і компаса можуть бути отримані з значень кватерниона. Кватерніони і матриці перетворення повороту добре підходять для складних математичних перетворень і часто використовуються в графічному програмуванні. Для додатків, в яких використовуються складні перетворення, слід вибирати датчики положення в просторі, так як багато перетворення ґрунтуються на кватерніонів і матрицях перетворення повороту.

Датчики положення в просторі часто використовуються в додатках доповненої реальності, які виконують накладення цифрових даних на зображення навколишніх предметів в напрямку, на яке вказує задня поверхня пристрою.
Датчик Крокомір відстежує кількість кроків, зроблених користувачем з підключеним пристроєм. Датчик відстежує кількість кроків за певний період часу. Деякі додатки для занять фітнесом відстежують кількість зроблених кроків, щоб допомогти користувачеві в постановці і досягненні різних цілей. Потім ці дані можуть збиратися і зберігатися, щоб відображати прогрес з плином часу.
безконтактний датчик
Безконтактний датчик може використовуватися для визначення близькості об'єктів. Крім визначення знаходження об'єкта в зоні дії пристрою, безконтактний датчик також можете вказати відстань до виявленого об'єкту. Наприклад, ця функція може використовуватися додатком, яке повинно вийти з режиму сну при появі користувача в межах певного діапазону. Пристрій може перебувати в енергозберігаючому режимі сну, поки безконтактний датчик не виявить об'єкт. Після цього пристрій може увійти в більш активний стан.
Датчик простого положення в просторі
Датчик SimpleOrientationSensor відстежує становище певного пристрою (або його лицьовій або задньої поверхні) в поточному квадраті. Він має шість можливих станів SimpleOrientation (NotRotated. Rotated90. Rotated180. Rotated270. FaceUp і FaceDown).
Додаток для читання, яке змінює зображення на екрані залежно від того, як користувач тримає пристрій - паралельно або перпендикулярно земній поверхні, - буде використовувати значення, отримані від датчика SimpleOrientationSensor, щоб визначити, як саме користувач тримає пристрій.
Приклади, які демонструють використання декількох різних датчиків, див. В розділі Приклади датчиків Windows.