面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行。尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑。比如一串数据列表,我希望如果在桌面上运行时就以横向列表展现;但要是运行在手机上就以纵向列表展现。

也就是说,其实我们只需分析两种情况即可:

一、桌面。(台式机、笔记本、平板、游戏机、发广告专用机、导航器……)

二、移动环境。其实就是手机。

那么,有啥办法可判断呢?勿急,老周先告诉你,方法比较简单。咱们先看一段代码:

            var context = ResourceContext.GetForCurrentView();string s = string.Empty;foreach (var item in context.QualifierValues){s += item.Key + " : " + item.Value;s += "\n";}tb.Text = s;

ResourceContext类在Windows.ApplicationModel.Resources.Core命名空间下,就是用于访问与当前应用程序的限定资源的API,也可以把这个“资源”理解为应用程序的一些配置信息,如什么语言的,日语的还中文的;什么主题基调的,浅色还是深色;什么比例的,缩放100%还是180%……

调用ResourceContext.GetForCurrentView()方法可以直接得到ResourceContext实例,再通过QualifierValues属性得到一个字典数据:Key为字符串,Value也是字符串。QualifierValues属性表示该资源的限定符集合。

悟性高的朋友可能已经猜到其中的玄机了,不过猜不到也不用急,现在我们用上面的代码做两件事,做完这两件事你就会明白了。

第一件事,在本地计算机和平板模拟器上运行应用,然后得到如下图的结果:

第二件事,在手机模拟器上运行一下,得到结果如下:

不知道你看懂了没,如果还没有看出其中的奥妙,那老周就揭晓了:在资源限定符字典中,有一条记录的Key为DeviceFamily,如果在桌面上运行的话,它的Value就是Desktop;如果在手机上运行,Value就是Mobile。

怎么样,现在懂了吧?

那么,你猜猜,如果判断UAP正在运行的设备,该想到方法了吧。

老周给出个例子,界面上有个StackPanel容器,里面放了几块正方形的烧饼。如果在桌面上运行,烧饼就横着放;如果在手机上运行,烧饼就竖着放,以方便用户流口水。

XAML代码如下:

        <StackPanel Margin="15" Name="panel"><Rectangle Margin="14" Width="125" Height="125" Fill="Yellow"/><Rectangle Margin="14" Width="125" Height="125" Fill="Red"/><Rectangle Margin="14" Width="125" Height="125" Fill="Pink"/><Rectangle Margin="14" Width="125" Height="125" Fill="Orange"/></StackPanel>

处理代码如下:

            // 得到资源上下文对象ResourceContext resContext = ResourceContext.GetForCurrentView();// 访问键名为DeviceFamily的值string value = resContext.QualifierValues["DeviceFamily"];// 分析if (value == "Desktop"){panel.Orientation = Orientation.Horizontal;}else{panel.Orientation = Orientation.Vertical;}

OK,首先,在本地计算机上运行一下,结果如下:

接着,在手机模拟器上运行,结果如下:

看来这个DeviceFamily确实很Family。

补充:后来发现,访问Windows.System.Profile.AnalyticsVersionInfo.DeviceFamily属性也可以获得平台名称。

本文例子下载地址:http://files.cnblogs.com/files/tcjiaan/deviceFamilySmp.zip

【Win 10应用开发】如何知道UAP在哪个平台上运行相关推荐

  1. 【Win 10 应用开发】RTM版的UAP项目解剖

    原文:[Win 10 应用开发]RTM版的UAP项目解剖 Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以 ...

  2. 【Win 10 应用开发】Toast通知激活应用——前台后台

    原文:[Win 10 应用开发]Toast通知激活应用--前台&后台 老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎 ...

  3. 【Win 10应用开发】SplitView控件

    [Win 10应用开发]SplitView控件 原文:[Win 10应用开发]SplitView控件 SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所 ...

  4. 【Win 10应用开发】Adaptive磁贴模板的XML文档结构

    原文:[Win 10应用开发]Adaptive磁贴模板的XML文档结构 在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴 ...

  5. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题

    转载:http://blog.csdn.net/iamlazybone/article/details/17191539 懒骨头(http://blog.csdn.net/iamlazybone  Q ...

  6. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应...

    2019独角兽企业重金招聘Python工程师标准>>> 上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上. 开始干活! 其实步骤可以参考 Cocos2 ...

  7. 【Win 10 应用开发】导入.pfx证书

    这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...

  8. 【Win 10 应用开发】在代码中加载文本资源

    记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...

  9. 地平线 旭日X3 SDB开发板 (四) yolov3自训练模型板上运行流程记录

    文章目录 一.准备工作 二.检查模型 三.板上运行 四.参考 一.准备工作 onnx 1.5 Opset version 10 自己训练的darknet模型 yolov3 darknet 转 onnx ...

最新文章

  1. cmos门电路输入端悬空相当于_TTL和CMOS,CMOS电平和TTL电平区别
  2. JVM 调优系列之监控工具
  3. 你不知道的事:AWR 基线和 AWR Compare Period Report 功能介绍
  4. oracle:时间数据的处理
  5. 人脸检测SSD 记录
  6. 关联分析在企业风控策略中的应用
  7. Error:npm WARN enoent ENOENT: no such file or directory, open ‘C:\Users\XX\package.json‘son‘
  8. 矩池云上安装及使用Milvus教程
  9. 高通骁龙cpu排行_最新手机性能排行榜出炉:高通骁龙865霸榜,前十不见华为!...
  10. pytorch中的tensor以numpy形式进行输出保存
  11. 2022电工杯A题利用启发式算法寻优
  12. WinRAR 去除广告弹窗,简单4步亲测有效!
  13. JS函数传参长度限制
  14. 【原】win 7 屏幕旋转问题的解决
  15. 使用html框架制作一个网站布局
  16. beyond-光辉岁月-国语谐音歌词
  17. Mac环境下Tron 部署教程
  18. android动画 行星,AndroidAnimation
  19. Vue3配置postcss-pxtorem报错[plugin:vite:css] Failed to load PostCss config
  20. 《潜规则》吴思-摘抄

热门文章

  1. LVGL - 在STM32上的移植
  2. ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1'
  3. json格式简介和相关操作
  4. 【VRP】基于matlab遗传算法求解多中心车辆路径规划问题【含Matlab源码 1965期】
  5. udt4 VS udt gateway
  6. Python机器学习05——判别分析
  7. 【sfu】network线程和主线程
  8. 使用QuickBI制作企业报表门户
  9. 工作流(Workflow)简介
  10. 计算机弹歌光年之外谱子,邓紫棋《光年之外》完整钢琴谱