写点什么

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

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

关注

评论

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

SpringCloudRPC远程调用核心原理:代理模式与RPC客户端实现类

小Q

Java 学习 架构 面试

因你不同,2021 阿里云开发者大会重磅开启 @ 所有开发者!

阿里巴巴云原生

开发者 云原生 活动

Flink CEP 监测刷屏用户

五分钟学大数据

flink 5月日更

音视频开发视频和视频帧:ffmpeg的RTMP推流

赖猫

音视频 ffmpeg 推流 RTMP RTSP

面试让HR都能听懂的MySQL锁机制详解

linux大本营

MySQL 数据库 Linux 后台开发

C语言与C++学习路线、书籍、视频推荐和资料,值得收藏!

C语言与CPP编程

c++ 学习 C语言 视频 资料

架构实战营 - 模块 4- 作业

carl

模块四作业

Chris Cheng

架构实战营

消费者剩余:你愿意花多少钱买一件东西?

石云升

创业 产品 职场经验 5月日更

领域驱动设计(DDD)

码语者

DDD

Redis后端之Redis持久化

赖猫

redis 后端 LinuxC/C++

Springboot结合Netty实战聊天系统

Damon

音视频

前端领域的数据状态统一管理机制

鲸品堂

大前端 数据 流程图 state

如何模拟弱网环境?

运维研习社

Linux 运维 网络 5月日更

一文读懂微前端架构

EAWorld

android插件化面试,渣本逆袭大厂面经分享,震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

Rust从0到1-集合-Hash Map

rust hashmap 集合 Collections hash map

手撕友商7nm FPGA?英特尔“亲儿子”上阵

E科讯

Flink常见数据源

大数据技术指南

大数据 flink 5月日更

Nextcloud一站式体验

白粥

NAS Nextcloud

你是否想要自由地构筑世界?51WORLD助力数字孪生开发者快速成长

Meta 小元

开发者工具 开发者关系 数字孪生 全要素场景

Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域

阿里巴巴云原生

大数据 容器 开发者 云原生 存储

博睿数据与阿里云签订云原生核心合作伙伴计划,推动企业智能运维落地

阿里巴巴云原生

人工智能 容器 微服务 运维 云原生

上架Google Play应用如何适配Android 11?

YonBuilder低代码开发平台

看完这个刷题笔记与代码规范,距大厂又近了一步!值得收藏!

C语言与CPP编程

c++ 程序人生 算法 C语言 代码规范

金三银四面试结束后,整理的1000道Java面试题及答案

Java 程序员 架构 面试

Android面试题!深入理解JVM的核心知识点,值得一读!

欢喜学安卓

android 程序员 面试 移动开发

英特尔PK赛灵思,完美胜出!Agilex™ FPGA迎来大规模量产

E科讯

百亿级图数据在快手安全情报的应用与挑战

NebulaGraph

图数据库 大厂实践

英特尔Agilex FPGA大规模量产出货,正面硬杠赛灵思

E科讯

60个适合练手的C语言/C++项目,值得收藏!

C语言与CPP编程

c++ 源码 C语言

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