В современных планшетах, число датчиков достаточно велико. Не удивлюсь, если их будет достаточно чтобы управлять ракетой. WinRT имеет достаточно простой API для работы с датчиками:
- Геолокация
- Акселерометр
- Сенсор Ориентации
- Камера
- Компас
По рассказам старожил разработки, раньше работа с сенсорами в Windows была далеко не самой простой, на настольных ПК и даже на ноутбуках в этом не было ни какого смысла. Сейчас мир меняется, и на современных планшетах с сенсорами можно творить разные «магические» штуки, производя неизгладимое впечатление на пользователя.
В первой статье было про Примеры использования Windows8 SDK. Часть 1. API системы
А в третьей будет про Примеры использования Windows8 SDK. Часть 3. GUI системы
Работа с геолокацией
GeolocationCS
Теперь Вы знаете мои координаты. Они явно получены от Wi-Fi вышек, т.к. GPS в моем ноутбуке точно нет.
Код прост до безобразия: мы создаем объект и просто получаем координаты.
Плюсом в данном случае является то, что пользователь должен явно разрешить приложению отслеживать свое местоположение.
Конфиденциальность личных данных превыше всего!
Так же мы можем подписаться на события изменения координат пользователя или состояния использования геокоординат
Камера
Камера может снимать фото или видео. Разрешение задается программно и зависит от разрешающей способности камеры.
Код выглядит так:
Сначала мы устанавливаем параметры камеры (формат и размер изображения).
Затем мы ждем, когда камера сфотографирует. Фотографирование происходит на эмуляторе по щелчку мыши.
До того, как камера сделает фото (до щелчка мыши), код написанный после
StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);
выполняться не будет.
Как только фотографирование произведено, мы просто отображаем полученное фото.
Так выглядит предварительный просмотр изображения:
Код работы с видео абсолютно идентичен:
По одному щелчку видео начинает записываться, по второму оканчивается. Далее появляется экран preview, как и в случае работы с фото. Мы можем посмотреть полученный кусочек видео.
Использование акселерометра
К сожалению у меня на ноутбуке нет акселерометра (а, может, и к счастью). В симуляторе я не нашел ничего похожего на него, поэтому я не могу показать его работу, но могу показать код работы с ним.
Типичное использование акселерометра – в качестве контроллера для игр, хотя, наверно, его можно использовать не только так.
Мы подписываемся на событие изменения положения устройства в пространстве и получаем значения по 3-м осям.
С учетом того, что датчик достаточно точный (по крайней мере, такой был на wp7), можно сказать, малейшее движение вызовет этот метод.
Сенсор Ориентации
В SDK есть 2 разных примера работы с сенсором ориентации.
Первый сенсор простой, типа «получить ориентацию с точностью до 90 градусов, и лежит ли устройство экраном вверх или вниз». Это интересно, чтобы, например, отображать контент по-разному или когда нужны достаточно грубые значения положения девайса.
Второй сенсор более сложный: он возвращает значения по осям. Его можно использовать в играх.
Компас
Код очень простой и похожий на код акселерометра. Мы подписываемся на изменение расположения устройства относительно направления, и можем получить направление до серевного полюса географического и до северного магнитного полюса.
В самом компасе мы можем установить интервал, через который мы будем снимать показания, узнать минимальный интервал снятия значения.
К сожалению у меня на ноутбуке нет компаса, по этому показывать экран пустой я не стал.
Заключение
В новом WinRT API работа с сенсорами организована крайне просто. По набору датчиков, современный планшет вполне может быть системой наведения ракеты мне кажется… Акселерометр- может быть в качестве гераскопа(гробо конечно, но теоретически можно), компас есть, координаты географические есть, камера для показа оператору есть… В общем прикручиваем к ракете, придумываем как связь организуем и в бой…
Мой ноутбук Lenovo X220 не является планшетом, который выдавали на Build конференции в США, но на в нем отлично работают камера и определение координат через Wi-Fi точки.
Я уверен, что когда MS будет продвигать ОС в массы, то для разработчиков будут такие же конкурсы приложений, где одним из ключевых параметров будет использование возможностей ОС, в том числе датчиков и сенсоров.
WinRT сильно облегчает задачу работы с сенсорами и датчиками
P.S. над моей фото с камеры, сильно не смеяться… Посмотрел бы я на Вас в 6 утра воскресенье… когда я делал эту статью. ;)
Автор: SychevIgor