技术开发 频道

做Windows Phone 7开发前你要清楚的事

  【IT168技术】今年春天在拉斯维加斯的MIX 10会议上我第一次知道了有关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 Text="http://www.microsoft.com">
    
<TextBox.InputScope>
        
<InputScope>
            
<InputScopeName NameValue="Url" />
        
</InputScope>
    
</TextBox.InputScope>
</TextBox>

  Windows Phone7提供了两种类型的用户界面框架:Silverlight的框架(详见)可让您快速创建丰富的和高度交互性的应用,XNA框架用于高性能应用平台(二维和三维等游戏)设计的。在这两种UI框架上开发的应用包括可以通过触摸或硬件按钮进行输入的捕获,媒体捕获和回放,可透过语言集成查询(LINQ)访问独立数据存储,获得手机功能,并获得云为基础的服务(如微软Windows Azure)。

  基于Azure的云服务提供应用程序部署和更新功能,通知服务,身份服务,定位服务,地图,以及Xbox Live的整合。这些服务让最终用户在所有他们自己的设备(multiple phones, Xbox)以及其他用户之间共享他们的信息。

  位置服务是特别有趣,因为目前的框架可以从提供商(全球定位系统,无线网络,或无线网络)那里得到位置,这取决于你需要的位置数据的准确定位程度。(有关详细信息,请参见如何:从位置服务中获取数据。)

  例如,如果你需要高精确度的位置,而且设备每移动20米就需要进行数据更新时,您可以使用下面的代码:

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
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");
}

  多点触摸输入是现代手机销售的最大点之一。这里你可以学会如何使用Manipulation Event在Windows Phone7中处理多触摸事件。假设Windows Phone页面上有一个矩形:

<Canvas>
    
<Rectangle
        Name
="rectangle"
        Width
="200" Height="200"
        Fill
="Blue" Stroke="Blue" StrokeThickness="1" />
</Canvas>

  ManipulateDelta事件处理程序如下所示:

private TransformGroup transformGroup;
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
= this.transformGroup;  
}

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的硬件规格规定的最低硬件要求,设备制造商必须支持。例如,所有手机都提供一个500万像素带闪光灯的摄像头,4个或更多的接触点,以及DirectX 9硬件加速。设备必须支持屏幕分辨率为480 × 320或800 × 480。在硬件规格向你保证,关键硬件功能将提供,在所有的设备以一个一致的方式通过手机的Runtime API。例如,这就是你能获得的加速度传感器,并显示有关手机的方向信息:

AccelerometerSensor accelerometer = AccelerometerSensor.Default;
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
= accelerometer.State.ToString();
            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 Phone加速度计概述

  入门

  要开始开发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创建第一个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电话市场上提供的。开发者门户网站还提供管理,计费和报告工具,让您可以找出有哪些用户在使用您的应用程序,同时可以知道你可以赚到多少钱。

  一旦你已经打包并签署您的应用程序,您提交给开发者门户网站认证。这一过程将验证申请符合目标市场的法律,法规,不滥用手机上存储的用户信息,并普遍表现良好(例如,不过度使用CPU周期,不消耗电池,不干预电话的核心功能如打电话的能力)。

  关于如何获取报酬的问题是每个开发者都非常关心的问题。你可以选择开发免费,付费,或“freemium”(先试后买)的应用程序。当您发布您的应用程序时你可以决定在开发门户网站上的收费结构。终端用户可以通过信用卡支付或通过移动运营商结算。应用程序开发人员占到收入的70%。

  通过Marketplace你可以部署应用程序更新,其他的将自动向用户推送。当需要更新应用时,用户将会被通知并询问他们是否要更新他们设备上的应用。

  试试看

  在Windows Phone7平台上进行应用程序开发看起来是一件令人兴奋的事。因为现在你可以使用你现有的技能和工具,但你也可以得到创新,而且从你的应用程序开发中赚到一些钱。微软已经提供了一个环境,从编码到使您的应用程序可以销售,而且可以跟踪你的应用程序被用户使用的情况,而且还提供更新。

0
相关文章