本書以一個具體的物聯網應用(群智感知網絡)作為物聯網編程的切入點,以一個具體的物聯網終端平臺(安卓)作為物聯網編程的載體,以一個基于安卓平臺的傳感器資源管理和調度的框架和基于此框架的一個具體應用(用戶情境感知)作為案例,以適應課堂教學的需要,從而避免過于寬泛的物聯網編程概念落不到實處的尷尬。本書首先介紹了群智感知網絡的基本概念和相關應用以及群智感知網絡和物聯網編程的聯系。然后討論了安卓平臺的一些核心思想和概念,包括基于XML的用戶界面設計、用戶界面組件及其生命周期、MVC設計模式、基于Intent的組件連接模型等。在對安卓平臺有初步的認識后,本書進一步描述了安卓平臺上傳感器相關的一些API使用的模式,并由此引出一個開源的統(tǒng)一調度使用安卓平臺傳感器資源的框架;诖丝蚣,本書給出了一個使用該框架設計和實現用戶情境感知應用的案例作為總結。
魯鳴鳴,男,博士,畢業(yè)于美國佛羅里達大西洋大學,中國計算機學會會員、IEEE會員、ACM會員,現工作于中南大學信息科學與工程學院,從事物聯網的科研和教學工作。
目 錄
第1章 物聯網編程與群智感知 (1)
1.1 物聯網與泛群感知 (1)
1.2 泛群感知基本概念 (2)
1.3 群智感知網絡的基本特征 (3)
1.4 群智感知網絡的系統(tǒng)結構 (4)
1.5 群智感知網絡的典型應用 (5)
1.6 群智感知與安卓應用開發(fā) (10)
1.6.1 Android簡介 (10)
1.6.2 搭建Android開發(fā)環(huán)境 (12)
第2章 Android應用初步 (15)
2.1 應用基礎 (16)
2.2 創(chuàng)建Android項目 (17)
2.3 Android工作區(qū)導航 (19)
2.4 用戶界面設計 (20)
2.4.1 視圖層級結構 (24)
2.4.2 組件屬性 (26)
2.4.3 創(chuàng)建字符串資源 (27)
2.4.4 預覽界面布局 (28)
2.5 從布局XML到視圖對象 (29)
2.6 組件的實際應用 (33)
2.6.1 類包組織導入 (34)
2.6.2 引用組件 (34)
2.6.3 設置監(jiān)聽器 (35)
2.7 使用模擬器運行應用 (41)
2.8 Android編譯過程 (42)
第3章 Android與MVC設計模式 (45)
3.1 創(chuàng)建新類 (46)
3.2 Android與MVC設計模式 (49)
3.3 更新視圖層 (50)
3.4 更新控制層 (53)
3.5 在設備上運行應用 (57)
3.5.1 連接設備 (57)
3.5.2 配置設備用于應用開發(fā) (57)
3.6 添加圖標資源 (59)
3.6.1 向項目中添加資源 (59)
3.6.2 在XML文件中引用資源 (60)
3.7 挑戰(zhàn)練習一:為TextView添加監(jiān)聽器 (62)
3.8 挑戰(zhàn)練習二:添加后退按鈕 (62)
3.9 挑戰(zhàn)練習三:從按鈕到圖標按鈕 (62)
第4章 Activity的生命周期 (65)
4.1 日志跟蹤理解Activity生命周期 (66)
4.1.1 輸出日志信息 (66)
4.1.2 使用LogCat (69)
4.2 設備旋轉與Activity生命周期 (73)
4.2.1 設備配置與備選資源 (74)
4.2.2 創(chuàng)建水平模式布局 (74)
4.3 設備旋轉前保存數據 (80)
4.4 再探Activity生命周期 (83)
4.5 深入學習:測試onSaveInstanceState(Bundle)方法 (84)
4.6 深入學習:日志記錄的級別與方法 (85)
4.7 挑戰(zhàn) (87)
第5章 傳感器API概述 (88)
5.1 傳感器概述 (89)
5.1.1 傳感器是什么 (89)
5.1.2 傳感器的分類 (89)
5.2 改進SensorTest程序 (91)
5.2.1 回顧 (91)
5.2.2 傳感器API (91)
5.2.3 SensorEvent (95)
5.3 使用傳感器數據 (98)
5.3.1 使用相對布局的好處 (99)
5.3.2 對SensorEvent封裝的數據進行操作 (106)
5.4 不同傳感器信息的顯示 (107)
5.4.1 完善SensorTest (108)
5.4.2 修改onSensorChanged() (110)
5.5 傳感器類型 (112)
5.6 有關Sensor的物理概念 (113)
第6章 第二個Activity (114)
6.1 創(chuàng)建第二個Activity (115)
6.1.1 創(chuàng)建新布局 (115)
6.1.2 創(chuàng)建新的Activity子類 (119)
6.1.3 在manifest配置文件中聲明Config Activity (119)
6.1.4 為SensorActivity添加Config按鈕 (121)
6.2 啟動Activity (123)
6.2.1 基于Intent的通信 (123)
6.2.2 顯式與隱式Intent (125)
6.3 Activity間的數據傳遞 (125)
6.3.1 使用Intentextra (126)
6.3.2 從子Activity獲取返回結果 (130)
6.4 Activity的使用與管理 (142)
第7章 位置管理器 (146)
7.1 Android位置服務API (147)
7.1.1 LocationManager (147)
7.1.2 獲取位置更新 (148)
7.1.3 LocationProvider (148)
7.1.4 Location (148)
7.1.5 Criteria (149)
7.2 LocationListener (150)
7.2.1 獲取LocationManager系統(tǒng)服務 (150)
7.2.2 確定使用的位置數據源 (151)
7.2.3 設置LocationListener監(jiān)聽器 (151)
7.2.4 注冊LocationListener監(jiān)聽器 (153)
第8章 Funf開源感知框架 (156)
8.1 Funf Journal (156)
8.2 Funf開源感知框架 (160)
8.3 設計Probe接口 (162)
8.3.1 Probe接口的實現 (162)
8.3.2 getData()的實現 (163)
8.3.3 通過回調方式發(fā)送數據 (166)
8.3.4 發(fā)送數據 (167)
8.3.5 修改LocationProbe (169)
8.3.6 實現ProbeTest (170)
8.4 BasicPipeline (173)
8.4.1 處理保存數據的BasicPipeline (173)
8.4.2 BasicPipeline的使用 (176)
8.5 FunfManager (178)
8.5.1 Android Service (179)
8.5.2 FunfManager Service (180)
第9章 利用Funf實現情境感知 (187)
9.1 情境與情境感知 (187)
9.1.1 情境 (187)
9.1.2 情境感知(Context-Aware) (187)
9.2 總體框架設計 (188)
9.2.1 感知層 (188)
9.2.2 推理層 (189)
9.2.3 應用層 (191)
9.3 系統(tǒng)實現 (191)
9.3.1 感知層實現 (191)
9.3.2 推理層實現 (191)
9.3.3 應用層實現 (213)
參考文獻 (217)