旗標知識網 Banner Advertisement
     
 
旗標出版 l 主題學習 l 訂閱電子報 l 網路購書 l 讀者服務 l 更正下載 l 教師服務 l 學校服務網 l 旗標購物網 l 旗景 l 旗訊
手機程式設計入門與應用 Android、iPhone、Windows Mobile
手機程式設計入門與應用 Android、iPhone、Windows Mobile

作者:陳彥文、彭亦暄著
書號:F0790
附件:附1片光碟片
定價:560 元
 
 
 
 
 
 
 
Android來電黑名單範例實作

Android來電黑名單範例實作

以下將實作 Android 手機的來電黑名單,只要在黑名單內的電話打來,程式會自動將其轉為靜音模式,而這些黑名單的資料會儲存在 SD 卡中的BlackList 資料夾中。在程式中,我們也將黑名單註冊為 Service,這樣即使退出了黑名單的程式也可以繼續保持黑名單功能。程式總共分為兩部分,第一部分為 Activity,用來讀取電話連絡人資訊以及設定黑名單,第二部分為Service,當有電話來電時會去檢查此來電是否為名單上的電話號碼,若是則將此通電話鈴聲設為靜音。程式結果如圖 13.3.1。

程式一開始會抓取手機的連絡人資料並顯示在電話簿的 Tab 中,程式碼如下:

利用 ContentResolver 來抓取系統中的連絡人資料,並將資料儲存在 ContactInfo 這個 List 中。如下:

接著顯示利用 Adapter 將 ContactInfo 顯示在電話簿的 Tab 中,如下:

接著系統去抓取在 SD 卡中是否有已存之黑名單列表,若有則讀取至黑名單 Tab 中,由於黑名單資料存放在 SD 卡中的 BlackList 資料夾下,故一開始必須檢查此資料夾是否存在,若不存在則要新建一資料夾,如下:

而我們將黑名單資料建立在 BlackList 資料夾下的 blackList.txt 中,所以接著檢查此檔案是否存在,若不存在則建立一個新檔案,若已有檔案存在則將檔案讀取至程式當中,如下:

抓取完後,同電話簿一樣將其顯示在黑名單 Tab 中。在範例中只要點擊電話簿的號碼即可將此號碼加入或移除黑名單,當號碼非黑名單時,點擊為加入黑名單,當號碼已經在黑名單時點擊即可移除黑名單。而在黑名單部分的號碼點擊後即可移除黑名單。下列程式碼為點擊電話簿時程式碼部份:

程式判斷此號碼是否在黑名單內,若是,則會呼叫 showDialog 來詢問使用者是否要將其移除黑名單,若否,則會詢問使用者是否要將此號碼加入黑名單。當使用者點擊黑名單 Tab 內的號碼時,則只有移除此號碼的功能,如下:

在此我們自訂了兩個警告視窗,定義如下:

當使用者選擇將號碼加入黑名單時就將此號碼加入 file_BlackList 當中,而當使用者選擇將號碼移除黑名單時則將此號碼自 file_BlackList 移除,由於加入以及移除都會更改黑名單的狀態,所以在此呼叫自定義的 UpdateBlackListFile()來更新黑名單狀態,如下:

其中,adapterBlackList.notifyDataSetChanged()方法讓黑名單的 adapter 做更新的動作,接著將黑名單內的資料寫入 blackList.txt 當中。當黑名單設定完成後,利用 Menu 來啟動或是停止黑名單的 Service,當啟動 Service 後,利用 finish()將黑名單程式結束掉並且啟動自訂的 PhoneService 服務,在服務啟動時會抓取存在 SD 卡內的黑名單資料,接著利用 PhoneStateListener 來監聽電話狀態,當有電話打進來時,PhoneService 會確認此號碼是否在黑名單上,若是則更改為靜音模式,當電話結束後再將電話鈴聲轉為普通模式,程式碼如下:

而設定靜音模式則需使用到 AudioManager 的 setRingerMode 來設定為 NORMAL 或是 SILENT。而在收到為 CALL_STATE_RINGING 狀態時,則會去檢查號碼是否為黑名單,檢查的 IsInBlackList 如下:

由於在檔案中儲存的格式為「名字 : 電話號碼」,所以我們利用 split()方法將讀進來的黑名單資料切成一個陣列,分別放置名字和電話號碼,接著比較打進來的號碼是否在黑名單內。
以上這個判斷黑名單號碼是針對 HTC Hero 來撰寫,由於在 Hero 中電話簿號碼格式與打電話進來系統提供的號碼格式相同,所以利用 split()方法切出的號碼直接可拿來做比對。而在 2.0 模擬器中,從電話簿抓到的號碼格式為「x-xxx-xxx」這種格式,但是打電話進來時系統所提供的號碼格式沒有號碼中間的「-」,所以若要在模擬器上比對號碼的話還需要多一個程序將「-」給移除掉。

 
Down Logo 旗 標 出 版 股 份 有 限 公 司   100 台北市中正區杭州南路一段15-1號19樓 TEL: 02-2396-3257
Copyright © 2005 Flag Publishing Co.,Ltd. All Rights Reserved    版權所有聯絡我們合作提案隱私權政策
 
現在購買《DSLR 完全探索》《數位相片編修聖經》《數位列印/輸出聖經》《數位相機Raw檔聖經》四書,超值優惠2299元 下載訂購單