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í.
Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn LỜI MỞ ĐẦU Hiện nhu cầu trao đổi thông tin ngày đa dạng 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 cải thiện, nâng cao sản phẩm Do việc xây dựng ứng dụng cho điện thoại di động ngành công nghiệp đầy tiềm hứa hẹn nhiều phát triển vượt bậc ngành khoa học kỹ thuật Cùng với phát triển thị trường điện thoại di động phát triển mạnh mẽ xu hướng lập trình phần mềm ứng dụng cho thiết bị di động Phần mềm, ứng dụng cho điện thoại di động rất đa dạng phong phú hệ điều hành di động phát triển mạnh mẽ thay đổi ngày Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile Application có rất phát triển thị trường truyền thông di động Ngày nay, với phát triển nhanh chóng xã hội, nhu cầu giải trí lúc nơi để giảm căng thẳng học em nhỏ, em chọn đề tài “Kids count” với mục giải trí sau học lớp nhà em học toán dựa vào ứng dụng điện thoại vừa học vừa giải trí SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn MỤC LỤC LỜI MỞ ĐẦU MỤC LỤC DANH MỤC HÌNH ẢNH .4 CHƯƠNG : CƠ SỞ LÝ THUYẾT 1.1 Sơ lược ngôn ngữ Java 1.1.1 Một số tính chất ngôn ngữ Java .5 1.1.2 Các kiểu liệu 1.2 Sơ lược lập trình Android 1.2.1 Kiến trúc Android 10 1.2.2 Chu kì ứng dụng Android .12 CHƯƠNG : 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 tác nhân 18 2.1.2 Xác định trường hợp sử dụng (use case) 18 2.1.2.1 Liệt kê trường hợp sử dụng 18 2.1.2.2 Đặc tả 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 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ế sở liệu (sử dụng SQLite) .21 2.3.1 Cơ sở lý thuyết .21 2.3.2 Chi tiết đặc tính SQLite 22 2.3.3 Bảng sở 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 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 Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn 2.4.5 Màn hình Xem điểm xếp hạng 27 CHƯƠNG : CHƯƠNG TRÌNH ỨNG DỤNG 28 3.1Giới thiệu ứng dụng: 28 3.2 Chức hướng dẫn sử dụng: 28 3.3 Kết luận 28 3.3.1 Ưu điểm ứng dụng 28 3.3.2 Nhược điểm ứng dụng 28 3.3.3Hướng phát triển 28 SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount 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 Activity 14 Hình 1-5 Sự kiện 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 sở liệu 23 SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn CHƯƠNG : CƠ SỞ LÝ THUYẾT 1.1 Sơ lược ngôn ngữ Java * Lịch sử phát triển: - 1990: Ngôn ngữ Oak tạo James Gosling dự án Green Sun MicroSystems nhằm phát triển phần mềm cho 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 lần , Chạy nhiều nền” - Ngôn ngữ đa luồng (multi-threading): xử lý tính toán song song - Ngôn ngữ phân tán (distributed): cho phép đối tượng ứng dụng phân bố thực thi máy tính khác - Ngôn ngữ động: cho phép mã lệnh chương trình tải từ máy tính máy người yêu cầu thực thi chương trình - Ngôn ngữ an toàn: hạn chế 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, sáng * Khả năng: - Ngôn ngữ bậc cao - Có thể dùng để tạo loại ứng dụng để giải vấn đề số, xử lý văn bản, tạo trò chơi, nhiều thứ khác - Có thư viện hàm hỗ trợ xây dựng giao diện (GUI) AWT, Swing, … - Có môi trường lập trình đồ họa JBuilder, NetBeans, Eclipse, … - Có khả truy cập liệu từ xa thông qua cầu nối JDBC - Hỗ trợ lớp hữu ích, tiện lợi lập trình ứng dụng mạng (Socket)cũng truy xuất Web hay nhúng vào trang Web (Applet) - Hỗ trợ lập trình phân tán (Remote Method Invocation) cho phép ứng dụng xử lý phân tán máy tính khác - Lập trình thiết bị cầm tay (J2ME) - Xây dựng ứng dụng môi trường xí nghiệp (J2EE) 1.1.1 Một số tính chất ngôn ngữ Java Java ngôn ngữ lập trình 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 Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn phát huy mạnh ngôn ngữ C/C++ lược bỏ cú pháp phức tạp C/C++ Ngôn ngữ lập trình Java có số đặc trưng tiêu biểu: đơn giản, hướng đối tượng, độc lập phần cứng hệ điều hành, mạnh mẽ, bảo mật, phân tán, đa luồng linh động *Đơn giản Những người thừa kế mong muốn phát triển ngôn ngữ dễ học quen thuộc với đa số người lập trình Do vậy Java loại bỏ đặc trưng phức tạp C C++ như: • Loại bỏ thao tác 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 giao diện • Không sử dụng lệnh “goto”cũng file header (.h) • Loại bỏ cấu trúc “struct” “union” * Hướng đối tượng Java ngôn ngữ lập trình thần hướng đối tượng, chương trình viết Java phải xây dựng đối tượng Nếu C/C++ ta tạo hàm (chương trình không gắn với đối tượng nào) Java ta tạo phương thức (chương trình gắn liền với lớp cụ thể) Trong Java không cho phép đối tượng có tính đa kế thừa mà thay giao diện (interface) * Độc lập phần cứng hệ điều hành Đối với ngôn ngữ lập trình truyền thống C/C++, phương pháp biên dịch thực sau: * Mạnh mẽ Java ngôn ngữ yêu cầu chặt chẽ kiểu liệu • Kiểu liệu phải khai báo tường minh • Java không sử dụng trỏ phép toán trỏ • Java kiểm tra tất truy nhập đến mảng, chuỗi thực thi để đảm bảo truy nhập không giới hạn kích thước • Trong môi trường lập trình truyền thống, lập trình viên phải tự cấp phát nhớ, trước chương trình kết thúc phải tự giải phóng nhớ cấp Vấn đề nảy sinh lập trình viên quên giải phóng nhớ xin cấp trước Trong chương trình Java, lập trình viên bận tâm đến việc cấp phát nhớ Quá SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn trình cấp phát, giải phóng thực tự động, nhờ dịch vụ thu nhặt đối tượng không sử dụng (garbage collection) • Cơ chế bẫy lỗi Java giúp đơn giản hóa trình xử lý hồi phục sau lỗi * Bảo mật Java cung cấp 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, liệu phương thức đóng gói bên lớp Chúng truy xuất thông qua 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ã an toàn, tuân theo nguyên tắc Java • Mức thứ ba đảm bảo trình thông dịch; chúng kiểm soát xem bytecode có đảm bảo quy tắc an toàn trước thực thi không • Mức thứ tự kiểm soát việc nạp lớp vào nhớ để giám sát việc vi phạm giới hạn truy suất trước nạp vào hệ thống * Phân tán Java thiết kế để hỗ trợ ứng dụng chạy mạng lớp mạng (java.net) Hơn nữa, Java hỗ trợ nhiều chạy khác nên chúng sử dụng rộng rãi công cụ phát triển Internet – nơi sử dụng nhiều khác * Đa luồng Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi công việc đồng thời Chúng cung cấp giải pháp đồng luồng Đặc tính hỗ trợ đa luồng cho phép xây dựng ứng dụng mạng chạy hiệu * Linh động Java thiết kế ngôn ngữ động để đáp ứng cho 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 truy nhập đối tượng lúc chạy Điều cho phép khả liên kết mã động SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn 1.1.2 Các kiểu liệu *Kiểu số Tên kiểu byte Kích thước byte short bytes int bytes long bytes float bytes double 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à lớp ngôn ngữ java -Có nhiều phương thức thao tác 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 lập trình Android *Lịch sử Android Ban đầu, Android hệ điều hành cho thiết bị cầm tay dựa lõi Linux công ty And roid Inc (California, Mỹ) thiết kế Công ty sau Google mua lại vào n ăm 2005 bắt đầu xây dựng Android Platfo rm Các thành viên chủ chốt Android Inc gồm có: Andy Rubin, Rich Miner, Nick Sears, and Chris White SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn Và sau tiếp, vào cuối năm 2007, thuộc Liên minh Thiết bị Cầm tay Mã Nguồn mở (Open Handset Alliance) gồm thành viên bật ngành viễn thông 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 Liên minh nhanh chóng đổi để đáp ứng tốt cho nhu cầu n gười tiêu dùng kết tảng Android Android thiết kế để phục vụ nhu cầu nhà sản xuất thiết, nhà khai thác lập trình viên thiết b ị cầm tay Phiên SDK lần phát hành vào tháng 11 năm 2007, hãng TMobile công bố điện thoại And roid T-Mobile G1, smartphone dựa tảng And roid Một vài ngày sau đó, Google lại tiếp tục công bố mắt phiên Android SDK release Candidate 1.0 Trong tháng 10 năm 2008, Google cấp giấy phép mã nguồn mở cho Android Platform Khi Android phát hành tron g số mục tiêu kiến trúc củ a cho phép ứng dụng tương tác với sử dụng lại thành phần từ ứng dụng khác Việc tái sử dụng không áp dụn g cho cho dịch vụ mà áp dụng cho thành phần liệu giao diện người dùng Vào cuối năm 2008, Google cho phát hành thiết bị cầm tay gọi Android Dev Phone chạy ứng dụng Android mà không bị ràng buộc vào nhà cung cấp mạng điện thoại di động Mục tiêu thiết bị SVTH: Võ Hoàng Phúc_CCLT07B Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn cho phép nhà phát triển thực th í nghiệm thiết bị thực chạy hệ điều hành Android mà ký hợp đồng Vào khoảng thời gian Google cho phát hành phiên vản vá lỗi 1.1 hệ đ iều hành Ở hai phiên 1.0 1.1 Android chưa hỗ trợ softkeyboard mà đòi hỏi thiết bị phải sử dụng bàn phím vật lý Android cố định vấn đề cách phát hành SDK vào tháng Tư năm 2009, với số tính n ăng khác Chẳng hạn nâng cao khả ghi âm tru yền thông, vật dụng, live folder 1.2.1 Kiến trúc Android Mô hình sau thể cách tổng quát thành phần hệ điều hành Android Mỗi phần đặc tả mộ t cách chi tiết Hình 1-1 Cấu trúc stack hệ thống Android *Tầng ứng dụng Android tích hợp sẵn số ứng dụng cần thiết như: contacts, browser, camera, Phone,… Tất ứng dụng chạy hệ điều hành Android viết Java * Application framework Bằng cách cung cấp tảng phát triển mở, Android cung cấp cho SVTH: Võ Hoàng Phúc_CCLT07B 10 Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn *Các trạng thái chu kỳ sống Hình 1-4Chu kỳ sống Activity Một Activity chủ yếu có chu kỳ sau: • Active running: Khi Activity chạy hình Activity tập trun g vào thao tác củ a người dùng ứng dụng • Paused: Activity tạm dừng (p aused) mất focus người dùng trông thấy Có nghĩa Activity không bao phủ đầy hình Một Activity tạm dừn g sống b ị kết thúc hệ thống tron g trường hợp thiếu vùng nhớ Stopped: Nếu hoàn toàn bao phủ Activity khác Nó trạng thái thông tin thành viên Người dùng không thấy thường bị loại bỏ trường hợp hệ thống cần vùng nhớ cho tác vụ khác *Chu kỳ sống ứng dụng Trong ứng dụng Android có chứa nhiều thành ph ần thành phần có chu trình sống riêng Và ứng dụng gọi kết thúc tất thành phần ứng dụng kết thúc Activity thành phần cho phép người dùng giao tiếp với ứng dụng Tu y nhiên, tất Activity kết thúc người dùng không giao tiếp với ứn g dụng nghĩa ứng dụng kết thúc Bởi Activity thành phần có khả tươn g tác người dùng có thành phần kh ả tương tác với người dùng Service, Broadcast receiver Có nghĩa 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 android GVHD: Đoàn Thanh Sơn dùng chạy background giám sát hệ điều hành người dùng tự tắt chúng * Các kiện chu kỳ sống ứng dụng Nếu Activity tạm dừng dừng hẳn, hệ thống bỏ thông tin khác từ vùng nhớ việc finish() (gọi hàm finish () nó), đơn giản giết tiến trình Khi hiển thị lần với người dùng, phải hoàn toàn restart phục hồi lại trạng thái trước Khi Activity chu yển qua chuyển lại trạng thái, phải báo việc chuyển việc gọi hàm transition Hình 1-5 Sự kiện chu kì Tất phương thức móc nối mà bạn override để làm tương thich công việc ứng dụng thay đổi trạng thái Tất Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng Nhiều Activity thực onPause() để xác nhận việc thay đổi liệu mặt khác chuẩn bị dừng hoạt động với người dùng * Thời gian sống ứng dụng Bảy phương thức chuyển tiếp đ ịnh nghĩa chu kỳ sống Activity Thời gian sống củ a Activity diễn lần gọi onCreate() đến trạn g thái cuối gọi onDestro y() Một Activity khởi tạo toàn trạng thái toàn cục onCreate(), giải phóng tài ngu yên tồn onDestro y() * Thời gian hiển thị Activity Visible lifetime activity diễn lần gọi onStart() gọi onStop() Tron g suốt khoảng thời gian n ày người dùng thấy activity hình, có nghĩa không bị foreground tươn g tác với người dùng Giữa phương thức người dùng trì tài nguyên để hiển thị activity đến người dùng * Các phương thức chu kỳ sống Phương thức: onCreate() • Được gọi activity lần tạo • Ở bạn làm tất cài đặt tĩnh tạo view, kết nối liệu đến list SVTH: Võ Hoàng Phúc_CCLT07B 15 Xây dựng ứng dụng Kidcount android GVHD: Đoàn Thanh Sơn v.v • Luôn theo sau onStart() Phương thức: onRestart() • Được gọi sau activity dừng, khoảng khởi động lần (stared again) • Luôn theo sau onStart() Phương thức: onStart() • Được gọi trước activity visible với người dùng • Theo sau onResume() activity đến trạng thái fo reground onStop() nế trở nên ẩn Phương thức: onResume() • Được gọi trước activity bắt đầu tương tác với người dùng • Tại thời đ iểm activity dỉnh stack activity • Luôn theo sau onPause() Phương thức: onPause() • Được gọi hệ thống resuming activity khác • Phương thức điển hình việc giữ lại không đổi liệu • Nó nên diễn cách nhanh chóng activity không resumed trở lại • Theo sau onResume activity trở từ trước, onStop trở nên visible với người dùng • Trạng thái activity bị giết hệ thống Phương thức: onStop () • Được gọi activity không thuộc tầm nhìn người dùng • Nó diễn bị hủy, activity khác vữa resumed bao phủ • Được theo sau onRestart() activity đở lại để tương tác với người dùng, onDestroy() activity bỏ • Trạng thái activity bị giết hệ thống Phương thức: onDestro y() • Được gọi trước activity bị hủy • Đó lần gọi cuối mà activity nhận • Nó gọi khác activity hoàn thành, hệ thống tạm SVTH: Võ Hoàng Phúc_CCLT07B 16 Xây dựng ứng dụng Kidcount 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 android GVHD: Đoàn Thanh Sơn CHƯƠNG : 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 tác nhân Vì phần mềm dùng điện thoại nên có tác nhân người chơi 2.1.2 Xác định trường hợp sử dụng (use case) 2.1.2.1 Liệt kê 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ả 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 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 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 mở ra, người chơi chơi • Tạm dừng trò chơi: - Tác nhân: Người chơi - Mô tả: Khi người dùng bận hay có việc lúc chơi 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 sau chơi xong • Xem điểm: - Tác nhân: Người chơi - Mô tả: Sau lưu điểm xem điểm người chơi trước SVTH: Võ Hoàng Phúc_CCLT07B 18 Xây dựng ứng dụng Kidcount 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 hệ thống 2.2.1.1 Các lớp biên Lớp biên lớp nằm đường biên hệ thống với phần giới lại Nó biểu mẫu, báo cáo 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 android GVHD: Đoàn Thanh Sơn Ứng dụng “Kids count” có lớp biên 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ớp làm nhiệm vụ điều khiển hoạt động lớp khác Tương ứng với Use Case có lớp điều khiển làm nhiệm vụ gửi thông điệp cho lớp liên quan Ứng dụng “Bé vui học toán” 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 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()