Tải bản đầy đủ (.doc) (28 trang)

Xây dựng ứng dụng Kidcount trên Android ứng dụng trên điện thoại vừa học vừa giải trí

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (543.97 KB, 28 trang )

Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

LỜI MỞ ĐẦU
Hiện nay do nhu cầu trao đổi thông tin ngày đa dạng và nhu cầu sử dụng sản phẩm
công nghệ cao nhiều tính năng, cấu hình cao, chất lượng tốt, kiểu dáng mẫu mã đẹp,
phong phú nên nhà cung cấp phải luôn luôn cải thiện, nâng cao những sản phẩm của
mình. Do đó việc xây dựng các ứng dụng cho điện thoại di động đang là một ngành
công nghiệp mới đầy tiềm năng và hứa hẹn nhiều sự phát triển vượt bậc của ngành
khoa học kỹ thuật.
Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển mạnh mẽ
của xu hướng lập trình phần mềm ứng dụng cho các thiết bị di động. Phần mềm, ứng
dụng cho điện thoại di động hiện nay rất đa dạng và phong phú trên các hệ điều hành
di động cũng phát triển mạnh mẽ và đang thay đổi từng ngày. Các hệ điều hành J2ME,
Android, IOS, Hybrid, Web based Mobile Application đã có rất phát triển trên thị
trường truyền thông di động.
Ngày nay, với sự phát triển nhanh chóng của xã hội, nhu cầu giải trí ở mọi lúc mọi
nơi mọi để giảm căng thẳng trong mỗi giờ học của các em nhỏ, em đã chọn đề tài
“Kids count” với mục giải trí sau mỗi giờ học trên lớp về nhà các em có thể học các
bài toán dựa vào ứng dụng trên điện thoại vừa học vừa giải trí.

SVTH: Võ Hoàng Phúc_CCLT07B
1


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

MỤC LỤC
LỜI MỞ ĐẦU......................................................................................................................................1
MỤC LỤC...........................................................................................................................................2


DANH MỤC HÌNH ẢNH.......................................................................................................................4
CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT..........................................................................................................5
1.1 Sơ lược về ngôn ngữ Java........................................................................................................5
1.1.1 Một số tính chất của ngôn ngữ Java.........................................................................................5
1.1.2 Các kiểu dữ liệu..........................................................................................................................8
1.2 Sơ lược về lập trình Android....................................................................................................8
1.2.1 Kiến trúc của Android..............................................................................................................10
1.2.2 Chu kì ứng dụng Android.........................................................................................................12
CHƯƠNG 2 : PHÂN TÍCH VÀ THIẾT KẾ..............................................................................................18
2.1 Mô hình hóa yêu cầu..............................................................................................................18
2.1.1 Xác định các tác nhân..............................................................................................................18
2.1.2 Xác định các trường hợp sử dụng (use case)..........................................................................18
2.1.2.1 Liệt kê các trường hợp sử dụng........................................................................................18
2.1.2.2 Đặc tả các trường hợp sử dụng........................................................................................18
2.1.2.3 Biểu đồ trường hợp sử dụng............................................................................................19
2.2 Mô hình hóa khái niệm..........................................................................................................19
2.2.1. Các gói trong hệ thống...........................................................................................................19
2.2.1.1 Các lớp biên.......................................................................................................................19
2.2.1.2 Các lớp điều khiển............................................................................................................20
2.3 Thiết kế cơ sở dữ liệu (sử dụng SQLite).................................................................................21
2.3.1 Cơ sở lý thuyết.........................................................................................................................21
2.3.2 Chi tiết về các đặc tính của SQLite..........................................................................................22
2.3.3 Bảng cơ sở dữ liệu...................................................................................................................23
2.4 Thiết kế giao diện...................................................................................................................23
2.4.1 Màn hình chờ...........................................................................................................................23
2.4.2 Màn hình chính........................................................................................................................24
2.4.3 Màn hình tạm dừng.................................................................................................................25
2.4.4 Màn hình lưu điểm..................................................................................................................26

SVTH: Võ Hoàng Phúc_CCLT07B

2


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn
2.4.5 Màn hình Xem điểm và xếp hạng............................................................................................27
CHƯƠNG 3 : CHƯƠNG TRÌNH ỨNG DỤNG......................................................................................28
3.1Giới thiệu về ứng dụng:..........................................................................................................28
3.2 Chức năng và hướng dẫn sử dụng:........................................................................................28
3.3 Kết luận..................................................................................................................................28
3.3.1 Ưu điểm của ứng dụng............................................................................................................28
3.3.2 Nhược điểm của ứng dụng......................................................................................................28
3.3.3Hướng phát triển......................................................................................................................28

SVTH: Võ Hoàng Phúc_CCLT07B
3


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

DANH MỤC HÌNH ẢNH
Hình 1-1 Cấu trúc stack hệ thống Android........................................................................................10
Hình 1-2 Cấu trúc stack hệ thống Android........................................................................................13
Hình 1-3Activity stack......................................................................................................................13
Hình 1-4Chu kỳ sống của Activity.....................................................................................................14
Hình 1-5 Sự kiện trong chu kì...........................................................................................................15
Hình 2-1 Trường hợip sử dụng........................................................................................................19
Hình 2-2 Lớp biên............................................................................................................................20
Hình 2-3 Lớp điều khiển..................................................................................................................20

Hình 2-4 Lớp đối tượng...................................................................................................................21
Hình 2-5 Bảng cơ sở dữ liệu............................................................................................................23

SVTH: Võ Hoàng Phúc_CCLT07B
4


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT
1.1 Sơ lược về ngôn ngữ Java.
* Lịch sử phát triển:
- 1990: Ngôn ngữ Oak được tạo ra bởi James Gosling trong dự án Green của Sun
MicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng.
- 1995: Oak đổi tên thành Java.
- 1996: trở thành chuẩn công nghiệp cho Internet.
* Đặc điểm:
- Ngôn ngữ hoàn toàn hướng đối tượng (Pure OOP).
- Ngôn ngữ đa nền: "Viết một lần , Chạy trên nhiều nền”.
- Ngôn ngữ đa luồng (multi-threading): xử lý và tính toán song song.
- Ngôn ngữ phân tán (distributed): cho phép các đối tượng của một ứng dụng được
phân bố và thực thi trên các máy tính khác nhau.
- Ngôn ngữ động: cho phép mã lệnh của một chương trình được tải từ một máy tính
về máy của người yêu cầu thực thi chương trình.
- Ngôn ngữ an toàn: hạn chế các thao tác nguy hiểm cho máy tính thật.
- Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng.
* Khả năng:
- Ngôn ngữ bậc cao.
- Có thể được dùng để tạo ra các loại ứng dụng để giải quyết các vấn đề về số, xử lý

văn bản, tạo ra trò chơi, và nhiều thứ khác.
- Có các thư viện hàm hỗ trợ xây dựng giao diện (GUI) như AWT, Swing, …
- Có các môi trường lập trình đồ họa như JBuilder, NetBeans, Eclipse, …
- Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC
- Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket)cũng
như truy xuất Web hay nhúng vào trong trang Web (Applet).
- Hỗ trợ lập trình phân tán (Remote Method Invocation) cho phép một ứng dụng có
thể được xử lý phân tán trên các máy tính khác nhau.
- Lập trình trên thiết bị cầm tay (J2ME).
- Xây dựng các ứng dụng trong môi trường xí nghiệp (J2EE).
1.1.1 Một số tính chất của ngôn ngữ Java
Java là ngôn ngữ lập trình được phát triển từ ngôn ngữ lập trình C/C++. Nó kế thừa,
SVTH: Võ Hoàng Phúc_CCLT07B
5


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

phát huy các thế mạnh của ngôn ngữ C/C++ và lược bỏ đi các cú pháp phức tạp của
C/C++. Ngôn ngữ lập trình Java có một số đặc trưng tiêu biểu: đơn giản, hướng đối
tượng, độc lập phần cứng và hệ điều hành, mạnh mẽ, bảo mật, phân tán, đa luồng và
linh động.
*Đơn giản
Những người thừa kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc
với đa số người lập trình. Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++
như:
• Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng đoán tử
• Không cho phép đa kế thừa mà sử dụng các giao diện
• Không sử dụng lệnh “goto”cũng như file header (.h)

• Loại bỏ cấu trúc “struct” và “union”
* Hướng đối tượng
Java là ngôn ngữ lập trình thần hướng đối tượng, mọi chương trình viết trên Java
đều phải được xây dựng trên các đối tượng. Nếu trong C/C++ ta có thể tạo ra các hàm
(chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo ra các
phương thức (chương trình con gắn liền với một lớp cụ thể). Trong Java không cho
phép các đối tượng có tính năng đa kế thừa mà được thay thế bằng các giao diện
(interface)
* Độc lập phần cứng và hệ điều hành
Đối với các ngôn ngữ lập trình truyền thống như C/C++, phương pháp biên dịch
được thực hiện như sau:
* Mạnh mẽ
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu.
• Kiểu dữ liệu phải khai báo tường minh
• Java không sử dụng con trỏ và các phép toán con trỏ
• Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng
các truy nhập đó không ra ngoài giới hạn kích thước.
• Trong các môi trường lập trình truyền thống, lập trình viên phải tự mình cấp phát
bộ nhớ, trước khi chương trình kết thúc thì phải tự giải phóng bộ nhớ đã cấp. Vấn đề
có thể nảy sinh khi lập trình viên quên giải phóng bộ nhớ đã xin cấp trước đó. Trong
chương trình Java, lập trình viên không phải bận tâm đến việc cấp phát bộ nhớ. Quá
SVTH: Võ Hoàng Phúc_CCLT07B
6


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

trình cấp phát, giải phóng được thực hiện tự động, nhờ dịch vụ thu nhặt những đối
tượng không còn sử dụng nữa (garbage collection).

• Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý và hồi phục sau lỗi.
* Bảo mật
Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức để kiểm
soát tính an toàn:
• Ở mức thấp nhất, dữ liệu và các phương thức được đóng gói bên trong lớp. Chúng
chỉ được truy xuất thông qua các giao diện mà lớp cung cấp.
• Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, và tuân theo
các nguyên tắc của Java.
• Mức thứ ba được đảm bảo bởi trình thông dịch; chúng kiểm soát xem bytecode có
đảm bảo các quy tắc an toàn trước khi thực thi không.
• Mức thứ tự kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới
hạn truy suất trước khi nạp vào hệ thống.
* Phân tán
Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng
(java.net). Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụng
rộng rãi như là công cụ phát triển trên Internet – nơi sử dụng nhiều nền khác nhau.
* Đa luồng
Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi các
công việc đồng thời. Chúng cũng cung cấp giải pháp đồng bộ giữa các luồng. Đặc tính
hỗ trợ đa luồng này cho phép xây dựng các ứng dụng trên mạng chạy hiệu quả.
* Linh động
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường mở.
Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập
đối tượng lúc chạy. Điều này cho phép khả năng liên kết mã động.

SVTH: Võ Hoàng Phúc_CCLT07B
7


Xây dựng ứng dụng Kidcount trên android

GVHD: Đoàn Thanh Sơn

1.1.2 Các kiểu dữ liệu
*Kiểu số
Tên kiểu
byte

Kích thước
1 byte

short

2 bytes

int

4 bytes

long

8 bytes

float

4 bytes

double

8 bytes


*Kiểu ký tự char:
-2 bytes theo mã UNICODE
-127 ký tự đầu trùng với mã ASCII
*Kiểu chuỗi String:
-Là một lớp trong ngôn ngữ java
-Có nhiều phương thức thao tác trên chuỗi.
*Kiểu mảng
- Khai báo:
int[] a ; float[] yt; String[] names; hoặc: int a[]; float yt[]; String names[];int
maTran[][]; float bangDiem[][];
-Khởi tạo:
a = new int[3]; yt = new float[10]; names = new String[50]; maTran = int[10][10];
- Sử dụng mảng:
int i = a[0]; float f = yt[9]; String str = names[20]; int x = matran [2][5];
1.2 Sơ lược về lập trình Android.
*Lịch sử Android
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi Linux
do công ty And roid Inc. (California, Mỹ) thiết kế. Công ty này sau đó được
Google mua lại vào n ăm 2005 và bắt đầu xây dựng Android Platfo rm. Các thành
viên chủ chốt tại ở Android Inc. gồm có: Andy Rubin, Rich Miner, Nick Sears, and
Chris White
SVTH: Võ Hoàng Phúc_CCLT07B
8


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay Mã
Nguồn mở (Open Handset Alliance) gồm các thành viên nổi bật trong ngành

viễn thông và thiết bị cầm tay như:
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell
Technology Group, Motorola, Nvid ia, Qualcomm, Sa msung Electronics, Sprint
Nextel, T-Mob ile, ARM Holdings, Atheros Communications, Asustek Co mputer Inc,
Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,…
Mục tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho
nhu cầu n gười tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android.
Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết, các nhà khai
thác và các lập trình viên thiết b ị cầm tay.
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng TMobile cũng công bố chiếc điện thoại And roid đầu tiên đó là chiếc T-Mobile G1,
chiếc smartphone đầu tiên dựa trên nền tảng And roid. Một vài ngày sau đó,
Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate
1.0. Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho
Android Platform .
Khi Android được phát hành thì một tron g số các mục tiêu trong kiến trúc củ a
nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sử dụng
lại các thành phần từ những ứng dụng khác. Việc tái sử dụng không chỉ được áp
dụn g cho cho các dịch vụ mà nó còn được áp dụng cho cả các thành phần dữ liệu
và giao diện người dùng.
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi là
Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng
buộc vào các nhà cung cấp mạng điện thoại di động. Mục tiêu của thiết bị này là
SVTH: Võ Hoàng Phúc_CCLT07B
9


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

cho phép các nhà phát triển thực hiện các cuộc th í nghiệm trên một thiết bị thực

có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào. Vào
khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1
của hệ đ iều hành này. Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ softkeyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý. Android cố định
vấn đề này bằng cách phát hành SDK 1 .5 vào tháng Tư năm 2009, cùng với
một số tính n ăng khác. Chẳng hạn như nâng cao khả năng ghi âm tru yền thông,
vật dụng, và các live folder.
1.2.1 Kiến trúc của Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành
Android. Mỗi một phần sẽ được đặc tả mộ t cách chi tiết dưới đây.

Hình 1-1 Cấu trúc stack hệ thống Android
*Tầng ứng dụng
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts,
browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android
đều được viết bằng Java.
* Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các
SVTH: Võ Hoàng Phúc_CCLT07B
10


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo.
Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm tru y
cập, các dịch vụ ch ạy nền, thiết lập hệ thống báo động, thêm các thông báo để các
thanh trạng thái, và nhiều, nhiều hơn nữa.
Nhà phát triển có thể truy cập vào các API cùn g một khuôn khổ được sử dụng
bởi các ứng dụng lõ i. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc

sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình
và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo
mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự
sẽ được thay thế bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
• Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết
kế phần giao diện ứng dụng như: grid view, tableview, linearlayout,…
• Một “Content Provider” cho phép các ứng dụng có thể tru y xuất dữ liệu từ các
ứng
* Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Điều này đư ợc thể hiện thông qua
nền tảng ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
• System C library: a BSD-derived implementation of the standard C system
library (libc), tuned for embedded Linux-based devices.
• Media Libraries - based on PacketVideo's OpenCORE; the libraries
support playback and reco rding of many popular audio and video fo rmats, as
well as static image files, includin g MPEG4, H.264, MP3, AAC, AMR, JPG, and
PNG
• Surface Manager – Quản lý việc tru y xuất vào hệ thống hiển thị
• LibWebCo re - a modern web browser en gine which po wers both the
Android browser and an embeddable web view.
• SGL - the underlying 2D graphics engine.
• 3D libraries - an implementation based on OpenGL ES 1 .0 APIs; the
libraries use either hardware 3D acceleration (where available) or the included,
highly optimized 3D software rasterizer.
SVTH: Võ Hoàng Phúc_CCLT07B
11



Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

• FreeType - bitmap and vector font rendering.
SQLite - a powerful and lightweight relational database engine available to all
applications.
* Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết các chức
năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Tất cả các ứng dụng
Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã được viết để cho một
thiết bị có thể chạy nhiều máy ảo hiệu quả. Các VM Dalvik thực thi các tập tin thực
thi Dalvik (dex). Định dạng được tối ưu hóa cho bộ nhớ tối thiểu. VM là dựa trên
register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java để
chu yển đổi thành các định dạng dex. Các VM Dalvik dựa vào nhân Linux cho các
chức năng cơ bản như luồng và quản lý bộ nhớ thấp.
* Linuxkernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như secu rity,
memory manageme nt, process management, network stack, and driver model.
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại
của phần mềm stack.
1.2.2 Chu kì ứng dụng Android
Một tiến trình Linux gói gọn một ứng dụng And roid đã được tạo ra cho ứng
dụng khi codes cần được run và sẽ còn chạy cho đến khi:
• Nó không phụ thuộc.
• Hệ thốn g cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ b ản củ a Android là thời gian sống của tiến
trình ứng dụng không được điều khiển trực tiếp bới chính nó. Thay vào đó, nó
được xác định bởi hệ thốn g qua mộ t kết hợp của:
• Những phần của ứng dụng mà hệ thống biết đang chạy
• Những phần quan trọng như thế nào đối với người dung

* Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt
đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active ho ặc
inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible
SVTH: Võ Hoàng Phúc_CCLT07B
12


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

Hình 1-2 Cấu trúc stack hệ thống Android
* Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack. Kh i một
Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang
chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình
activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp củ a stack sẽ di du yển lên và
trở thành active.

Hình 1-3Activity stack

SVTH: Võ Hoàng Phúc_CCLT07B
13


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

*Các trạng thái của chu kỳ sống


Hình 1-4Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
• Active hoặc running: Khi Activity là được chạy trên màn hình. Activity này
tập trun g vào những thao tác củ a người dùng trên ứng dụng.
• Paused: Activity là được tạm dừng (p aused) khi mất focus nhưng người
dùng vẫn trông thấy. Có nghĩa là một Activity mới ở trên nó nhưng không bao
phủ đầy màn hình. Một Activity tạm dừn g là còn sống nhưng có thể b ị kết thúc
bởi hệ thống tron g trường hợp thiếu vùng nhớ.
Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn trạng thái và
thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ trong
trường hợp hệ thống cần vùng nhớ cho tác vụ khác.
*Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành ph ần và mỗi thành phần đều
có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc khi tất cả các
thành phần trong ứng dụng kết thúc. Activity là một thành phần cho phép người
dùng giao tiếp với ứng dụng. Tu y nhiên, khi tất cả các Activity kết thúc và người
dùng không còn giao tiếp được với ứn g dụng nữa nhưng không có nghĩa là ứng
dụng đã kết thúc. Bởi vì ngoài Activity là thành phần có khả năng tươn g tác người
dùng thì còn có các thành phần không có kh ả năng tương tác với người dùng như là
Service, Broadcast receiver. Có nghĩa là những thành phần không tương tác người
SVTH: Võ Hoàng Phúc_CCLT07B
14


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

dùng có thể chạy background dưới sự giám sát của hệ điều hành cho đến khi người
dùng tự tắt chúng.

* Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thông tin
khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish () của nó), hoặc đơn giản
giết tiến trình của nó. Khi nó được hiển thị lần nữa với người dùng, nó phải được
hoàn toàn restart và phục hồi lại trạng thái trước. Khi một Activity chu yển qua
chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọi hàm
transition.

Hình 1-5 Sự kiện trong chu kì
Tất cả các phương thức là những móc nối mà bạn có thể override để làm tương
thich công việc trong ứng dụng khi thay đổi trạng thái. Tất cả các Activity bắt buộc
phải có onCreate() để khởi tạo ứng dụng. Nhiều Activity sẽ cũng hiện thực
onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt động
với người dùng.
* Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp đ ịnh nghĩa trong chu kỳ sống của một Activity.
Thời gian sống củ a một Activity diễn ra giữa lần đầu tiên gọi onCreate() đến trạn g
thái cuối cùng gọi onDestro y(). Một Activity khởi tạo toàn bộ trạng thái toàn cục
trong onCreate(), và giải phóng các tài ngu yên đang tồn tại trong onDestro y().
* Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến khi
gọi onStop(). Tron g suốt khoảng thời gian n ày người dùng có thể thấy activity trên
màn hình, có nghĩa là nó không bị foreground hoặc đang tươn g tác với người dùng.
Giữa 2 phương thức người dùng có thể duy trì tài nguyên để hiển thị activity đến
người dùng.
* Các phương thức của chu kỳ sống
Phương thức: onCreate()
• Được gọi khi activity lần đầu tiên được tạo
• Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list
SVTH: Võ Hoàng Phúc_CCLT07B

15


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

và .v.v
• Luôn theo sau bởi onStart()
Phương thức: onRestart()
• Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động lần
nữa (stared again)
• Luôn theo sau bởi onStart()
Phương thức: onStart()
• Được gọi trước khi một activity visible với người dùng.
• Theo sau bởi onResume() nếu activity đến trạng thái fo reground hoặc
onStop() nế nó trở nên ẩn.
Phương thức: onResume()
• Được gọi trước khi activity bắt đầu tương tác với người dùng
• Tại thời đ iểm này activity ở trên dỉnh của stack activity.
• Luôn theo sau bởi onPause()
Phương thức: onPause()
• Được gọi khi hệ thống đang resuming activity khác.
• Phương thức này là điển hình việc giữ lại không đổi dữ liệu.
• Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không
được resumed ngay cho đến khi nó trở lại.
• Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó
trở nên visible với người dùng.
• Trạng thái của activity có thể bị giết bởi hệ thống.
Phương thức: onStop ()
• Được gọi khi activity không thuộc tầm nhìn của người dùng.

• Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được
resumed và bao phủ nó.
• Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với
người dùng, hoặc onDestroy() nếu activity đang bỏ.
• Trạng thái của activity có thể bị giết bởi hệ thống.
Phương thức: onDestro y()
• Được gọi trước khi activity bị hủy.
• Đó là lần gọi cuối cùng mà activity này được nhận .
• Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm
SVTH: Võ Hoàng Phúc_CCLT07B
16


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

thởi bị hủ y diệt để tiết kiệm vùn g nhớ.

SVTH: Võ Hoàng Phúc_CCLT07B
17


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

CHƯƠNG 2 : PHÂN TÍCH VÀ THIẾT KẾ
2.1 Mô hình hóa yêu cầu
2.1.1 Xác định các tác nhân
Vì phần mềm dùng trên điện thoại nên chỉ có một tác nhân là người chơi.
2.1.2 Xác định các trường hợp sử dụng (use case)

2.1.2.1 Liệt kê các trường hợp sử dụng
- Khởi động trò chơi
- Đóng trò chơi
- Chơi
- Lưu điểm
- Xem điểm
2.1.2.2 Đặc tả các trường hợp sử dụng
• Khởi động trò chơi:
- Tác nhân: Người chơi
- Mô tả: Khi bắt đầu chơi thì người chơi cần phải khởi động trò chơi.
• Đóng trò chơi:
- Tác nhân: Người chơi
- Mô tả: Để đảm bảo an toàn thông tin, dung lượng máy, tránh hao tổn pin khi kết
thúc trò chơi, người chơi phải đóng trò chơi
• Chơi:
- Tác nhân: Người chơi
- Mô tả: Giao diện trò chơi được mở ra, người chơi sẽ chơi ở đây.
• Tạm dừng trò chơi:
- Tác nhân: Người chơi
- Mô tả: Khi người dùng đang bận hay có việc gì trong lúc chơi có thể tạm dừng trò
chơi.
• Lưu điểm:
- Tác nhân: Người chơi
- Mô tả: Lưu kết quả sau khi chơi xong .
• Xem điểm:
- Tác nhân: Người chơi
- Mô tả: Sau khi lưu điểm thì có thể xem điểm các người chơi trước đó
SVTH: Võ Hoàng Phúc_CCLT07B
18



Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

2.1.2.3 Biểu đồ trường hợp sử dụng
 Biểu đồ trường hợp sử dụng Người chơi
2.2 Mô hình hóa khái niệm
2.2.1. Các gói trong hệ thống
2.2.1.1 Các lớp biên
Lớp biên là lớp nằm trên đường biên của hệ thống với phần thế giới còn lại. Nó có
thể là biểu mẫu, báo cáo hoặc giao diện.

DongUngDung
KhoiDongUngDung

NguoiChoi

XemDiem

LuuDiem

Choi

TamDungTroChoi

Hình 2-1 Trường hợip sử dụng

SVTH: Võ Hoàng Phúc_CCLT07B
19



Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

Ứng dụng “Kids count” có những lớp biên như sau:

FrmChoi

FrmKhoiDongUngDung

FrmLuuDiem

FrmXemDiem

FrmTamDungTroChoi

FrmDongUngDung

Hình 2-2 Lớp biên
2.2.1.2 Các lớp điều khiển
Lớp điều khiển là lớp làm nhiệm vụ điều khiển mọi hoạt động của các lớp khác.
Tương ứng với mỗi Use Case có thể sẽ có một lớp điều khiển làm nhiệm vụ gửi thông
điệp cho các lớp liên quan.
Ứng dụng “Bé vui học toán” những lớp điều khiển sau:

FrmKhoiDongUngDung

FrmChoi

FrmLuuDiem


FrmXemDiem

FrmTamDungTroChoi

FrmDongUngDung

Hình 2-3 Lớp điều khiển

SVTH: Võ Hoàng Phúc_CCLT07B
20


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

2.2.1.3 Các lớp đối tượng

CustomDialogPause
c : Activity
d : Dialog
db : DBHandler
no : ImageView
rect : Rect
score : Score
yes : ImageView

CustomDialogScore
c : Activity
d : Dialog

db : DBHandler
etname : EditText
no : Button
score : TextView
yes : Button

CustomDialogPause()
onClick()
onCreate()

CustomDialogScore()
onClick()
onCreate()

GamePlay
a : int
b : int
c : int
click : MediaPlayer
colorText : int
currentTime : int
dialog : Dialog
diem : TextView
gameover : MediaPlayer
...
HEIGHT : float
imbe : ImageView
imlon : ImageView
impause : ImageView
implay : ImageView

ischoce : boolean
isPlay : boolean
isTime : boolean
math : TextView
number1 : TextView
number2 : TextView
number3 : TextView
question : TextView
rect : Rect
right : MediaPlayer
ScaleX : float
ScaleY : float
score : int
sound : Sound
time : TextView
waitingTime : int
WIDTH : float
wrong : MediaPlayer

HightScore
lv : ListView
menu : Button
playAgain : Button
scores : List
onClick()

gameView
NUMBER1 : int
NUMBER2 : int

NUMBER3 : int
BigMath()
Random()

CustomAdapterHS
accending : TextView
tvname : TextView
tvscore : TextView
CustomAdapterHS()
getCount()
getItem()
getItemId()
getView()

Menu
hightScore : ImageView
...
more : ImageView
rect2 : Rect2
rect : Rect
ScaleX : float
ScaleY : float
start : ImageView
initGame()
onCreate()

DBHandler
DATA_VERSION : int
DATABASE_NAME : string
KEY_ID : string

KEY_NAME : string
KEY_SCORE : string
TABLE_SCORE : string

Sound
click : MediaPlayer
gameover : MediaPlayer
mCont : Context
playRight : MediaPlayer
time : MediaPlayer
wrong : MediaPlayer
Sound()
startClick()
startGameOver()
startRight()
startTime()
startWrong()
stopBtClick()
stopGameOver()
stopRight()
stopTime()
stopWrong()

DBHandler()
addScore()
deleteScore()
getAllScore()
getCountScore()
GetScore()
onCreate()

onUpgrade()
updateScore()

execute()
getRandomnumber()
initGame()
initializeTimerTask()
onBackPressed()
onCreate()
onRestart()
onResume()
run()
textStyle()

Hình 2-4 Lớp đối tượng
2.3 Thiết kế cơ sở dữ liệu (sử dụng SQLite)
2.3.1 Cơ sở lý thuyết
Được giới thiệu từ năm 2000 để giúp các ứng dụng quản lý dữ liệu của mình thuận
tiện hơn, SQLite là một bộ thư viện dùng trong lập trình để hiện thực một SQL
Database Engine có khả năng tự tổ chức quản lý dữ liệu, không cần server, không cần
cấu hình mà vẫn hỗ trợ đầy đủ các tính năng quản lý giao tác. SQLite hiện đang là
SQL Database Engine mã nguồn mở theo mô hình dữ liệu quan hệ đang được sử
dụng nhiều nhất trên thế giới do tính cơ động cao, dễ sử dụng, gọn nhẹ, hiệu quả và tin
SVTH: Võ Hoàng Phúc_CCLT07B
21


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn


cậy
Bất kì một ứng dụng nào dù lớn hay nhỏ chúng ta hầu như đều phải sử dụng cơ sở
dữ liệu. Ưu điểm của SQLite là có thể lưu trữ mọi dữ liệu lớn nhỏ và dữ liệu có thể
được xử lí một cách linh hoạt. Khi sử dụng SQLite các bạn có thể tạo cơ sở dữ liệu
trực tiếp trong code nhưng việc làm này khá tốn thời gian Manager được tích hợp trên
trình duyệt.SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa tầm
thì SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ.
2.3.2 Chi tiết về các đặc tính của SQLite
-Zero-Configuration:
Bạn hoàn toàn không phải thiết lập bất kỳ một cấu hình nào để có thể sử dụng
SQLite, tất cả những gì bạn cần là một file SQLite.exe và chạy.
- Serverless:
Các HQTCSDL như SQL Server, Oracle, Postgre... thường cần một server riêng để
triển khai ứng dụng, cài đặt database engine, các máy khách sẽ kết nối đến server để
xử lý dữ liệu một cách tập trung. Tuy nhiên SQLite không làm việc theo cách này mà
ứng dụng sẽ truy xuất trực tiếp vào file database, các máy khách cũng có thể truy xuất
một file database SQLite để trên một server thông qua cơ chế chia sẻ và bảo mật file
của hệ điều hành,người dùng nào truy cập được vào thư mục và có quyền đọc - ghi thì
sẽ có thể đọc ghi vào file database SQLite.
- Single Database File: Database do SQLite tạo ra là một file dữ liệu duy nhất. Tất
cả chỉ có thế.
- Stable Cross-Platform Database File
Bạn có thể copy file database SQLite từ hệ thống này sang hệ thống khác, từ hệ
thống 32 hay 64 bit, từ phiên bản SQLite này sang phiên bản khác mà không cần
chuyển đổi , nâng cấp hệ điều hành, cấu trúc hệ thống hay phải làm lại file database.
- Compact: Cực kỳ nhỏ gọn.
- Manifest typing (tạm dịch: kiểu dữ liệu đặc tả):
Khi bạn dùng SQLite sẽ để ý là số lượng kiểu dữ liệu của nó rất ít, điều này là một
đặc trưng của nó, bởi trong SQLite, kiểu dữ liệu là một thuộc tính của chính giá trị
được lưu chứ không phải là thuộc tính của cột lưu giá trị đó. Tuy vậy, cũng có một vài

ràng buộc, là với cột khóa chính kiểu integer thì phải lưu giá trị phải chính xác là kiểu
int, ngoài ra SQLite cũng cố gắng chuyển đổi kiểu của giá trị sang kiểu của cột lưu nó
SVTH: Võ Hoàng Phúc_CCLT07B
22


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

khi có thể. Mục đích của việc thiết kế kiểu dữ liệu như vậy nhằm làm cho nó tin cậy và
đơn giản hóa việc sử dụng, và cũng để dễ tương thích hơn khi sử dụng với các ngôn
ngữ như Tcl hoặc Python.
- Variable-length records
Dữ liệu lưu bao nhiều thì hệ thống cấp phát cho bấy nhiêu không gian bộ nhớ cho
từng dòng dữ liệu, không cấp phát thừa hoặc thiếu không gian lưu trữ cho dữ liệu, nhờ
đó mà file database trở nên nhỏ gọn và tốc độ xử lý dữ liệu cũng nhanh hơn.
2.3.3 Bảng cơ sở dữ liệu
scores
Kiểu dữ liệu
Int(Auto)
Text
int

Tên
id
name
score

Hình 2-5 Bảng cơ sở dữ liệu
2.4 Thiết kế giao diện.

2.4.1 Màn hình chờ

-Màn hình đầu tiên khi mở ứng dụng.
SVTH: Võ Hoàng Phúc_CCLT07B
23


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

2.4.2 Màn hình chính

-Là màn hình chính để chơi và có thời gian chơi trong 30s

SVTH: Võ Hoàng Phúc_CCLT07B
24


Xây dựng ứng dụng Kidcount trên android
GVHD: Đoàn Thanh Sơn

2.4.3 Màn hình tạm dừng

-Là màn hình khi người dùng bận có thể tạm dừng và sau đó tiếp tục chơi khi đã
xong việc

SVTH: Võ Hoàng Phúc_CCLT07B
25



×