Requirements of Final Project Report
The final project report contains the following two parts:
Project descriptiondocument
Source code of theapp
Project Description Document
Your project description document summarizes and concludes the project in this course. An easy way of making this document is through refining your proposal and mid-term report. The document should have the following sections:
1. Project Statement
In this section, you should state the purpose of your project clearly and concisely. The following questions may help you for this section: What app do you want to develop? What can the app do (You may provide some use scenarios if needed)? Why do you want to develop such an application? What kind of users will benefit from your application? Is there any similar application already available on the Android Market? Is there any special requirement for using the app?
2. Application Design
In this section, you should first present the high-level design of your application (figures or diagrams are helpful): What modules does your app have and what functions does each module provide? What type of device does your app target (smartphone, tablet, or both)? If your app uses external services such as a Web service, describe those services and how your app interacts with the services.
You also need to provide a detailed description of each module, as much detailed as you can (use figures, charts, or diagrams). For example, what Android components (activity/service/content provider/broadcast receiver) are used for each module? How are those components organized and interacted with one another?
3. Application Implementation and Evaluation
Describe how the app was implemented. What classes have you defined and implemented in the app.
How did you test the app, including functionality, performance, and usability? Does the app always work correctly? What errors or problems have you identified during the testing? Have you been able to solve them?
4. References
If you have important references for this document or for your project, list them here.
5. Experiences and Thoughts
Share your experiences and thoughts during the project. For example, you may describe here the functions that are nice to have for your app but you were not able to finish due to time limit. You may also comment how the class can be further improved.
The project description document should be typeset nicely (Word document or PDF format). The document should have at least 3 pages and at most 10 pages (US letter size).
Submission
Create a github project and upload all your materials there, and email me the github link with the subject as “CS443 Project” . The submission includes the source codes and the project report file. Please also make a README file that includes the instructions of how to compile and run your app. Test your app well before submission.
Deadline
The final report is due Dec. 20th.
项目描述
2.应用设计
本應用案例僅包含一個module,名字為“com.cornez.bouncingball”。在該module中實現了本應用所有的功能,不需要和其它module進行交互。
在“com.cornez.bouncingball” module中,有一個Activity。這個activity是應用的LAUNCHER activity。在本應用中,也有且僅有這一個activity。本應用並未使用到service、content provider和broadcast receiver等組件。因此,本應用並沒有涉及到組件間的通訊。具體的數量統計信息有下表所示。
表格1 應用中各組件數量統計表
組件名稱 數量
activity 1
service 0
content provider 0
broadcast receiver 0
本應用是為手機設備設計開發的。不過,雖然沒有使用平板電腦進行測試,但我認為這個應用也可以在平板電腦上正常運行。
3.應用實現與測試
本應用一共包含6個類:AnimationArena、Ball、Bar、BounceSurfaceView、BounceThread、MyActivity。這6個類與包的所屬關係如下圖所示。
每個類中的主要函數及它們的功能如下表所示。
類名 函數名 功能
AnimationArena AnimationArena() 實例化Ball和Bar
update() 更新Ball和Bar的位置
draw() 配置顏色,渲染Ball和Bar的形狀
Ball Ball() 初始化Ball的位置和初速度方向
move() 計算下一時刻Ball的位置
draw() 配置顏色,渲染Ball的形狀
Bar Bar() 初始化Bar的位置和顏色信息
updata() 根據手指的滑動,判斷ball和bar是否相撞
draw() 根據手指的滑動,得出下一時刻bar的位置並進行渲染
BounceSurfaceView BounceSurfaceView() 實例化一個surfaceview,並實例化一個線程
surfaceCreated() 當surfaceview被建立時,開啟新線程
surfaceDestroyed() 當surfaceview被銷毀時,關閉線程
BounceThread BounceThread() 實例化AnimationArena
run() 子線程更新UI
endBounce() 線程置停
MyActivity onTouchEvent() 獲取用戶的手指觸摸信息
該應用在模擬器及真機上都進行了測試。主要是根據用戶的實際操作,對各種可能遇到的情形進行了模擬。
遺憾的是,該應用在一些情景下會出現一些問題。比如,當ball在正常移動時,快速地將bar移近ball,會使得ball和bar的距離變得很小,這樣ball會向相反方向開始移動。然而此時ball和bar的距離依然很小,all會再次向相反方向開始移動。這樣的結果就是ball在bar附近抖動,而不會遠離bar。
這個bug並不是一個很難解決的bug,如果時間多一點的話,我認為自己可以解決它。
4.參考文獻
https://developer.android.com/reference/android/view/SurfaceView
http://www.edu4java.com/en/androidgame/androidgame2.html
app案例 Final Project Report 安卓程式案例 香港案例
2018-10-14