Accelerometer
Accelerometer API用來擷取重力加速感應器的資料,從而用來開發遊戲等程式。
if (am != null)
am.Stop();
am = new Accelerometer();
am.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(am_ReadingChanged);// 監控重力加速資料。
try//因為啟動時,如果出錯會拋出異常,所以要用try塊來處理。
{
am.Start();//開始擷取資料
}
catch(AccelerometerFailedException e)
{
}
am.Stop();//停止擷取資料。
void am_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
//擷取數。
}
Location Service
定位API,提供了GPS、WIFI、LBS等多種方式擷取定位元據的方式。並且可以 同時使用一種或多種方種方式來擷取定位元據。
watcher = new GeoCoordinateWatcher (GeoPositionAccuracy.Default);
watcher.MovementThreshold = 35;// 相對於最後一個 PositionChanged 事件中的座標必須移動的距離(以米為單位),移動該距離之 後位置提供者將引發另一個 PositionChanged 事件。
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>> (watcher_PositionChanged);//監控定位元據變化
watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs> (watcher_StatusChanged);//監控服務狀態變化
watcher.Start();//啟動定位服務來擷取資料。但這時不一定服務可用,或者 等待啟動時間過久,這時就可以調用帶逾時的啟動方法,如果逾時,就停止啟動 。
watcher.TryStart(true, TimeSpan.FromMilliseconds(5000));
if (watcher.Status == GeoPositionStatus.Ready)
this.PageTitle.Text = "service start";
else
this.PageTitle.Text = "service not start";
watcher.Stop();//停止服務。
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
//可以得到的定位元據
e.Position.Location.Altitude.ToString("0.000")
e.Position.Location.Latitude.ToString("0.000")
e.Position.Location.Longitude.ToString("0.000")
e.Position.Location.Speed.ToString("0.000");
}
void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
e.Status.ToString();//擷取服務狀態
}
因為是在模擬器上,以上這兩個介面其實都是停用,但是如果要開發程式 過程中,一定要用這些資料又怎麼辦呢?其實WP7上又提供了另外的方法可以虛擬 這些裝置來接收類比資料。這樣就可以在開發遊戲的時候用這樣的方法來測試自 已的遊戲了。
FM Radio
WP7中提供了收音機的API,由此可以看出來,未來真機裡的是有收音機的。這 個收音機的API是singleton模式的,也就是說一個應用只能有一個收音機執行個體。 不過目能夠收聽到的地區只有三個:Europe、Japan、United States。
FMRadio radio = FMRadio.Instance;
radio.CurrentRegion = RadioRegion.Europe;
radio.Frequency = 100.5;
radio.PowerMode = RadioPowerMode.On;
Vibrate Controller
震動控制器用來啟動和停止WP7上的震動器。
VibrateController vc = VibrateController.Default;
vc.Start(TimeSpan.FromMilliseconds(100));
vc.Stop();
在WP7有提供的裝置介面看來還是挺多的,但是卻一直沒發現藍芽、WIFI等的 介面,不知道是WP7上沒有這些裝置,或者是不提供這些介面?還是因為是beta版 的sdk沒有加進來呢?