其中的一個方法是:
string x = AnalyticsInfo.VersionInfo.DeviceFamily;
判斷 x 的值,有”Windows.Mobile“,”Windows.Desktop“。我沒有XBOX設備,所以並不清楚XBOX下會得到什麼值。
當我看到返回值類型是string時,我就覺得微軟在扯淡了~~~~因為哪天微軟把這個字符串一修改,我就得修改我的軟件了~~~為毛不用枚舉~~
注意:PAD和PC都會得到Windows.Desktop。
就是說,如果使用這種方法,你無法判斷到底是不是運行在”移動端“。因為PAD也屬於移動端設備。
這個時候,我們需要第二個接口,獲取用戶的交互模式。
微軟提供了兩種用戶交互模式:鼠標、觸摸。
我寫了一個判斷是否運行在移動端的函數:
public static bool IsRunningOnMobile(){return UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Touch;}
UserInteractionMode 有兩種模式,Touch 和 Mouse.
我測試了,在三種設備中得到的 DeviceFamily 與 UserInteractionMode,發現得到結果如下:
PC | PAD | MOBILE | |
DeviceFamily | Windows.Destop | Windows.Destop | Windows.Mobile |
UserInteractionMode | Mouse | Touch | Touch |
測試PC與PAD很簡單,你不需要提供一個PC和一個PAD,按下面圖的方式操作,即可達到二者的切換:
最後得出的結論是,你只需要去判斷交互模式就可以了。因為你得到 Desktop 是沒有什麼用處的,交互模式才是最重要的。。
不過我還是沒有XBOX設備,不知道在XBOX上面會有什麼表現。
[END]