31天學(xué)會Windows Phone 7開發(fā):使手機(jī)震動
上一篇,我們談到了Windows Phone的加速感應(yīng)器,以及如何模擬一個真實(shí)設(shè)備來為我們提供數(shù)據(jù)。本文,我們來談?wù)務(wù)饎涌刂破鳎╒ibrateController)以及向用戶提供程序中正在發(fā)生的事情的反饋。
告訴某人如何使他的手機(jī)震動會立即引發(fā)一些沒趣兒的笑話,所以,在我提及15次“震動”之前,會將他們帶出到你的系統(tǒng)之外。
為什么要使手機(jī)震動?
有很多很多愚蠢和/或不合適的原因來讓一個手機(jī)震動。然而,本文的目的是講述一些讓手機(jī)震動的具體原因。
游戲反饋
讓我們先從一個明顯的例子入手:游戲。當(dāng)你玩兒游戲時,可能不能一直為用戶提供他們所需的所有信息。(尤其是他們的手指在屏幕上時。)給他們一些觸覺反饋可以讓他們知道他們正在被攻擊或是有一些需要他們注意的東西。
按鈕反饋
這個對你來說可能非常普通,但對于你程序中的每個按鈕來說,觸覺反饋可以讓用戶得知他們按下了相應(yīng)的按鈕。Windows Phone中默認(rèn)按鈕會在被按下時變?yōu)橐环N單色,但很多時候用戶并不能確定他們是否點(diǎn)擊了它(尤其是這個操作需要幾秒的時候)。給他們提供一個快速的震動可以讓他們知道他們達(dá)到了自己的目的。
推送通知
另一個很明顯的,但是震動反饋卻沒有被充分利用到的時機(jī)是推送通知。默認(rèn)時,如果你收到一封電子郵件,短信息等等,你的電話會震動(或響鈴)。我們可以在程序中利用這些相同的用戶體驗(yàn)。當(dāng)用戶因?yàn)槟呈卤痪鏁r,可以讓手機(jī)振動。這在你的程序處于被動狀態(tài)時尤為重要。例如,一個程序在跟蹤你的位置而你正在穿過鄰居家。如果信號消失,或者是到達(dá)了目標(biāo)距離,只需一個震動就可以讓用戶無須看他們的手機(jī)便知道了。同樣還是這個例子,你甚至可以每1/4英里就向他們反饋一次,那樣他們就會意識到自己走了有多遠(yuǎn)。
如何使手機(jī)震動?
太感謝了,這難以置信地簡單。你只需要2行代碼就能實(shí)現(xiàn),但你會花很多時間來調(diào)整從而滿足你的具體需求。這是最基本的代碼:
- VibrateController vc = VibrateController.Default;
- vc.Start(TimeSpan.FromMilliseconds(100));
震動多長時間?
對于具體的提示應(yīng)該震動多長時間沒有一個統(tǒng)一的標(biāo)準(zhǔn),但我會遵從一些規(guī)則,現(xiàn)在和你分享一下:
1. 對于一個按鈕點(diǎn)擊來說1/10秒比較合適(這也是VibrateController可以震動的最短時間)。
2. 2秒=你的用戶會說“我的電話到底是怎么了?”。2秒對于任何一個提示都太長了。
3. 300毫秒(約為1/3秒)貌似是一個穩(wěn)定的振動提示的合適時間。這樣你的用戶才不會認(rèn)為電話出了毛病。
4.快速的脈沖震動是讓用戶知道正在發(fā)生的事情的另一種好方法。我在代碼中包含了這個例子,但如果想更清晰地了解我是如何做的,來看看我的這篇關(guān)于“如何在SilverLight中創(chuàng)建一個SetTimeout函數(shù)”的教程。
下載示例代碼
在接下來的幾篇文章里我們會迎來一些重量級的話題,包括位置服務(wù)和墓碑機(jī)制。
原作者:Jeff Blankenburg 譯者:金山崟霸
中文來源:http://www.cnblogs.com/porscheyin/archive/2010/12/22/1914287.html
英文來源:http://www.jeffblankenburg.com/2010/10/12/31-days-of-windows-phone-day-12-making-a-phone-vibrate/
【編輯推薦】