C# 如何在代码中识别设备是否为Surface Hub?

C# 如何在代码中识别设备是否为Surface Hub?,c#,xaml,uwp,windows-10,surface-hub,C#,Xaml,Uwp,Windows 10,Surface Hub,最近,我们开始扩展我们的应用程序,以支持Surface Hub(55英寸和84英寸)。在许多地方,我们为Hub设计了一套完全不同的UI,因此需要识别设备是否为Surface Hub,以便显示特定的UI 我研究了各种设备识别/输入API,但不幸的是,它们都没有提供任何识别设备的线索 我不完全记得,但我想我在某个地方读到过,现在UWP SDK不允许开发人员识别特定的设备类型,因为UWP应用程序预计将在各种Win 10运行设备上运行-可能有人可以证实这一点。然而,由于集线器的分辨率比普通桌面/平板电脑

最近,我们开始扩展我们的应用程序,以支持Surface Hub(55英寸和84英寸)。在许多地方,我们为Hub设计了一套完全不同的UI,因此需要识别设备是否为Surface Hub,以便显示特定的UI

我研究了各种设备识别/输入API,但不幸的是,它们都没有提供任何识别设备的线索

我不完全记得,但我想我在某个地方读到过,现在UWP SDK不允许开发人员识别特定的设备类型,因为UWP应用程序预计将在各种Win 10运行设备上运行-可能有人可以证实这一点。然而,由于集线器的分辨率比普通桌面/平板电脑设备高得多,我确信可以使用VisualState触发器操纵各种UI

不过,如果在我的应用程序开始运行之前,我能够以某种方式识别设备是否为Surface Hub,就像识别当前设备上是否存在触摸功能一样,那就太好了

希望有人能帮我找到一个合理的解决方案

多次建议Surface Hub拥有自己的设备系列,但表示只有针对通用设备系列的应用程序才会在Surface Hub上运行,并且没有提及Surface Hub设备系列或该设备将宣传自己为其一部分的某种数字白板设备系列

但是,有一个名为的类包含一个
IsEnabled
属性,该属性仅在带有或带有Surface Hub的PC上返回true。将其与VisualState触发器结合使用,甚至可能
Windows.Devices.Input.TouchCapabilities.TouchPresent
,可能是最接近使用功能检测确定设备是否为Surface Hub的方法

if(AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Team")
{
    // surface hub
}
有一些方法可以为每个设备系列定制UI。是的,一个是设备触发器。 或者,可以使用Surface hub的完全独立视图(XAML)

例如,您可以在app.xaml.cs上选择主视图:

rootFrame = new Frame();
if(AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Team")
{
    // surface hub
    rootFrame.Navigate(typeof(MainPageForSurfaceHub), e.Arguments)
}
else
{
    rootFrame.Navigate(typeof(MainPage), e.Arguments)
}
下面的演示将对您有所帮助


是的,我曾想过这样的组合,但问题在于存在漏洞。例如,如果在桌面上启用了策略,应用程序检测到它并显示了特定于中心的UI,那么它就乱七八糟了。老实说,这是我计划做的事情,如果没有其他方便。谢谢。您是否在实际的Surface Hub上测试过此条件:if(AnalyticsInfo.VersionInfo.DeviceFamily==“Windows.Team”)否。我没有机会使用实际的surface hub。但是这个检测代码并不是一个特殊的代码。许多uwp应用程序使用此类代码来检测Windows.Desktop、Windows.Mobile等。Surface hub是Wnidows.Team的一个家族。感谢您提供的信息。稍后将检查并添加我的评论。