軟體設計
(六) 結果
(七) 實作介紹
1. 首先在 android studio 中建立一個專案,並且開啟 gradle,
gradle 是一個基於 Apache Ant 和 Apache Maven 概念的專案 自動化建構工具。在執行專案時會去該項目跟目錄下讀取獲 得需要的配置資料。
圖 8 gradle 檔配置文件信息
2. 在 src/main 目錄下開發此應用的程式,將功能分為五大部 分:
(1) AbstractClass:將程式碼共同的部分向上提出以節省重 覆程式碼。
(2) Fragment:各 Fragment 對應之詳細實作,和介面操作實 作程式碼。
(3) Model:將所需的資料建立模型,以有組織性的方法管理、
操作傳輸的資料。
(4) Services:包含各項前後景的服務,裡面包含了 Restful、
手機本地端的 Data Base、傳輸 MQTT 和串接視訊 API 和 檢測 Beacon 訊號之服務。
(5) 各 Activity 實作:各 Activity 對應之詳細實作,和介 面操作實作程式碼。
圖 9 類別目錄
3.
詳細介紹 Service 內容
(1)RequestManager
:運用 volley 套件向後端要傳輸資料 或者取得資料,其中包含了登入、登出、註冊、取得 Beacon 資料、新增 Beacon 資料、刪除 Beacon 資料、傳送警報 等功能圖 10 登入應用程式碼實作範例
(2) DataBaseService:提供將存取資料庫功能,內含取得使用 者資訊、取得連絡人資訊、刪除使用者 資訊、新增 Beacon 資訊等。
圖 11 取得使用者資訊程式碼實作範例
圖 12 增加使用者資訊程式碼實作範例
(3) MQTT:提供連接 MQTT server 之服務,使應用能夠訂閱 Arduino 之狀態且,能發送緊急狀態封包給 Arduino。
圖 13 連接 MQTT Server 部分程式碼
(4) SinchLoginService:提供連接 Sinch 的服務,使應用程式 能夠使用 Sinch 所提供的視訊服務。
圖 14 連接 Sinch 程式碼實作範例
(5) BeaconDetectService:提供連接以偵測 Beacon 訊號強度 推 斷 距 離 的 服 務 , 使 應 用 程 式 能 夠 知 道 是 否 別 戴 著 Beacon 的小孩接近 Android 感測裝置,若超過安全範圍 則下因應措施。
圖 15 偵測 Beacon 訊號部分程式碼實作範例
(八) Use Case Diagram
圖 16 系統使用者的使用案例圖
(九) ER Diagram
圖 17 資料庫 ER-MODEL
User 為使用者,sinchid 為 Android 使用到的套件上的 ID。
Contact 為聯絡人清單,存放 ID、名稱和聯絡人名字。
Beacon 為綁定至系統的 Beacon,mac 可存入 Beacon 的 MAC address。
(十) 系統操作流程圖
圖 18 系統操作流程圖
(十一) 操作介紹
圖 19 登入介面 開啟 APP 可進入此畫面
若沒有帳號可按下註冊按鈕
圖 20 註冊介面 輸入資料即可註冊成功
圖 21 連絡人介面 可在此頁面新增緊急連絡人
按下已新增的緊急聯絡人可撥打視訊電話
圖 22 設定介面
此介面可以登出並且能夠新增要被監控的小孩的 Beacon 和距離,亦考慮到了小孩不只一個,也可增加至超過一個。
圖 23 監控介面﹙一﹚
此介面能夠開啟關閉監控功能 上圖為未開啟時的畫面
圖 24 監控介面﹙二﹚
此介面能夠開啟關閉監控功能
上圖為開啟且已綁定的 Beacon 接近時的畫面,此時亦會發 出兇猛的狗叫聲以嚇阻小孩接近。
圖 25 接聽介面
當已綁定的 Beacon 接近時,家長端會收到此視訊來電,並 且無論手機在任意模式皆會調整至鈴聲模式且調至最大音 量。
圖 26 家中擺放之蜂鳴器
已綁定的 Beacon 接近時,家中擺放的蜂鳴器亦會同時響 起,以在第一時間告知在家中的家人。
(十二) 未來展望
目 前 只 有 Android 版本的,故希望能夠新增 iOS 版本,而 Raspberry Pi 的部分須使用者自行設定還太多,所以還有改良的空間,
加強使用者經驗。
(十三) 心得
本
次計劃從一開始的一點點想法到耗費時間製作,最後完成,其中也有對此計劃能否如期的完成的不安感和同時的課業壓力,但看 到它完成了,而且比當初的小想法還要多功能,真的感到十分有成就 感,很多東西都是第一次實作,其中也有很多人協助我完成此計劃,
感謝曾參與、協助本計劃的所有人,謝謝科技部能夠給予我此次機會。
(十四) 參賽紀錄
智慧終端與人機互動軟體創作專題競賽
(十五) 參考文獻
[1] 張志勇、翁仲銘、石貴平、廖文華(2013),物聯網概論,碁峰。
[2] Visual studio code,https://code.visualstudio.com/
[3] Android Studio,https://developer.android.com/studio [4] Android, https://www.android.com/
[5] Smartphone OS Market Share, International Data Corporation, http://www.idc.com/promo/smartphone-market-share/os
[6] Matthew S. Gast(2014) , Building Applications with iBeacon:
Proximity and Location Services with Bluetooth Low Energy,O'Reilly Media。
[7] Eben Upton、Gareth Halfacree 著、曾吉弘 譯(2013),Raspberry Pi 使用者手冊,馥林文化。
[8] 孫駿榮、蘇海永(2015),用 Arduino 全面打造物聯網,碁峰。
[9] 孫宏明,完整學會 Git, GitHub, Git Server 的 24 堂課(第二版) [10] Passbeemedia,https://www.passbeemedia.com/ibeacon/。
[11] MQTT,http://mqtt.org/。
[12] 高淑珍、吳建興(2012)。資料庫管理系統概論。藍海文化。
[13] 朝井淳、陳奕苓(2007)。SQL 語法範例辭典。旗標。
[14] MongoDB , https://www.mongodb.com/。
[15] ElasticSearch, https://www.elastic.co/。
[16] Cassandra, http://cassandra.apache.org/。
[17] Lineabe Smartband,http://www.lineable.net/englishsmartband。