本文是“Windows Phone 7 開發 31 日談”系列的第12日。
昨天,我們談到了Windows Phone的加速感應器,以及如何類比一個真實裝置來為我們提供資料。今天,我們來談談震動控制器(VibrateController)以及向使用者提供者中正在發生的事情的反饋。
告訴某人如何使他的手機震動會立即引發一些沒趣兒的笑話,所以,在我提及15次“震動”之前,會將他們帶出到你的系統之外。呵呵,開始吧……我可以等。
為什麼要使手機震動?
有很多很多愚蠢和/或不合適的原因來讓一個手機震動。然而,本文的目的是講述一些讓手機震動的具體原因。
遊戲反饋
讓我們先從一個明顯的例子入手:遊戲。當你玩兒遊戲時,可能不能一直為使用者提供他們所需的所有資訊。(尤其是他們的手指在螢幕上時。)給他們一些觸覺反饋可以讓他們知道他們正在被攻擊或是有一些需要他們注意的東西。
按鈕反饋
這個對你來說可能非常普通,但對於你程式中的每個按鈕來說,觸覺反饋可以讓使用者得知他們按下了相應的按鈕。Windows Phone中預設按鈕會在被按下時變為一種單色,但很多時候使用者並不能確定他們是否點擊了它(尤其是這個操作需要幾秒的時候)。給他們提供一個快速的震動可以讓他們知道他們達到了自己的目的。
推播通知
另一個很明顯的,但是震動反饋卻沒有被充分利用到的時機是推播通知。預設時,如果你收到一封電子郵件,簡訊息等等,你的電話會震動(或響鈴)。我們可以在程式中利用這些相同的使用者體驗。當使用者因為某事被警告時,可以讓手機震動。這在你的程式處於被動狀態時尤為重要。例如,一個程式在跟蹤你的位置而你正在穿過鄰居家。如果訊號消失,或者是到達了目標距離,只需一個震動就可以讓使用者無須看他們的手機便知道了。同樣還是這個例子,你甚至可以每1/4英裡就向他們反饋一次,那樣他們就會意識到自己走了有多遠。
如何使手機震動?
太感謝了,這難以置信地簡單。你只需要2行代碼就能實現,但你會花很多時間來調整從而滿足你的具體需求。這是最基本的代碼:
VibrateController vc = VibrateController.Default;
vc.Start(TimeSpan.FromMilliseconds(100));
震動多長時間?
對於具體的提示應該震動多長時間沒有一個統一的標準,但我會遵從一些規則,現在和你分享一下:
- 對於一個按鈕點擊來說1/10秒比較合適(這也是VibrateController可以震動的最短時間)。
- 2秒=你的使用者會說“我的電話到底是怎麼了?”。2秒對於任何一個提示都太長了。
- 300毫秒(約為1/3秒)貌似是一個穩定的震動提示的合適時間。這樣你的使用者才不會認為電話出了毛病
- 快速的脈衝震動是讓使用者知道正在發生的事情的另一種好方法。我在代碼中包含了這個例子,但如果想更清晰地瞭解我是如何做的,來看看我的這篇關於“如何在SilverLight中建立一個SetTimeout函數”的教程。
下載範例程式碼
在接下來的幾天裡我們會迎來一些重量級的話題,包括位置服務和墓碑機制。請在這個系列的任意文章中留下評論來告訴我你是如何想的!
原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-12-Making-A-Phone-Vibrate.aspx
如果大家喜歡我的文章,請點擊“推薦”,謝謝!