Task的使用
所有Task都有Show方法,调用Show方法启动任务,任务执行完毕一般会返回应用。所有任务都不是自动启动,而是需要用户手动点击启动,是WP7基于安全考虑,防止泄密、吸费等问题。无法用来实现批量发短信。所有Task都需要用户手动触发执行。这些Task监视工具都看不到,通过电脑摄像头看
SmsComposeTask:启动发送短信的任务,可以通过To、Body两个属性设置对方号码和短信内容。注意Show以后只是显示发送界面
1 SmsComposeTask sm = new SmsComposeTask(); 2 sm.Body = "对不起,你本月的余额非常的充足。请不要充值!"; 3 sm.To = "10086";//可以多人发送sm.To = "10086;10000;110" 4 sm.Show();
需要用户点手状的按钮确定发送
EmailComposeTask:发邮件的任务,可以通过Subject 、 Body 、To 、 Cc属性设置标题、内容、收件人、抄送。使用该功能需要设置下邮箱账户
1 EmailComposeTask et = new EmailComposeTask(); 2 et.Subject = "主题"; 3 et.Body = "正文"; 4 et.To = "123@123.com"; 5 // et.Cc = "抄送"; 6 et.Show();
PhoneCallTask:拨打电话的任务,可以通过PhoneNumber、DisplayName属性设置拨打的号码和显示的名称。实现“在软件中查找到商家以后点击号码直接拨号”
1 PhoneCallTask pct = new PhoneCallTask(); 2 pct.DisplayName = "移动客服"; 3 pct.PhoneNumber = "10086"; 4 pct.Show();
WebBrowserTask:打开网页的任务,可以通过URL属性设置要打开网页的地址。实现二维码软件的“在线购买”功能
1 WebBrowserTask webShow = new WebBrowserTask(); 2 webShow.Uri = new Uri("http://www.baidu.com"); 3 webShow.Show();
有一些需要得到执行结果的任务,这些任务一般都从ChooserBase继承,监听Completed事件,从e中可以获得执行结果,所有e任务都有属性TaskResult表示执行结果(OK执行成功,Cancel任务被取消),Error表示执行过程中的异常信息(如果没有异常就是null)。
SavePhoneNumberTask:保存联系人(People)号码。
1 SavePhoneNumberTask saveNum = new SavePhoneNumberTask(); 2 saveNum.PhoneNumber = "10086"; 3 saveNum.Completed += new EventHandler<TaskEventArgs>(saveNum_Completed); 4 saveNum.Show(); 5 } 6 7 void saveNum_Completed(object sender, TaskEventArgs e) 8 { 9 if (e.TaskResult==TaskResult.OK) 10 { 11 MessageBox.Show("保存成功"); 12 } 13 else 14 { 15 MessageBox.Show("未保存"); 16 } 17 }
PhoneNumberChooserTask:选择电话号码,e. PhoneNumber为选择的电话号码。可以实现支付宝手机客户端的“给手机充值”功能中让用户选择用户,自动填充手机号码。
1 PhoneNumberChooserTask numberChooser = new PhoneNumberChooserTask(); 2 numberChooser.Completed += new EventHandler<PhoneNumberResult>(numberChooser_Completed); 3 numberChooser.Show(); 4 } 5 6 void numberChooser_Completed(object sender, PhoneNumberResult e) 7 { 8 if (e.TaskResult==TaskResult.OK) 9 { 10 MessageBox.Show(e.DisplayName+"="+e.PhoneNumber);//移动客服=10086 11 } 12 }
以下CameraCaptureTask等和摄像头、音乐、图片等和媒体相关的要用WPConnect连接,不能用Zune连接。
CameraCaptureTask启动拍照任务,e. ChosenPhoto为拍照的图片流。(模拟器用电脑摄像头模拟手机摄像头,如果电脑没有摄像头可以拖入图片或者wmv视频
1 CameraCaptureTask camTask = new CameraCaptureTask(); 2 camTask.Completed += new EventHandler<PhotoResult>(camTask_Completed); 3 camTask.Show(); 4 } 5 6 void camTask_Completed(object sender, PhotoResult e) 7 { 8 if (e.TaskResult==TaskResult.OK) 9 { 10 BitmapImage img = new BitmapImage(); 11 img.SetSource(e.ChosenPhoto);//获取图片的数据流 12 //放到一个image容器中 13 image1.Source = img; 14 } 15 }
PhotoChooserTask选择图片的任务, e. ChosenPhoto为拍照的图片流。PixelHeight、PixelWidth属性为要选择图片的尺寸,如果设置了这两个属性则会提供图片截取的功能(可以用来实现上传QQ头像的功能),ShowCamera为是否允许用户拍照。实现微博的插入图片功能。
1 PhotoChooserTask photoChoose = new PhotoChooserTask(); 2 photoChoose.ShowCamera = true;//开启手机摄像头 3 photoChoose.PixelHeight = 200; 4 photoChoose.PixelWidth = 200; 5 photoChoose.Completed += new EventHandler<PhotoResult>(photoChoose_Completed); 6 photoChoose.Show(); 7 } 8 9 void photoChoose_Completed(object sender, PhotoResult e) 10 { 11 if (e.TaskResult == TaskResult.OK) 12 { 13 BitmapImage img = new BitmapImage(); 14 img.SetSource(e.ChosenPhoto);//获取图片的数据流 15 //放到一个image容器中 16 image1.Source = img; 17 } 18 }
Accelerometer,感应加速度的变化,Start方法启动,Stop方法停止,当加速度发生变化以后ReadingChanged事件触发。e.X、e.Y、e.Z得到加速度,右边是坐标系
1 //添加引用 Microsoft.Devices.Sensors 2 Accelerometer acceler = new Accelerometer(); 3 acceler.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(acceler_CurrentValueChanged); 4 acceler.Start(); 5 6 } 7 8 void acceler_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e) 9 { 10 Dispatcher.BeginInvoke(() => { 11 textBlock1.Text = e.SensorReading.Acceleration.X + "," + e.SensorReading.Acceleration.Y + "," + e.SensorReading.Acceleration.Z; 12 }); 13 }