Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

简介: 原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述 第9部分:Windows Phone 8模拟器概述 原文地址: http://channel9.

原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

第9部分:Windows Phone 8模拟器概述

原文地址:

http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-9-Overview-of-the-Windows-Phone-8-Emulator

源代码: http://aka.ms/absbeginnerdevwp8

PDF版本: http://aka.ms/absbeginnerdevwp8pdf

我们已经在本系列中使用过Windows Phone模拟器。它是开发Windows Phone平台应用程序的关键组件,所以我想花些时间进一步熟悉它并为获取更多信息指明方向。

本课的计划是:

  1. 我们将了解Winows Phone模拟器究竟是什么,以及它如何为不同部署场景提供不同的版本。
  2. 我们将了解模拟器的功能,包括模拟设备按钮的键盘快捷键。
  3. 我们将了解如何在虚拟设备上调整大小,旋转和模拟物理设备的行为,就像虚拟设备也支持加速计,GPS等功能一样。

1. Windows Phone模拟器是什么?

简而言之,Windows Phone模拟器是一个模拟Windows Phone设备的桌面应用程序,并且提供了类似物理Windows Phone设备的性能。它提供了一个虚拟化的环境使您可以在没有物理设备的情况下调试并测试Windows Phone应用程序。其实就像我在一开始安装Windows Phone 8时所说的,它运行微软的Hyper-V。为获取Windows 8上有关Hyper-V的更多介绍,您可以参考这篇来自Windows 8团队的博客

Hyper-V带给Winows 8(Bringing Hyper-V to "Windows 8" )
http://blogs.msdn.com/b/b8/archive/2011/09/07/bringing-hyper-v-to-windows-8.aspx

虽然模拟器对于开发和迅速调试非常有效,但是在您将应用程序发布到Windows Phone应用商店前,微软建议您在一部真正的手机上测试您的应用。

2. 选择用于调试的不同版本模拟器

 到目前为止,当我们在Visual Studio的工具栏上单击运行/调试按钮时,我们在默认配置下运行模拟器,即所谓的WVGA 512M。

WVGA和512MB意味着什么?

512M表明我们运行在内存受限的环境中,Visual Studio中默认的模拟器映像是WVGA 512M模拟器,它模拟一个内存受限的Windows Phone 8手机。例如Lumia 610是一部廉价的入门级Windows Phone 8设备,它仅支持256MB内存。相反Lumia 920有1GB内存。在低内存的设备上,当有多个应用程序同时运行或创建一个内存密集型的应用程序,可能会导致性能问题。所以为了确保应用程序在低内存设 备上运行良好,您可以使用这个实际一点的模拟器映像来测试您的应用程序。

在MSDN上有很多关于内存使用的好文章,您可从以下文章开始以了解更多内容:

Windows Phone应用程序性能注意事项(App performance considerations for Windows Phone)

http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967560(v=vs.105).aspx

低成本设备的应用程序优化(Optimizing Apps for Lower Cost Devices)

http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/03/07/optimizing-apps-for-lower-cost-devices.aspx

“WVGA”和其他缩写代表什么?

模拟器允许您对每个Windows Phone支持的屏幕分辨率在一个唯一的模拟器映像上测试您的应用程序。默认的选择鼓励您将您的Windows Phone 8应用程序目标定位于最大的市场。

  • WVGA (800 × 480)
  • WXGA (1280 × 768)
  • 720p (1280 × 720)

如果您运行在默认状态下,那么转到设置应用程序,点击关于,您将看到(译者注:注意此时的屏幕分辨率为480×800):

这如何转换成市场上实际的手机?

Lumia 920
显示尺寸: 4.5英寸
显示分辨率: WXGA (1280 x 768)

Lumia 820
显示尺寸e: 4.3英寸
显示分辨率: WVGA (800 x 480)

Lumia 610
显示尺寸: 3.7英寸
显示分辨率: WVGA (800 x 480)

我意识到当您观看本部分内容时可能会有新的手机型号出现。要点是您应该意识到您需要支持不同的屏幕分辨率和内存限制。像我在使用XAML布局那课谈 到的,您需要清除布局中对特定像素的使用(除了边距以外)。通过选择不同的模拟器尺寸,您可以确保您能够支持不同分辨率的屏幕。

3. 使用手机模拟器的特殊功能

我不会花很多时间在手机的基本导航上。如果您还没有一部物理手机,通过使用模拟器,您可以掌握很多导航的方法。通过模拟器上的开始按钮和应用程序页面,搜索,web浏览,时钟和电池等功能,实际上您将获得和物理手机几乎一样的体验。

模拟器的底部与Windows Phone的底部具有相同的硬件按钮:

请注意模拟器没有手机侧面的按钮。例如我的Lumia 920在侧面有三个按钮—一个音量调节按钮,一个电源按钮和一个相机按钮。在模拟器中,这些可以通过键盘功能键来访问。

这里有一个键盘映射列表:

http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff754352(v=vs.105).aspx#BKMK_KeyboardMapping

  • F6 –按下一半相机按钮
  • F7 – 相机按钮
  • F9 - F10 增加和减少音量
  • F11 – 播放/暂停声音。它模拟一个在线耳机按钮以暂停音乐并应答来电。如果您双击这个按钮,它将跳至您播放列表或专辑的下一首。
  • F12 – 电源按钮/ 锁屏
  • F1 – 后退按钮
  • F2 – Windows键
  • F3 – 搜索按钮

让我们使用模拟器键盘上的F3键进行搜索:

手机键盘将会出现。我可以使用鼠标模拟点击按键。如果这样做,开发的大部分时间都很痛苦。我宁愿使用计算机的键盘。

下一页(PAGE DOWN)按钮- 当文本框是当前的输入目标,下一页键将禁用虚拟的“硬件”键盘,这样您就可以使用物理键盘进行输入。

上一页(PAGE UP)按钮- 当文本框是当前的输入目标,上一页按钮将启用虚拟的“硬件”键盘。

暂停(PAUSE/BREAK)按钮-切换键盘,您可以随时使用它。

正如您所看到的,我输入搜索短语"selfridge chicago",寻找关于芝加哥最著名人物Harry Selfridge的文章或维基百科文章,他创建了零售商店Selfridges of London,并且是BBC一部热门电视剧的主角。

当我单击键盘上的“转到”:

模拟器中的必应搜索与物理设备上的必应搜索一样,请求允许使用您的位置以防止影响搜索结果。例如,如果我在伦敦,必应将会显示我附近的Selfridges的一张地图。然而,因为我在美国所以必应将提供不同的结果。我待会儿将展示模拟器如何确定它的位置:

除了屏幕上的“虚拟”手机,右侧还有一个悬浮的菜单。简单试用前六个按钮就会知道它们的功能:

  1. 关闭模拟器
  2. 最小化模拟器
  3. 逆时针旋转模拟器90度
  4. 顺时针旋转模拟器90度
  5. 将模拟器扩展到适合您计算机屏幕的最大尺寸
  6. 显示缩放对话框

打开其他工具对话框。在其他工具对话框中共有四个选项卡。第一个是加速计,它可以被用于测试使用加速计传感器的应用程序:

  1. 您可以通过单击并拖拽圆圈中的橙色点来更改手机的中心点以更改其在3D空间中的位置。
  2. 您可以更改方向为预设之一。
  3. 您可以播放记录的数据,例如“摇”这个动作。

如需有关Windows Phone SDK中模拟器和加速计传感器的更多信息,可以访问以下文章:

如何测试使用Windows Phone加速计的应用程序(How to test apps that use the accelerometer for Windows Phone)

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202936(v=vs.105).aspx

下一个选项卡是位置选项卡,它允许您设置手机的当前位置。因此,即使我坐在德克萨斯州的达拉斯,我也可以像在芝加哥或世界上任何位置一样测试我的手机。

  1. 执行特定位置的搜索,例如“伊利诺斯州芝加哥(Chicago, IL)”。
  2. 右键单击地图以创建一个代表位置的针脚。
  3. 我将核实列表中被维度和经度标记的针脚的确切位置。

现在我可以转到Windows Phone模拟器的地图应用程序查看缩放到该位置的地图。当我们创建AroundMe应用程序时,将依靠这项技术。

第三个选项卡用于创建屏幕截图,它可以帮助您创建文档或缺陷报告:

最后的选项卡是网络选项卡。除了查看手机网络上的IP地址您不能用它做更多的工作。

除了模拟器本身,Visual Studio还有一些工具可以影响到XAML设计器如何显示显示手机(方向,主题和颜色,镶边等):

还有模拟仪表板,它允许您在不同的现实条件下验证您的Windows Phone应用程序。

模拟面板向您提供模拟不同的网络条件,触发提醒和检查您的应用程序在锁定的屏幕下如何执行的能力:

在开发期间您具有这么多的方式来测试和监视您的应用程序,所以当您在应用商店分发您的应用程序时,您将对它的表现抱有信心。

回顾

最后一个有关模拟器的技巧是开发期间让模拟器自己管理启动和运行是没有问题的。没有必要关闭它。当您在Visual Studio的调试模式下启动或重新启动您的应用程序时,这个过程的一部分内容就是将您应用程序的最新版本部署到手机。每次都重新启动模拟器的话会很耗 时,并且如果需要,Visual Studio会连接到当前的模拟器。

综上所述,模拟器是一个很棒的工具,它允许您在开发过程中快速部署应用程序到虚拟的Windows Phone。我们学习了如何测试不同设备的屏幕大小和内存限制,如何操纵模拟器以测试旋转和动作,如何让手机位于地理上特定的位置以及更多内容。我们将会 在本系列中大量使用这些技能。

目录
相关文章
|
1月前
|
数据可视化 数据库 C++
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
|
12天前
|
监控 安全 API
7.3 Windows驱动开发:内核监视LoadImage映像回调
在笔者上一篇文章`《内核注册并监控对象回调》`介绍了如何运用`ObRegisterCallbacks`注册`进程与线程`回调,并通过该回调实现了`拦截`指定进行运行的效果,本章`LyShark`将带大家继续探索一个新的回调注册函数,`PsSetLoadImageNotifyRoutine`常用于注册`LoadImage`映像监视,当有模块被系统加载时则可以第一时间获取到加载模块信息,需要注意的是该回调函数内无法进行拦截,如需要拦截则需写入返回指令这部分内容将在下一章进行讲解,本章将主要实现对模块的监视功能。
29 0
7.3 Windows驱动开发:内核监视LoadImage映像回调
|
4月前
|
监控 安全 API
7.2 Windows驱动开发:内核注册并监控对象回调
在笔者上一篇文章`《内核枚举进程与线程ObCall回调》`简单介绍了如何枚举系统中已经存在的`进程与线程`回调,本章`LyShark`将通过对象回调实现对进程线程的`句柄`监控,在内核中提供了`ObRegisterCallbacks`回调,使用这个内核`回调`函数,可注册一个`对象`回调,不过目前该函数`只能`监控进程与线程句柄操作,通过监控进程或线程句柄,可实现保护指定进程线程不被终止的目的。
29 0
7.2 Windows驱动开发:内核注册并监控对象回调
|
4月前
|
监控 安全 API
7.6 Windows驱动开发:内核监控FileObject文件回调
本篇文章与上一篇文章`《内核注册并监控对象回调》`所使用的方式是一样的都是使用`ObRegisterCallbacks`注册回调事件,只不过上一篇博文中`LyShark`将回调结构体`OB_OPERATION_REGISTRATION`中的`ObjectType`填充为了`PsProcessType`和`PsThreadType`格式从而实现监控进程与线程,本章我们需要将该结构填充为`IoFileObjectType`以此来实现对文件的监控,文件过滤驱动不仅仅可以用来监控文件的打开,还可以用它实现对文件的保护,一旦驱动加载则文件是不可被删除和改动的。
29 1
7.6 Windows驱动开发:内核监控FileObject文件回调
|
4月前
|
监控 安全 API
6.9 Windows驱动开发:内核枚举进线程ObCall回调
在笔者上一篇文章`《内核枚举Registry注册表回调》`中我们通过特征码定位实现了对注册表回调的枚举,本篇文章`LyShark`将教大家如何枚举系统中的`ProcessObCall`进程回调以及`ThreadObCall`线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用结构体`_OB_CALLBACK`以及`_OBJECT_TYPE`所以放在一起来讲解最好不过。
41 1
6.9 Windows驱动开发:内核枚举进线程ObCall回调
|
4月前
|
监控 安全 API
6.8 Windows驱动开发:内核枚举Registry注册表回调
在笔者上一篇文章`《内核枚举LoadImage映像回调》`中`LyShark`教大家实现了枚举系统回调中的`LoadImage`通知消息,本章将实现对`Registry`注册表通知消息的枚举,与`LoadImage`消息不同`Registry`消息不需要解密只要找到`CallbackListHead`消息回调链表头并解析为`_CM_NOTIFY_ENTRY`结构即可实现枚举。
48 1
6.8 Windows驱动开发:内核枚举Registry注册表回调
|
4月前
|
存储 API 开发者
6.7 Windows驱动开发:内核枚举LoadImage映像回调
在笔者之前的文章`《内核特征码搜索函数封装》`中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核`LoadImage`映像回调,在Win64环境下我们可以设置一个`LoadImage`映像加载通告回调,当有新驱动或者DLL被加载时,回调函数就会被调用从而执行我们自己的回调例程,映像回调也存储在数组里,枚举时从数组中读取值之后,需要进行位运算解密得到地址。
32 1
6.7 Windows驱动开发:内核枚举LoadImage映像回调
|
1月前
|
安全 数据安全/隐私保护 Windows
解锁安全之门,Windows Server 2019密码修改攻略大揭秘
解锁安全之门,Windows Server 2019密码修改攻略大揭秘
|
1月前
|
存储 安全 网络安全
铁壁如墙-WINDOWS SERVER 2019勒索病毒终极防御指南
铁壁如墙-WINDOWS SERVER 2019勒索病毒终极防御指南
|
1月前
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
45 1