写点什么

朱永光谈 WP7 开发特性与应用场景(二)

  • 2012-08-06
  • 本文字数:2396 字

    阅读完需:约 8 分钟

在 8 月 2 日,由天翼空间·开发者工厂主办,InfoQ 协助策划的第十九期专家讲坛活动上,微软MVP 朱永光( @亿科朱永光)分享了 WP7 开发中关于设备状态、传感器、位置、相机与照片以及媒体等话题。

Windows Phone 7 开发特性与应用场景——第二讲讲稿下载视频链接

设备状态的判断主要是通过 DeviceStatus 类来确定状态的信息:

  • 内存总量、硬件版本以及设备制造商名称
  • 电源信息
  • 物理键盘情况

获取手机何时插入外部电源通过 PowerSource API 和 PowerSourceChange 事件实现;开发应用程序时,可以使用 ApplicationCurrentMemoryUsage ApplicationPeakMemoryUsage 属性来监视内存使用情况。使用 DeviceTotalMemory ApplicationMemoryUsageLimit 属性来确定设备和应用程序的内存限制。没有必要以非常小的间隔检查应用程序的内存使用情况。偶尔检查高峰内存使用量即可。若发现高峰内存使用量值超过允许的阀值,如技术认证要求的第 5.2 节中所述,则可以选择更加细微地监视内存使用情况以便帮助诊断问题。若应用程序占用内存较大,可跟踪应用程序中主要对象(如页面或用户控件)的示例计数。如果有多个非最终的实例超过预期,则应检查实例未被释放的原因。此外,对于开发者来说,应尽量不要把设备信息直接呈献给终端用户,而主要用于监控、日志和反馈等。

传感器主要用来确定设备方向和运动情况,通常用法包括运动控制的游戏和增强现实的应用程序,组合运动 Motion API 组合并处理来自所有传感器的输入,它是获取运动和方向信息的最简单方式。主要涉及到的硬件包括:

  • 加速计 Accelerometer (必需):测量在某一时刻施加于设备的力。可以使用这些力来确定用户正在向哪个方向移动设备,也就是横竖屏;
  • 罗盘或磁力计(可选,对于 Motion 必需):确定设备相对于地球磁场北极旋转的角度。应用程序也可以使用原始磁力计读数来检测设备周围的磁力;
  • 陀螺仪 Gyroscope (可选,可得到更好的数据):确定设备在每个轴之上的旋转速度。可以确定设备在空间中的方向。由于陀螺仪测量旋转速度,而不是角度,因此容易受到与漂移有关的问题的影响。

综上,运动 API 将在具有一个罗盘传感器的设备上工作,如果还具备陀螺仪,将会产生更完整的数据。目前,Windows Phone 商城通过罗盘传感器来确定设备上是否支持运动 API。

位置服务通过来源(如 GPS、Wi-Fi 和蜂窝数据)获取位置信息。它可以使用一个或多个来源来推导出 Windows Phone 的位置,从而根据应用程序的需要平衡性能和电能利用。通过事件驱动托管代码接口向应用程序公开位置。

位置服务主要由三层构建而成,第一层由 Windows Phone 设备中的硬件组成。这包括 GPS 接收器,Wi-Fi 和蜂窝收音机。这些可以全部充当精度和能耗级别各不相同的位置数据的提供程序。在硬件的上面是本机代码层。该层直接与可用的位置数据来源通信并决定使用哪个来源,根据数据的可用性以及应用程序指定的性能要求确定设备的位置。本机代码层还借助 Microsoft 托管的 Web 服务与 Internet 通信,以从数据库查找与位置有关的信息。定位服务的顶层是托管接口,通过 Windows Phone SDK 附带的 DLL 公开。应用程序使用该接口启动和停止定位服务,设置应用程序所需的精度级别以及从本机代码层(当它变为可用时)接收位置数据。

相机 API 主要有两套:

  • Windows Phone 相机 API:用于开发采用摄影方案的应用程序;
  • Silverlight 4 网络摄像机 API:用于开发采用视频方案以及将现有 Silverlight 4 网络摄像机应用

当您想开发拍摄高分辨率照片、使用硬件快门按钮或访问闪光灯模式或对焦功能的应用程序时,可以使用 Windows Phone 相机 API。例如,此 API 可以用于创建高级静止照片应用程序。

如需开发视频和音频录制到一个文件中的应用程序时,可以使用 Silverlight 4 网络摄像机 API。若已通过开发 Silverlight 应用熟悉了此 API,则可重用网络摄像机代码开发 Windows Phone 应用程序。也可通过两个 API 的组合来创建增强现实的应用程序。有关如何在增强现实的应用程序中将 PhotoCamera 类与 VideoBrush 一起使用的示例,可参阅如何使用Windows Phone 的组合运动API

在媒体方面,主要用到的API 有获得麦克风音频输入的 Microphone 、设置和调整 FM 收音机的 FMRadio ,以及一些实现媒体播放的 API:

  • MediaPlayerLauncher :通过使用设备媒体播放器嵌入音频或视频(最佳做法);
  • MediaElement API :通过使用可自定义程度更高的界面嵌入音频或视频;
  • MediaStreamSource:实现自适应流媒体解决方案(和桌面有一定差别);
  • Microsoft.Phone.BackgroundAudio :创建一个当另一个应用程序在前台时将继续播放音频的媒体应用程序。

对于后台音乐部分,是 7.1 新增的功能,依赖于后台代理。Windows Phone 所有媒体均通过 Zune 媒体队列播放。后台音频应用程序向 Zune 媒体队列发送命令以设置当前堆栈、开始播放、暂停、快进、后退等。通过在 BackgroundAudioPlayer 类中调用方法来完成该操作。然后, Instance 对象与 Zune 媒体队列通信以操作音频的播放。

关于讲师

朱永光,IT 自由人和环境保护者,微软最有价值专家(MVP)和 MCSD。15 年的编程实践经历,擅长使用软件相关技术和产品。目前主要关注动态语言、函数式语言、并行计算、云计算和 RIA。目前作为共同创始人经营一家环保技术公司,致力于通过 IT 技术来保护环境,并把环境保护里面引入 IT 领域的工作。

关于专家讲坛

天翼空间开发者社区专家讲坛是天翼空间开发者社区 2012 年针对开发者推出的一项提升专业能力的系列讲座,每周二、四晚,邀请移动互联网开发领域的权威专家,通过语音频道专题讲座,线上论坛访谈,以及微博、QQ 群线上同步直播的形式,为社区的开发者用户提供系统的技术讲座,答疑,以及运营知识方面的培训。

往期内容回顾

关于专家讲坛更多详情,请浏览官方网站。InfoQ 也会对后续的活动进行跟踪报道。

关于社区活动的更多详情,欢迎查看InfoQ 维护的社区活动日历,也欢迎关注InfoQ 官网微博( @InfoQ ),获取实时的活动信息!

2012-08-06 20:351273
用户头像

发布了 156 篇内容, 共 51.0 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

AudFree Tidable Music Converter for Mac(Tidal音乐转换器)

Rose

Tidal音乐转换器 苹果电脑音频转换器 AudFree Tidal Music

程序员都必须知道的Vue 开发技巧

不在线第一只蜗牛

vue.js Vue 开发技巧

NFTScan | 01.01~01.07 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

PostgreSQL数据库开发工具Navicat for PostgreSQL中文版

Rose

数据库设计 Navicat for PostgreSQL PostgreSQL数据库开发

[Mac/win数据库最新版]Navicat for MySQL 永久激活教程

Rose

Navicat for MySQL 数据库管理开发 Navicat数据库软件下载

OpenAI 也在 996?一位离职员工自白:代码贡献第四,经常工作 6 天丨 RTE 开发者日报 Vol.121

声网

当在线教育流量预警时,我们还可以在哪里挖掘

Geek_2305a8

阿里云 EMAS & 魔笔:12月产品动态

移动研发平台EMAS

做CAE分析用哪个显卡?CAE咨询

思茂信息

仿真 CAE CAE软件

MongoDB 数据库管理和开发Navicat for MongoDB【Mac/win】

Rose

MongoDB数据库 Navicat数据库下载 Navicat for MongoDB中文

Mac电脑前端代码编辑神器:Sublime Text 4 Dev 激活码中文

mac大玩家j

代码编辑器 Mac软件 前端代码编辑器

APP加固技术及其应用

雪奈椰子

TikTok海外直播专线:优化你的海外直播体验

Ogcloud

直播 直播优化 TikTok

关于 IntelliJ IDEA 中 Schedule for Addition 的问题

Rose

IntelliJ IDEA

如何查看崩溃日志

Avdshare Audio Converter for Mac(性能超强的音频格式转换器)

Rose

苹果软件下载 Avdshare Audio Converter Mac音频格式转换器

AE脚本-图层分布路径形状高级控制 Tweaks

Rose

强大的原型设计:Kite Compositor最新激活版

胖墩儿不胖y

Mac软件 原型设计工具 Mac动画软件

万界星空科技云MES,助力客户快速构建数字工厂

万界星空科技

mes 万界星空科技 低代码云MES

矢量图形转换工具vector magic for Mac 兼容macos14系统

Rose

mac软件下载 Vector Magic破解版 矢量图像转换工具

2023年国内AI Agent下项目大盘点,科技大厂与创业公司齐头并进

王吉伟频道

创业 融资 大语言模型 AI Agent AI智能体

macos强大的界面设计和原型制作工具:Kite

Rose

Mac动画原型设计 Kite for Mac破解 Kite Mac下载 苹果软件下载站

实时获取建材网商品数据:API实现详解与代码示例

Noah

软件测试开发/全日制/测试管理丨接口功能测试

测试人

软件测试 自动化测试 接口测试 测试开发 测试管理

2024年,苟住求活,才是长期主义

老张

第二曲线 职场发展 互联网裁员

LED屏租赁需求激增,为何LED显示屏租赁如此受欢迎?

Dylan

综艺节目 应用 LED显示屏 户外LED显示屏 led显示屏厂家

去年最火的 JS 开源项目「GitHub 热点速览」

EquatorCoco

GitHub 开源 js 工具库

5分钟使用Hologres实时湖仓加速分析挑战赛来袭

阿里云大数据AI技术

2024年最热门的15个科技工作岗位

互联网工科生

程序员 科技 岗位

GaussDB(for MySQL)新特性TDE发布:支持透明数据加密

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(for MySQL)

AE脚本-快速创建微风摇曳摆动波浪动画 Breeze

Rose

朱永光谈WP7开发特性与应用场景(二)_移动_贾国清_InfoQ精选文章