最近,我们已经开始扩展我们的应用程序来支持Surface Hub(55英寸和84英寸)。在许多地方,我们为Hub设计了一组完全不同的UI,因此需要识别设备是不是Surface Hub,以便我们可以显示特定的UI。
我研究了各种设备识别/输入Apis,但不幸的是,它们都不能提供识别设备的线索。
我不完全记得了,但我猜我在某个地方读到过,现在UWP SDK不允许开发人员识别特定的设备类型,因为UWP应用程序预计可以在所有类型的Win 10运行的设备上运行-可能有人可以证实这一点。然而,由于集线器的分辨率比普通的台式机/平板电脑设备要高得多,我确信可以使用VisualState触发器来操作各种UI。
不过,如果我能在我的应用程序开始运行之前就能识别出设备是否是Surface Hub,那就太好了,更像是识别当前设备上是否存在触摸功能。
希望有人能帮我找到一个合理的解决方案!
发布于 2017-05-12 11:49:08
This article多次建议Surface Hub拥有自己的设备家族,但this article表示,只有针对通用设备家族的应用程序才能在Surface Hub上运行,并且没有提到Surface Hub设备家族或某种数字白板设备家族,该设备将宣传自己是其中的一部分。
但是,有一个名为Windows.System.Profile.SharedModeSettings的类,它包含一个IsEnabled属性,该属性在装有a certain policy enabled或Surface Hub的PC上仅返回true。将其与VisualState触发器甚至Windows.Devices.Input.TouchCapabilities.TouchPresent结合使用,可能是使用特征检测来确定设备是否是表面集线器的最接近方法。
发布于 2017-05-12 13:55:10
if(AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Team")
{
// surface hub
}有一些方法可以为每个设备系列定制UI。是的,一个是设备触发器。或者,您可以拥有曲面轮毂的完全独立的视图(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
https://stackoverflow.com/questions/43928919
复制相似问题