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

时间:2017-05-12 03:41:56

标签: c# xaml uwp windows-10 surface-hub

最近我们开始扩展我们的App以支持Surface Hub(55英寸和84英寸)。在许多地方,我们为Hub设计了完全不同的用户界面,因此需要确定设备是否为Surface Hub,以便我们可以显示特定的用户界面。

我探索了各种设备识别/输入Apis,但不幸的是,他们都没有提供识别设备的任何线索。

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

如果以某种方式我可以在我的应用程序开始运行之前识别设备是否是Surface Hub,那就更好了,更像是确定当前设备上是否存在触摸功能。

希望有人能够在这里帮助我找到合理的解决方案!

2 个答案:

答案 0 :(得分:0)

This article建议Surface Hub有多次拥有自己的设备系列,但this article表示只有针对通用设备系列的应用才能在Surface Hub上运行,并且未提及Surface Hub设备家庭或某种数字白板设备系列,设备将自己宣传为其中的一部分。

但是,有一个名为Windows.System.Profile.Shared​Mode​Settings的类包含IsEnabled属性,该属性仅在具有a certain policy enabled的PC或Surface Hub上返回true。将其与VisualState触发器(甚至可能Windows.Devices.Input.TouchCapabilities.TouchPresent)结合使用,可能是您使用特征检测确定设备是否为Surface Hub的最接近的。

答案 1 :(得分:0)

if(AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Team")
{
    // surface hub
}

有一些方法可以为每个设备系列提供量身定制的UI。是的,一个是设备触发器。 或者,您可以为Surface集线器提供完全独立的视图(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)
}

以下演示文稿将为您提供帮助。

Surface Hub: Building Windows Universal Apps for Surface Hub and the Large Screen