安卓APP源碼和設計報告——搶答器
搶答器項目說明書
項目代碼結構:
(1)Socket服務端:

(2)搶答器客戶端:

2.項目重要技術點說明:
(1)本次項目主要是利用Socket在客戶端和服務器端之間傳輸字符串數(shù)據(jù)實現(xiàn)通信。
(2)讀取的試卷數(shù)據(jù)存放在服務端的文件中,而試卷內(nèi)容主要是JSON格式,所以搶答器客戶端使用了文件存儲技術和JSON解析技術。
(3)因為項目中界面需要實時動態(tài)變化,連接Socket之后,相當于開了一個線程,因不能在線程中更新界面,需要使用異步回調(diào)機制Handler處理信息,通知界面更新。
(4)在搶答之前需要倒計時,將Timer和TimerTask兩個類結合使用,可以實現(xiàn)執(zhí)行一次倒計時任務。
(5)彈出框PopupWindow由這個類實現(xiàn)的,可以使用任意布局的View作為其內(nèi)容,也可以自定義彈出框顯示、隱藏的動畫效果,且這個彈出框是懸浮在當前activity之上。
(6)應用開啟界面使用了Animations的API,這個實現(xiàn)了淡入淡出、位置移動等動畫效果,且應用在UI控件之中。
3.項目使用說明:(客戶端)
設置用戶名:打開程序,會打開啟動界面,并跳到如下界面,設置自己的游戲名字。本小組用了三個模擬器測試:分別命名為AA,BB,CC:

(2)連接服務器:若使用模擬器測試會自動連接,連接成功就會跳到主界面,若超時(6秒)就會提示“連接出錯”,并需要客戶自己重新輸入IP(10.0.3.2);若為真機測試則需要自己手動輸入。

(3)主界面:如果連接成功,進去了下面藍色的界面,藍色界面的最上面有建立成功的標志,服務器會提示有人訪問,需要點擊確定(服務端允許),客戶端才可以正常運行。

(4)主界面按鈕:下圖中發(fā)起請求按鈕是聯(lián)機搶答,右側是顯示用戶的名字

(5)發(fā)起搶答請求:點擊發(fā)起請求,經(jīng)由服務器處理,所有客戶端會出現(xiàn)提示框:

(6)請求取消:若點擊取消,所有客戶端的對話框?qū)⑾?,并在下面提示“有人退出,連接終止”。

(7)連接過程:若每當一個客戶端點擊確定,在上方會顯示連接的人數(shù),比如下面有兩人連接了,顯示connecting……2/3。

(8)準備搶答:所有人點擊確定連接之后,會有提示,所有試卷下載完畢,然后進入搶答階段,這時候會彈出倒計時對話框:請準備搶答(倒計時5秒)!

(9)搶答成功:此時顯示第一道問題:如果有用戶提前搶答并搶答正確,所有客戶端會提示誰搶答成功并繼續(xù)倒計時進入下一道題。若搶答時答案錯誤,則提示答案錯誤,其他用戶仍可以搶答。(如下圖)

(10)游戲結束:本程序用了3道題來測試,當搶答完三道題之后,顯示對話框:游戲結束。

(11)顯示結果:所有客戶端點擊確定后,會在最后面顯示出各人的得分總計。
答題規(guī)則:每搶答答對一道得1分。
如下方顯示:“個人得分score:CC:0,BB:0,AA:3”
此截圖為用戶名BB的客戶端,BB和CC得分為0分,但AA為3分,這樣則表示AA勝利。
