正文 農業物聯網平台手機秘書功能分析與實現(2 / 3)

用戶可通過用戶界麵發送請求到後台服務,後台服務再將處理過的信息返回用戶界麵,以供用戶查看。

天氣模塊後台需要通過訪問百度天氣信息平台獲取天氣信息數據,語音識別模塊後台需要在靈雲信息平台上登陸靈雲賬號,並獲取登陸信息後就能正常使用語音識別功能,雲端語音識別功能則通過與靈雲信息平台進行交互獲取識別結果,後台進行處理然後傳遞給用戶界麵;日程提醒廣播接收器繼承的是Broadcast Receiver類,當鬧鈴觸發時會接收到Alarm Manager Service服務程序發出的廣播,然後執行定義的操作,傳遞參數並跳轉到日程提醒界麵。

用戶界麵管理日程和記事信息都是通過日程和記事模塊的後台服務傳遞信息和操作請求給數據庫適配器,通過適配器向SQLite數據庫中讀寫日程和記事數據,讀取信息後則由數據庫適配器直接向用戶界麵傳遞信息進行顯示。

2.2 功能分析

通過對調研材料的分析,該手機秘書係統除能正常與農業物聯網設備進行交互外,還需提供日曆、日程、記事、天氣、計算和語音六大功能。

日曆部分主要是查看公曆、陰曆、節日、日程安排等日曆信息,包含翻月以及點擊日期查看當前日期的操作;日程提醒和記事部分主要是查看、添加、修改、刪除日程和記事信息。

語音識別部分包括本地語法識別以及雲端自由說識別兩個部分,本地識別應用在整個軟件內的大部分操作,不需要連接網絡仍然可以使用,雲端識別需要連接網絡才能使用,應用在添加日程和記事時輸入內容的操作,方便用戶的輸入,另外用戶可以查看語音識別操作說明進行語音操作。

2.3 係統實現

2.3.1 數據庫設計

本係統采用SQLite數據庫,並將其命名為Secretary.db。該數據庫用到了2個數據表,分別是Schedule和Note。

日程信息表Schedule主要記錄日程的時間、地點、事件內容、是否提醒、提醒時是否振動、是否響鈴以及提醒提前時間。

表1 Schedule數據庫表結構屬性 數據類型 描述

sid integer 自動增加的主鍵

event text 日程的事件內容

time varchar(30) 日程的時間

address varchar(20) 日程的地點

remind integer 是否提醒日程,1為提醒,0為不提醒

remindtime integer 提醒時間:10,20,30表示提前10分鍾,20分鍾,30分鍾

vibration integer 提醒時是否振動

ring integer 提醒時是否響鈴

記事信息表主要保存記事的時間,記事的標題和記事的內容。

屬性 數據類型 描述

nid integer 自動增加的主鍵

time varchar(30) 添加記事的時間

title varchar(20) 記事的標題

content text 記事的內容

2.3.2 程序模塊設計

可將整個應用程序劃分為6個模塊,分別是日曆模塊、日程模塊、記事模塊、天氣模塊、日期計算模塊以及語音識別模塊。

2.3.3 主要模塊實現

係統的關鍵代碼實現在天氣模塊和語音識別模塊,具體實現過程如下:

(1)天氣模塊主要通過解析本地XML格式的城市地區數據供用戶選擇,調用天氣服務類BaiduWeather.java獲取該城市天氣信息,最後顯示出來。核心代碼在百度天氣服務類BaiduWeather.java文件中,在與百度天氣平台通信前首先通過checkNetworkAvailable()方法檢測網絡是否連接,然後調用GetWeather()來與百度天氣平台進行通信,獲取當前天氣數據信息,調用readWeatherStringXml()方法解析返回的XML數據,並存儲到List中,最後通過天氣界麵顯示出來。