Я работаю над универсальным приложением, и я пытаюсь определить, работает ли он на настольном компьютере или на реальном устройстве IoT (Raspberry PI 2). В соответствии с рекомендацией, я пытаюсь использовать контрактный API проверку, однако это возвращает true
даже на настольном компьютере:Как обнаружить работу на реальном устройстве?
ApiInformation.IsApiContractPresent("Windows.Devices.DevicesLowLevelContract", 1, 0);
Очевидно, когда я пытаюсь вызвать GpioController.GetDefault()
, он не на рабочем столе, но как ни странно с FileNotFoundException
: "The specified module could not be found."
Итак, каков правильный способ обнаружения реального устройства?
Спасибо за вашу помощь,
Дьёрдь
Edit:
На некоторых рабочих столах GpioController.GetDefault()
возвращает null
, в то время как на других машинах он терпит неудачу с FileNotFoundException
.
Edit:
Моя цель состоит в том, чтобы убедиться, что я могу смело назвать какие-либо конкретные интерфейсы GPIO или IoT Ключевыми без примерки уловов блоков везде для обработки исключений при запуске на устройстве без IoT.
Спасибо за ваш ответ, Том. Рассматриваемый вами класс «AnalyticsInfo» предназначен для «профилирования» (см. Https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.profile.analyticsinfo), что означает для меня, что это существует для регистрации и диагностики. Да, я согласен, Microsoft рекомендует использовать контракты API (см. Https://blogs.windows.com/buildingapps/2015/09/15/dynamically-detecting-features-with-api-contracts-10-by-10/), чтобы обнаружить функции, именно поэтому я пытаюсь их использовать, однако он возвращает неверные данные. –
Проверьте ответ от Daniel Meixner по этой ссылке: http://stackoverflow.com/questions/30479171/windows-10-uap-determine-if-device-is-iot-eg-raspberry-pi-2 Он предлагает проверить если тип GpioController присутствует, я еще не пробовал себя. –
спасибо за подсказку, но, к сожалению, IsTypePresent для класса GpioController также возвращает true на рабочем столе :( –