QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

朱永光谈 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:351337
用户头像

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

关注

评论

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

DAPP众筹互助游戏开发详细丨DAPP众筹互助游戏系统开发(开发逻辑及案例)

系统开发咨询1357O98O718

苹果M1/M2电脑安装Lightroom Classic 2022(LRC2022) 后打开闪退怎么办?

理理

m1 LRC2022 闪退 M2 苹果软件

苹果软件Noir:为所有网站应用深色模式

理理

Safari 扩展 Noir – Dark Mode 暗模式

Java中restTemplate携带Header请求

Geek_7ubdnf

Java RestTemplate

IoT物联网平台运行监控最佳实践——设备管理运维类

阿里云AIoT

监控 物联网

图片动画化应用中的动作分解方法

百度Geek说

深度学习 算法 计算机视觉 企业号 3 月 PK 榜

DAPP马蹄链智能合约系统丨DAPP马蹄链智能合约系统开发(开发规则))

系统开发咨询1357O98O718

华为阅读全新上线高品质男声,带来身临其境般听书体验

叶落便知秋

云智慧ITSM产品助力企业有效实现降本增效

云智慧AIOps社区

AIOPS ITSM 智能运维 工单 IT服务管理

国贸股份 x 袋鼠云:推进全链业务深度数字化,为产业综合服务插上数字化翅膀

袋鼠云数栈

数字化转型

马蹄链智能合约开发方案丨马蹄链智能合约系统开发(开发说明))

系统开发咨询1357O98O718

小程序无需编程,体验IoT物联网平台-物模型开发——设备接入类

阿里云AIoT

物联网

gRPC请求超时和异常处理

江南一点雨

Java gRPC

软件测试/测试开发丨基于 Spring Boot 的 RESTful API 设计与实现

测试人

Spring Boot 软件测试 测试发开 RESTful API

【活动报名】数据存储降本增效应用实践 PolarDB × ScaleFlux 线下 Meetup 来袭!(杭州站)

阿里云数据库开源

数据库 postgresql 阿里云 开源 polarDB

Go 闯进 Top 10、C++ 再次被 Java 反超,TIOBE 3 月榜单发布

博文视点Broadview

寻找 Milvus 的第 N+1 种可能

Zilliz

Milvus Meet Up

查询性能: TDengine 最高达到了 InfluxDB 的 37 倍、 TimescaleDB 的 28.6 倍

TDengine

大数据 tdengine 性能测试 时序数据库

MetaForce佛萨奇2.0开发规则丨MetaForce佛萨奇2.0系统开发说明及案例

系统开发咨询1357O98O718

精准医疗迎数字化新机遇,百奥利盟携手阿里云为创新生物药提速上市

云布道师

阿里云

BetterSnapTool for Mac 帮你整理窗口,提升效率

理理

BetterSnapTool 苹果电脑 窗口布局

PS画画工具推荐:ps怎么黄金分割构图

理理

黄金分割插件 GoldenCurve插件 PS插件下载

一文上手图数据备份恢复工具 NebulaGraph BR

NebulaGraph

数据库 容灾备份

OpenCloudOS 轻量级虚拟化引擎 LiKeX 介绍

OpenCloudOS

Linux 容器 rust

等保测评机构资质申请条件是什么?个人可以申请吗?

行云管家

等级保护 等保测评 等保测评机构

FDF循环互助游戏开发说明丨FDF循环互助游戏系统开发详细及案例源码

系统开发咨询1357O98O718

SpringBoot整合ElasticSearch

Geek_7ubdnf

Java elasticsearch

DAPP质押挖矿项目技术开发功能丨DeFI质押挖矿系统开发详细方案

I8O28578624

微信小程序自动化测试方案实践过程

Openlab_cosmoplat

开源社区 微信小程序测试

云原生+新技术,会碰撞出怎样的火花?

墨天轮

数据库 阿里云 Serverless 云原生 华为云

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