發表文章

目前顯示的是 3月, 2011的文章

在WP7中方向感應器的偵測(Accelermoter)

在目前新的手機上都配有方向感應器(或是稱加速度計?),很常見的用途是當你的手機改變方向的時候,畫面也可以隨著方向的變更進行自動的切換,這真是一個很優的功能;或是一些類似賽車等的小遊戲,甚至不需要方向鍵來操控方向,直接用偵測器來偵測手機擺動的方向,玩起來更有感覺;那麼在WP7中應該要怎麼去抓目前手機的方向出來呢? 下面簡單的做個測試,首先要先引入命名空間 using Microsoft.Devices.Sensors; 之後利用Accelerometer類別就可以偵測了,主要必須要處理ReadingChanged的事件,例如下面的方式 try { Sensor = new Accelerometer(); Sensor.ReadingChanged += new EventHandler (Sensor_ReadingChanged); Sensor.Start(); tbState.Text = "Accelermoter detect started"; } catch (AccelerometerFailedException) { tbState.Text = "Start Acceleromter error"; } 事件處理的程式碼部分大致會像是下面這樣子 void Sensor_ReadingChanged(object sender, AccelerometerReadingEventArgs e) { this.Dispatcher.BeginInvoke(() => ReadingChanged(e)); } void ReadingChanged(AccelerometerReadingEventArgs e) { tbData.Text = "X: " + e.X.ToString() + Environment

在WP7複寫硬體返回鍵的動作

在WP7中的硬體按鍵中,返回鍵預設的功能是返回上一頁,或是返回上一個執行的App;而在開發WP7的應用程式時,有時我們必須去處理這個動作,例如說目前的頁面是給使用者填入資料用的,在接收到硬體返回鍵的動作時,應該要加以提醒使用者,以免離開後輸入的資料都不見了,畢竟在裝置上面打字不是一件舒服的事情的.. 那麼應該要怎麼去處理這個動作呢?程式碼的部分也很簡單,首先是掛載事件的處理 this.BackKeyPress += new EventHandler (SecondPag_BackKeyPress); 之後做相關的處理就可以了,比如說下面這個樣子 void SecondPag_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e) { if (!boltmp) { boltmp = true; e.Cancel = true; this.PageTitle.Text = "BackKey canceled"; } } 其中e.Cancel=True這行就是取消返回的動作了,是不是很簡單呢? 另外在頁面轉換的過程中,他是以環狀的方式在進行,也就是說當你用Navigate的方式去尋覽至一個頁面時,這個頁面就會被加入堆疊中,而按下back就會回到堆疊中記錄的上一個頁面,如果你的App使用情境跟這個方式有所牴觸的話,下面這邊有一篇很棒的文章可以參考喔,把Sample下載回來跑一下,就可以知道他是在做什麼的了 Solving Circular Navigation in Windows Phone Silverlight Applications