Windows Phone 7 的外设和重力感应

Windows Phone 7 的外设和重力感应

说明:这里只介绍Windows Phone的收音机和震动功能。(参照传智博客的视频而写)

一.Windows Phone 7 的外设

1.1  Windows phone 7的收音机功能的实现

实现收音机功能首先需要引用这个名字空间:
using Microsoft.Devices.Radio;

在实现收音机的功能之前,我们需要知道FMRadio是一个单例类,即它只有一个实例,因此它也为单例模式。我们不能再声明它的一个实例。

注:单例模式:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

单例模式的唯一实例是Instance.它有以下属性:

CurrentRegion

设置收音机所在地区,目前只支持美国,日本和欧洲

Frequency

设置收音机的频率

PowerMode

设置收音机的电源模式,开(on)或关(off)

SignalStrength

表示收音机的信号强度

FMRadio 还有两个枚举:

RadioPowerMode

表示电源模式,有两个枚举值 ON和OFF。

RadioRegion

表示收音机所在地区,有三个枚举值: Europe, Japan和 UnitedStates.

下面我们来看看如何通过代码实现收音机的功能。

首先我们设置一个FMRadio的变量它就等于Instance实例。

FMRadio myradio= FMRadio.Instance;

接着设置该变量(即FMRadio的实例)的电源模式为开(即打开收音机):

myradio.PowerMode = RadioPowerMode.On; //设置电源模式为开

之后还可以设置收音机的地区频率等:

myradio.CurrentRegion = RadioRegion.UnitedStates; //设置收音机所在地为US  myradio.Frequency = 100; //设置收音机的频率为100

设置完成以后以上便实现了一个收音机的基本功能。

1.2  Windows phone 7的振动实现

 实现振动效果需要引用该命名空间

using Microsoft.Phone.Devices;

实现振动只需要一句话:

 VibrateController.Default.Start(TimeSpan.FromSeconds(2));

这行代码表示振动以秒计(FromSeconds),振动两秒。同理还有FromDays, FromHours, FromMinutes等。

二、 实现Windows Phone  7的重力感应

 首先需要引用这个命名空间:

Using  Microsoft.Devices.Sensors;

接着我们实例化一个对象:

Accelerometer acc = new Accelerometer();

然后注册检测加速度变化的事件ReadingChanged:

acc.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(acc_ReadingChanged);//注册事件                              acc.Start();//启动重力加速

      当加速度发生改变时,便会出发ReadingChanged事件,但是由于调用事件的处理函数和当前运行的页面处于不同的线程(重力感应的事件处理函数在后台运行的),因此需要通过使用位于System.Windows.Deployment命名空间下的Dispatcher类,来调用位于当前页面线程的方法。具体代码如下:

void acc_ReadingChanged(object sender, AccelerometerReadingEventArgs e)          {              this.Dispatcher.BeginInvoke(new accdelegete(ACCchanged), e);          }

声明一个委托:

public delegate void  accdelegete (AccelerometerReadingEventArgse);

声明一个委托的代理方法:

void  ACCchanged(AccelerometerReadingEventArgs e)          {  //此处添加当加速度改变时要执行的代码(也就是想实现的功能)              XtextBox.Text = e.X.ToString();//将x轴方向的重力感应数据赋给TextBox              YtextBox.Text = e.Y.ToString();//将y轴方向的重力感应数据赋给TextBox              ZtextBox.Text = e.Z.ToString();//将z轴方向的重力感应数据赋给TextBox          }

这样便是实现了重力加速感应的应用。

(版权所有,转载请标明出处)

你可能感兴趣的:(Windows Phone 7 的外设和重力感应)