Windows phone 7之启动器与选择器

和android不同,wp7不允许调用本机的功能结合自己的程序完成一些工作,要想使用那些功能只能调用系统封装好的接口,这些接口会启动系统的功能,基本都是带界面的,所以无法嵌入逻辑中,只能中断当前逻辑,把操作权交给系统。如果是启动器,则程序逻辑到此结束,如果是选择器,则等待用户操作完毕,取得返回结果,继续下面的逻辑。那么如何区分启动器和选择器呢,只能从功能上区分,带有返回结果的就是选择器,无返回结果,只是启动系统的功能的便是启动器。启动器和选择器被封装到Microsoft.Phone.Tasks命名空间中,下面是所有启动器和选择器的类列表

AddressChooserTask

允许应用程序启动“联系人”应用程序。使用此方法获取用户选择的联系人的物理地址。

BingMapsDirectionsTask

允许应用程序启动“Bing 地图”应用程序,指定要显示其行车路线的开始位置或结束位置,或者同时指定两者。

BingMapsTask

允许应用程序启动 Bing 地图应用程序,并定位于 Center 属性指定的位置或用户的当前位置。如果设置了 SearchTerm,则会在地图上标记与搜索术语匹配的位置。

CameraCaptureTask

允许应用程序启动“相机”应用程序。使用此方法可允许用户通过您的应用程序拍摄照片。

ConnectionSettingsTask

允许应用程序启动一个“设置”对话框,该对话框允许用户更改设备的网络连接设置。

EmailAddressChooserTask

允许应用程序启动“联系人”应用程序。使用此方法获取用户选择的联系人的电子邮件地址。

EmailComposeTask

允许应用程序通过显示的新邮件启动“电子邮件”应用程序。使用此方法可允许用户通过您的应用程序发送电子邮件。

GameInviteTask

允许应用程序显示一个游戏邀请屏幕,该屏幕允许用户邀请玩家加入多玩家游戏会话。

MarketplaceDetailTask

允许应用程序启动 Windows Phone 商城 客户端应用程序并显示指定产品的详细信息页面。

MarketplaceHubTask

允许应用程序启动 Windows Phone 商城 客户端应用程序。

MarketplaceReviewTask

允许应用程序启动 Windows Phone 商城 客户端应用程序并显示指定产品的评论页面。

MarketplaceSearchTask

允许应用程序启动 Windows Phone 商城 客户端应用程序并显示指定搜索术语的搜索结果。

MediaPlayerLauncher

允许应用程序启动媒体播放器。

PhoneCallTask

允许应用程序启动“手机”应用程序。使用此方法可允许用户通过您的应用程序拨打电话。

PhoneNumberChooserTask

允许应用程序启动“联系人”应用程序。使用此方法可获取用户选择的联系人的电话号码。

PhotoChooserTask

允许应用程序启动“照片选择器”应用程序。使用此方法可允许用户选择照片。

SaveContactTask

提供用于启动联系人应用程序以及使用户能够保存联系人的方法和事件。

SaveEmailAddressTask

允许应用程序启动“联系人”应用程序。使用此方法可允许用户将应用程序中的电子邮件地址保存到新的或现有的联系人。

SavePhoneNumberTask

允许应用程序启动“联系人”应用程序。使用此方法可允许用户将应用程序中的电话号码保存到新的或现有的联系人。

SaveRingtoneTask

使应用程序能够启动铃声应用程序。使用 SaveRingtoneTask 可允许用户将应用程序中的铃声保存到系统铃声列表。

SearchTask

允许应用程序启动“Web 搜索”应用程序。

ShareLinkTask

允许应用程序启动一个对话框,该对话框允许用户在其选择的社交网络上共享链接。

ShareStatusTask

允许应用程序启动一个对话框,该对话框允许用户在其选择的社交网络上共享状态信息。

SmsComposeTask

通过显示的新短信启动“短信”应用程序。

WebBrowserTask

允许应用程序启动“Web 浏览器”应用程序。

上面是各种启动器和选择器的类名和简单家少,我在这里列举几个简单的例子,这些都是比较简单的调用,不会有任何复杂的程序,wp7设计之初就已经决定,我们无法在这上面大展手脚。我也就没必要都演示一遍了。

先写两个选择器的实例

PhoneCallTask

PhoneCallTask task = new PhoneCallTask();
task.PhoneNumber = "15000001245";
task.DisplayName = "dhc";
task.Show();

运行界面如下

WebBrowserTask

WebBrowserTask task = new WebBrowserTask();
task.URL = "http://www.baidu.com";
task.Show();

运行结果

MarketplaceHubTask

MarketplaceHubTask task = new MarketplaceHubTask();
task.ContentType = MarketplaceContentType.Applications;
task.Show();

运行界面如下

下面写两个选择器的实例

PhoneNumberChooserTask

下面是PhoneNumberChooserTask选择器与SmsComposeTask启动器结合使用的代码,选择一个电话号码,然后启动短信功能,并默认写入"这事短信"内容

PhoneNumberChooserTask contactsTask = new PhoneNumberChooserTask();
            contactsTask.Completed += (s, evt) =>
            {
                if (evt.Error == null && evt.TaskResult == TaskResult.OK)
                {
                    SmsComposeTask smsTask = new SmsComposeTask();
                    smsTask.Body = "这事短信.";
                    smsTask.To = evt.PhoneNumber;
                    smsTask.Show();
                }
            };
            contactsTask.Show();

运行代码,选择一个电话,结果如下

CameraCaptureTask

CameraCaptureTask task = new CameraCaptureTask();
            task.Completed += (s, evt) =>
            {
                if (evt.Error == null && evt.TaskResult == TaskResult.OK)
                {
                    BitmapImage bmpImage = new BitmapImage();
                    bmpImage.SetSource(evt.ChosenPhoto);
                    image.Source = bmpImage;
                }
            };
            task.Show();

真机截图不方便,模拟器中照相机启动器运行效果如下图

 

PhotoChooserTask

PhotoChooserTask task = new PhotoChooserTask();;        
            task.Completed += new EventHandler<PhotoResult>(pc_Completed);
            task.Show();
void pc_Completed(object sender, PhotoResult e) 
        { 
            if (e.TaskResult == TaskResult.OK) 
            { 
                BitmapImage bmpSource = new BitmapImage(); 
                bmpSource.SetSource(e.ChosenPhoto); 
                image.Source = bmpSource; 
            } 
            else 
            { 
                image.Source = null; 
            } 
        }

运行结构如下图

好了就介绍这么多吧,剩下的自己试试就行了,很假单的,都是这种形式

本来不打算这么早介绍纯WP7的东西,但是又怕别人说我是混人气,就提前写了这一篇,下一篇还是回到比较重要的基础知识上,初学者别着急,会让你们满意的,有经验的童鞋也别急,会写你们感兴趣的东西,大牛的东西在后面呢。

posted @ 2012-04-12 22:02  董贺超  阅读(1471)  评论(1编辑  收藏  举报