今年春天在拉斯xxx的MIX 10会议上我{dy}次知道了有关Windows Phone7的开发,我想分享我的想法。作为一名开发人员,Windows Phone7移动电话应用平台的问世无疑是令人感到非常的兴奋,因为它能让像那些熟悉C#和Silverlight开发的开发者可以马上用我现有的技能和工具的知识迅速的着手Windows Phone 7平台开发。另外,这些代码可以运行在多种平台,包括电话,网络,个人电脑和Xbox。这种代码复用的能力意味着大家的应用程序可以通过Windows Phone7的MarketPlace推送到数以百万的客户手中。现在向大家展示这个新的开发平台,以便对你开始进行Windows Phone的开发带来帮助。
新功能和用户界面
Windows Phone是微软软件一个的新起点。它的“3 screens + cloud”(即个人电脑,电话,电视加上互联网)的应用平台可以创建具备cloud-powered的用户体验。微软提供的这些功能来开发应用程序,可以使这些应用运行在多种设备,包括台式电脑,和Xbox上。
Windows Phone7的设计系统主题意味着你可以设计提供高性能的集成的用户体验。这些API允许你创建直观的应用程序,例如,如果你想添加一个期望有特定类型输入的TextBox,如URL或电话号码,你可以指定的电话自动改变布局,来使预期的字符方便存取。
????<TextBox.InputScope>
????????<InputScope>
????????????<InputScopeName NameValue=“Url“ />
????????</InputScope>
????</TextBox.InputScope>
</TextBox>
Windows Phone7提供了两种类型的用户界面框架:Silverlight的框架(详见)可让您快速创建丰富的和高度交互性的应用,XNA框架用于高性能应用平台(二维和三维等游戏)设计的。在这两种UI框架上开发的应用包括可以通过触摸或硬件按钮进行输入的捕获,媒体捕获和回放,可透过语言集成查询(LINQ)访问独立数据存储,获得功能,并获得云为基础的服务(如微软Windows Azure)。
基于Azure的云服务提供应用程序部署和更新功能,通知服务,身份服务,定位服务,地图,以及Xbox Live的整合。这些服务让最终用户在所有他们自己的设备(multiple phones, Xbox)以及其他用户之间共享他们的信息。
位置服务是特别有趣,因为目前的框架可以从提供商(全球定位系统,无线网络,或无线网络)那里得到位置,这取决于你需要的位置数据的准确定位程度。(有关详细信息,请参见如何:从位置服务中获取数据。)
例如,如果你需要高xx度的位置,而且设备每移动20米就需要进行数据更新时,您可以使用下面的代码:
watcher.MovementThreshold = 20;
watcher.PositionChanged
+=????new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
watcher.Start();
void watcher_PositionChanged(
object sender, GeoPositionChangedEventArgs<GeoCoordinate> e){
?? Deployment.Current.Dispatcher.BeginInvoke(() => MyPositionChanged(e));
}
void MyPositionChanged(GeoPositionChangedEventArgs
<GeoCoordinate> e){
????????LatitudeTextBlock.Text = e.Position.Location.Latitude.ToString(“0.000“);
????????LongitudeTextBlock.Text = e.Position.Location.Longitude.ToString(“0.000“);
}
多点触摸输入是现代销售的{zd0}点之一。这里你可以学会如何使用Manipulation Event在Windows Phone7中处理多触摸事件。假设Windows Phone页面上有一个矩形:
????<Rectangle
????????Name=“rectangle“
????????Width=“200“ Height=“200“
????????Fill=“Blue“ Stroke=“Blue“ StrokeThickness=“1“ />
</Canvas>
ManipulateDelta事件处理程序如下所示:
private TranslateTransform translation;
private ScaleTransform scale;
public MainPage()
{
?? InitializeComponent();
?? this.ManipulationDelta += this.PhoneApplicationPage_ManipulationDelta;
?? this.transformGroup
= new TransformGroup();?? this.translation = new TranslateTransform();
?? this.scale = new ScaleTransform();
?? this.transformGroup.Children.Add(this.scale);
?? this.transformGroup.Children.Add(this.translation);
?? this.rectangle.RenderTransform
}
void PhoneApplicationPage_ManipulationDelta(
object sender,??ManipulationDeltaEventArgs e){
??????// Scale the rectangle.
??????this.scale.ScaleX *= e.DeltaManipulation.Scale.X;
??????this.scale.ScaleY *= e.DeltaManipulation.Scale.Y;
????????????
??????// Move the rectangle.
??????this.translation.X += e.DeltaManipulation.Translation.X;
??????this.translation.Y += e.DeltaManipulation.Translation.Y;
}
当您运行这段代码时,可以移动上的矩形。如果您的开发计算机支持多触摸或者如果你已经部署到实际设备,还可以使用两个手指调整矩形大小。
Runtime API和硬件
Windows Phone7的Runtime API集可以让您开发的用户体验与整体的用户界面主题相一致。这些API使您可以访问硬件功能,如,照册和视频媒体,相机,电话服务,定位服务和通知服务。
Windows Phone7的硬件规格规定的{zd1}硬件要求,设备制造商必须支持。例如,所有都提供一个500万像素带的摄像头,4个或更多的接触点,以及DirectX 9硬件加速。设备必须支持分辨率为480 × 320或800 × 480。在硬件规格向你保证,关键硬件功能将提供,在所有的设备以一个一致的方式通过的Runtime API。例如,这就是你能获得的加速度,并显示有关的方向信息:
accelerometer.ReadingChanged +=
????new EventHandler<AccelerometerReadingAsyncEventArgs>(accelerometer_ReadingChanged);
accelerometer.Start();
void accelerometer_ReadingChanged(
object sender, AccelerometerReadingAsyncEventArgs e){
????????????????Deployment.Current.Dispatcher.BeginInvoke(() => MyReadingChanged(e));
}
void MyReadingChanged(AccelerometerReadingAsyncEventArgs e)
{
????????????statusTextBlock.Text
????????????XTextBlock.Text = e.Value.Value.X.ToString(“0.00“);
????????????YTextBlock.Text = e.Value.Value.Y.ToString(“0.00“);
????????????ZTextBlock.Text = e.Value.Value.Z.ToString(“0.00“);
}
关于加速度计的细节,您可以点击这里:
入门
要开始开发Windows Phone7应用,您将需要Windows Phone开发工具。作为开发工具的一部分,你可以使用Visual Studio 2010 Express for Windows Phone或者Windows Phone Add-in for Visual Studio如果您已经有Visual Studio 2010的话。如果你想写XNA-based应用程序,您还需要Expression Blend4,XNA Game Studio。(了解关于为Windows Phone创建{dy}个XNA-based应用)
这些工具可以从微软网站。此外,您可以下载免费的开发工具,以便得到设备仿真器和Visual Studio项目模板。
http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&displaylang=en
设计和开发你的应用程序将作为您的Silverlight应用程序。然后在模拟器上测试,或部署到测试设备上。
当您完成您的应用程序时,你将会把这个项目打包到.xap应用程序包文件中。它包含应用程序运行所需要的所有的东西:应用程序本身、描述了应用程序如何使用目标电话设备的元数据,启动画面出现时的tile,应用程序图标以及授权条款。
获取你的应用程序
在您的应用程序可以提供给他人之前,你需要注册开发者门户服务。您需要使用你的Windows Live ID进行登录和确立你为WindowsPhone平台开发应用程序的开发者身份。在你的应用程序能够在Marketplace上可以被获取之前,你将会提供一个证书被用来标志你的应用,他们是在Windows电话市场上提供的。开发者门户网站还提供管理,计费和报告工具,让您可以找出有哪些用户在使用您的应用程序,同时可以知道你可以赚到多少钱。
一旦你已经打包并签署您的应用程序,您提交给开发者门户网站认证。这一过程将验证申请符合目标市场的法律,法规,不滥用上存储的用户信息,并普遍表现良好(例如,不过度使用周期,不消耗,不干预电话的核心功能如打电话的能力)。
关于如何获取报酬的问题是每个开发者都非常关心的问题。你可以选择开发免费,付费,或“freemium”(先试后买)的应用程序。当您发布您的应用程序时你可以决定在开发门户网站上的收费结构。终端用户可以通过信用卡支付或通过移动运营商结算。应用程序开发人员占到收入的70%。
通过Marketplace你可以部署应用程序更新,其他的将自动向用户推送。当需要更新应用时,用户将会被通知并询问他们是否要更新他们设备上的应用。
试试看
在Windows Phone7平台上进行应用程序开发看起来是一件令人兴奋的事。因为现在你可以使用你现有的技能和工具,但你也可以得到创新,而且从你的应用程序开发中赚到一些钱。微软已经提供了一个环境,从编码到使您的应用程序可以销售,而且可以跟踪你的应用程序被用户使用的情况,而且还提供更新