Mua SourceCode inbox fb: https://www.facebook.com/Wigk.nam.n98/ MỤC LỤCDANH MỤC BẢNG BIỂU3DANH MỤC HÌNH4MỞ ĐẦU5CHƯƠNG 1: TỔNG QUAN61.1 Khảo sát hiện trạng61.2 Mục đích và ý nghĩa của đề tài61.2.1 Mục đích61.2.2 Ý nghĩa của đề tài71.3 Nhiệm vụ của đề tài71.3.1 Về lý thuyết71.3.2 Về chương trình81.4 Phương pháp triển khai81.5 Phạm vi đề tài9CHƯƠNG 2: CƠ SỞ LÝ THUYẾT102.1 Lý thuyết về Android102.1.1 Lịch sử Android102.1.2 Kiến trúc của Android112.1.3 Các phiên bản của Android152.2 Môi trường Android Studio172.2.1 Các thành phần cơ bản của ứng dụng Android172.2.2 Mô hình kiến trúc trong Android202.3 Hệ quản trị cơ sở dữ liệu SQLite232.3.1 Giới thiệu về SQLite232.3.2 Nhận định chung về SQLite232.3.3 Các lớp dữ liệu trong SQLite242.3.4 Thao tác với SQLite262.3.5 Cú pháp các lệnh trong SQLite272.3.6 Các toán tử trong SQLite29CHƯƠNG 3: THIẾT KẾ VÀ THỰC NGHIỆM343.1 Bài toán343.2 Xây dựng thiết kế353.3 Thực nghiệm49KẾT LUẬN51TÀI LIỆU THAM KHẢO52DANH MỤC BẢNG BIỂUBảng 2.1: Lớp lưu trữ dữ liệu trong SQLite .....................................................25Bảng 2.2: Affinity Type trong SQLite .............................................................25Bảng 2.3: Các kiểu dữ liệu và affinity trong SQLite ........................................25Bảng 2.4: Kiểu dữ liệu date và time trong SQLite ............................................26Bảng 2.5: Toán tử số học trong SQLite ............................................................29Bảng 2.6: Toán tử so sánh trong SQLite ..........................................................29Bảng 2.7: Toán tử logic trong SQLite ..............................................................31Bảng 2.8: Thao tác bit trong SQLite ................................................................32Bảng 2.9: Toán tử thao tác bit trong SQLite ....................................................32DANH MỤC HÌNHHình 2.1: Mô hình tổng quan các thành phần của hệ điều hành Android........12Hình 2.2: Vòng đời một Activity ....................................................................18Hình 2.3: Mô hình Model View Controller .....................................................21Hình 2.4: Mô hình Model View Presenter .......................................................22Hình 2.5: Mô hình Model View ViewModel ...................................................32Hình 3.1: Sơ đồ khối chương trình ..................................................................34Hình 3.2 Màn hình SplashScreen ....................................................................35Hình 3.3: Màn hình chính IntroScreen ............................................................36Hình 3.4: Các màn hình con IntroScreen .........................................................37Hình 3.5: Màn hình Home ...............................................................................38Hình 3.6: Màn hình lựa chọn đề bài ................................................................40Hình 3.7: Màn hình hiển thị câu hỏi .................................................................44Hình 3.8: Kết quả chương trình .......................................................................49MỞ ĐẦUNgày nay rất nhiều công ty và tập đoàn lớn đã và đang áp dụng hình thức kiểm tra ứng viên bằng phương pháp làm bài test IQ (Intelligence Quotient – Chỉ số thông minh) tuyển dụng trong quá trình tuyển chọn người phù hợp cho các vị trí còn trống. Điều mà các ứng viên quan tâm là làm thế nào để làm bài hiệu quả cao nhất, đạt được thành tích cao so với các ứng viên khác, thuân lợi đạt được công việc mà mình mong muốn.Để làm một bài test IQ hiệu quả, đầu tiên ta cần phải tập trung tìm hiểu các bài test đánh giá năng lực của doanh nghiệp, chuẩn bị kỹ lưỡng, làm quen với các câu hỏi nếu không muốn bị “choáng ngợp” khi gặp lần đầu.Trên cơ sở kiến thức đã học trên nhà trường và quá trình tìm hiểu trong thực tế, em đã quyết định chọn đề tài “Lập trình game trắc nghiệm test IQ” trên nền tảng Andoid. Em xin gửi lời cảm ơn chân thành tới thầy Trần Quang Việt đã quan tâm giúp đỡ, hướng dẫn em hoàn thành tốt đồ án này trong suốt thời gian qua.Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một sinh viên, đồ án này không thể tránh khỏi những thiếu sót. Em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của thầy cô để em có thể bổ sung, phục vụ tốt cho công việc thực tế sau này.CHƯƠNG 1: TỔNG QUAN1.1 Khảo sát hiện trạng Lần đầu tiên, chỉ số IQ (Intelligence Quotient – Chỉ số thông minh ) được sử dụng ở Pháp vào đầu thế kỷ 20 khi người ta muốn khắc phục những khó khăn của trẻ lúc bắt đầu đi học. Tiếp đó, bài kiểm tra trắc nghiệm IQ được coi là hoàn chỉnh nhất của chuyên gia Hans Aizenk. Bài trắc nghiệm trở nên vô cùng phổ biến tại châu Âu trong những năm 1950. Mọi người tính điểm IQ của mình cả ở văn phòng và những buổi tiệc.Theo ông Hans Aizenk, muốn xác định IQ cần phải qua một bài kiểm tra IQ với các câu hỏi về suy luận logic, so sánh, số học, trí nhớ, kiến thức tổng quát, tính toán, xếp hình logic, sau đó so sánh tỉ lệ số điểm họ đạt được với số điểm trung bình của những nhóm tuổi khác nhau đạt được. IQ không phải là một số đo tuyệt đối, các nhà khoa học thời đó coi IQ là một tỉ lệ giữa tuổi trí lực và “tuổi thực tế” của con người. Ngày nay, các bài trắc nghiệm test IQ ngày càng được phổ biến hơn, được sử dụng trong trường học, trong các cuộc thi lớn, trong các vòng tuyển dụng. Với những đối tượng là người đi làm, người xin việc ở các công ty, ngân hàng tức những người có qua trường lớp đào tạo, hiểu rõ các quy tắc tính toán số học, thì bài Test IQ tuyển dụng này sẽ đánh giá chính xác và toàn diện nhất khả năng lập luận tư duy của người đó. Chính vì thế, các công ty lớn, ngân hàng… khi tuyển dụng nhân viên cho những vị trí cần đầu óc tính toán IQ, tư duy tốt luôn dùng những đề thi IQ tuyển dụng là như vậy. Đối với những người xuất khẩu lao động, họ cũng cần một bài test trắc nghiệm IQ để được lựa chọn vào những vị trí phù hơp1.2 Mục đích và ý nghĩa của đề tài1.2.1 Mục đíchỨng dụng trắc nghiệm IQ chạy trên nền Android được thực hiện dựa trên mục đích sau: Thứ nhất là nghiên cứu các công nghệ lập trình như: lập trình ứng dụng với AndroidThứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng dụng vào thực tế, giúp ta làm quen với các bài trắc nghiệm toán IQ.1.2.2 Ý nghĩa của đề tàiTrước hết, đề tài “Thiết kế trò chơi kiểm tra IQ trên thiết bị di động” là một ứng dụng được xây dựng như một đề tài thể hiện việc áp dụng được những kiến thức quý báu đã được các thầy cô của trường Đại học Công Nghiệp Hà Nội nhiệt tình truyền thụ lại cho chúng em. Và đặc biệt là sự theo dõi và quan tâm giúp đỡ của thầy Trần Quang Việt trong suốt thời gian em thực hiện đề tài này.Thứ hai là những kinh nghiệm quý báu mà em có được trong quá trình thực hiện đề tài sẽ là hành trang tuyệt với giúp ích rất nhiều cho công việc sau này của mình.Thứ ba, trong thời đại công nghệ thông tin phát triển như vũ bão ngày nay, công nghệ không ngứng được cải tiến, những công nghệ mới ra đời đòi hỏi người lập trình viên phải cố gắng nghiên cứu và tìm hiểu để áp dụng vào thực tiễn. Điều này được thể hiện qua sự cố gắng của em khi quyết định thực hiện đề tài này với công nghệ được coi là phổ biến nhất và được dự báo sẽ phát triển mạnh mẽ hơn trong tương lại.Do vậy, em hy vọng sẽ tạo nên một sản phẩm hoàn chỉnh có thể để đáp lại sự nhiệt tình giúp đỡ từ thầy cô và cả tâm huyết của em khi quyết định thực hiện đề tài này.1.3 Nhiệm vụ của đề tài1.3.1 Về lý thuyếtĐề tài “Thiết kế trò chơi kiểm tra IQ trên thiết bị di động” là một ứng dụng chạy trên điện thoại sử dụng hệ điều hành Android. Ứng dụng gồm:+ Phần ứng dụng trên điện thoại được phát triển trên nền Android SDK.+ Phần mềm đưa ra kết quả của bài toán và số câu trả lời đúng của người dùng.Mục tiêu của đề tài là:+ Tìm hiểu các bài trắc nghiệm số học test IQ.+ Tìm hiểu cách thức xây dựng một ứng dụng trên nền tảng Android.+ Xây dựng thành công ứng dụng trên nền tảng Android. + Tìm hiểu về hệ quản lý cơ sở dữ liệu SQLite.+ Tìm hiểu về công cụ lập trình Android Studio (ngôn ngữ Java).1.3.2 Về chương trìnhChương trình thực hiện được các yêu cầu của đề tài tốt nghiệp.Ứng dụng đã phần nào xây dựng và đáp ứng chức năng chính:+ Giao diện thân thiện dễ sử dụng.+ Sử dụng thành công SQLite để lưu trữ dữ liệu.+ Người dùng có thể làm thử các bài test trắc nghiệm IQ sẵn sàng cho những mục đích khác.1.4 Phương pháp triển khaiXây dựng ứng dụng bao gồm ứng dụng chạy trên điện thoại và một phần mềm đọc dữ liệu câu hỏi từ SQLite.Trong đề tài tốt nghiệp lần này, em quyết định thực hiện các phần từ triển khai một ứng dụng hoàn chỉnh theo các bước sau:+ Khảo sát lấy yêu cầu người sử dụng điện thoại về các ứng dụng trắc nghiệm trên mobile.+ Tiếp đến, em sẽ nghiên cứu công nghệ phát triển ứng dụng chạy trên hệ điều hành Android.Sau khi hoàn thành phần ứng dụng chạy trên điện thoại, em sẽ triển khai lấy bảng câu hỏi có trên điện thoại ra phần mềm quản lý dữ liệu của ứng dụng.Danh sách thứ tự triển khai ứng dụng:
Trang 1MỤC LỤC
DANH MỤC BẢNG BIỂU 3
DANH MỤC HÌNH 4
MỞ ĐẦU 5
CHƯƠNG 1: TỔNG QUAN 6
1.1 Khảo sát hiện trạng 6
1.2 Mục đích và ý nghĩa của đề tài 6
1.2.1 Mục đích 6
1.2.2 Ý nghĩa của đề tài 7
1.3 Nhiệm vụ của đề tài 7
1.3.1 Về lý thuyết 7
1.3.2 Về chương trình 8
1.4 Phương pháp triển khai 8
1.5 Phạm vi đề tài 9
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 10
2.1 Lý thuyết về Android 10
2.1.1 Lịch sử Android 10
2.1.2 Kiến trúc của Android 11
2.1.3 Các phiên bản của Android 15
2.2 Môi trường Android Studio 17
2.2.1 Các thành phần cơ bản của ứng dụng Android 17
2.2.2 Mô hình kiến trúc trong Android 20
2.3 Hệ quản trị cơ sở dữ liệu SQLite 23
2.3.1 Giới thiệu về SQLite 23
Trang 22.3.2 Nhận định chung về SQLite 23
2.3.3 Các lớp dữ liệu trong SQLite 24
2.3.4 Thao tác với SQLite 26
2.3.5 Cú pháp các lệnh trong SQLite 27
2.3.6 Các toán tử trong SQLite 29
CHƯƠNG 3: THIẾT KẾ VÀ THỰC NGHIỆM 34
3.1 Bài toán 34
3.2 Xây dựng thiết kế 35
3.3 Thực nghiệm 49
KẾT LUẬN 51
TÀI LIỆU THAM KHẢO 52
Trang 5Hình 3.5: Màn hìnhHome 38
Trang 6Để làm một bài test IQ hiệu quả, đầu tiên ta cần phải tập trung tìm hiểucác bài test đánh giá năng lực của doanh nghiệp, chuẩn bị kỹ lưỡng, làm quenvới các câu hỏi nếu không muốn bị “choáng ngợp” khi gặp lần đầu.
Trên cơ sở kiến thức đã học trên nhà trường và quá trình tìm hiểu trongthực tế, em đã quyết định chọn đề tài “Lập trình game trắc nghiệm test IQ”trên nền tảng Andoid Em xin gửi lời cảm ơn chân thành tới thầy Trần QuangViệt đã quan tâm giúp đỡ, hướng dẫn em hoàn thành tốt đồ án này trong suốtthời gian qua
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của mộtsinh viên, đồ án này không thể tránh khỏi những thiếu sót Em rất mong nhậnđược sự chỉ bảo, đóng góp ý kiến của thầy cô để em có thể bổ sung, phục vụtốt cho công việc thực tế sau này
CHƯƠNG 1: TỔNG QUAN 1.1 Khảo sát hiện trạng
Lần đầu tiên, chỉ số IQ (Intelligence Quotient – Chỉ số thông minh )được sử dụng ở Pháp vào đầu thế kỷ 20 khi người ta muốn khắc phục nhữngkhó khăn của trẻ lúc bắt đầu đi học Tiếp đó, bài kiểm tra trắc nghiệm IQ đượccoi là hoàn chỉnh nhất của chuyên gia Hans Aizenk Bài trắc nghiệm trở nên
Trang 7vô cùng phổ biến tại châu Âu trong những năm 1950 Mọi người tính điểm IQcủa mình cả ở văn phòng và những buổi tiệc.
Theo ông Hans Aizenk, muốn xác định IQ cần phải qua một bài kiểmtra IQ với các câu hỏi về suy luận logic, so sánh, số học, trí nhớ, kiến thứctổng quát, tính toán, xếp hình logic, sau đó so sánh tỉ lệ số điểm họ đạt đượcvới số điểm trung bình của những nhóm tuổi khác nhau đạt được IQ khôngphải là một số đo tuyệt đối, các nhà khoa học thời đó coi IQ là một tỉ lệ giữatuổi trí lực và “tuổi thực tế” của con người
Ngày nay, các bài trắc nghiệm test IQ ngày càng được phổ biến hơn,được sử dụng trong trường học, trong các cuộc thi lớn, trong các vòng tuyểndụng Với những đối tượng là người đi làm, người xin việc ở các công ty,ngân hàng - tức những người có qua trường lớp đào tạo, hiểu rõ các quy tắctính toán số học, thì bài Test IQ tuyển dụng này sẽ đánh giá chính xác và toàndiện nhất khả năng lập luận tư duy của người đó Chính vì thế, các công tylớn, ngân hàng… khi tuyển dụng nhân viên cho những vị trí cần đầu óc tínhtoán IQ, tư duy tốt luôn dùng những đề thi IQ tuyển dụng là như vậy Đối vớinhững người xuất khẩu lao động, họ cũng cần một bài test trắc nghiệm IQ đểđược lựa chọn vào những vị trí phù hơp
1.2 Mục đích và ý nghĩa của đề tài
1.2.2 Ý nghĩa của đề tài
Trước hết, đề tài “Thiết kế trò chơi kiểm tra IQ trên thiết bị di động” làmột ứng dụng được xây dựng như một đề tài thể hiện việc áp dụng được
Trang 8những kiến thức quý báu đã được các thầy cô của trường Đại học CôngNghiệp Hà Nội nhiệt tình truyền thụ lại cho chúng em Và đặc biệt là sự theodõi và quan tâm giúp đỡ của thầy Trần Quang Việt trong suốt thời gian emthực hiện đề tài này.
Thứ hai là những kinh nghiệm quý báu mà em có được trong quá trìnhthực hiện đề tài sẽ là hành trang tuyệt với giúp ích rất nhiều cho công việc saunày của mình
Thứ ba, trong thời đại công nghệ thông tin phát triển như vũ bão ngàynay, công nghệ không ngứng được cải tiến, những công nghệ mới ra đời đòihỏi người lập trình viên phải cố gắng nghiên cứu và tìm hiểu để áp dụng vàothực tiễn Điều này được thể hiện qua sự cố gắng của em khi quyết định thựchiện đề tài này với công nghệ được coi là phổ biến nhất và được dự báo sẽphát triển mạnh mẽ hơn trong tương lại
Do vậy, em hy vọng sẽ tạo nên một sản phẩm hoàn chỉnh có thể để đáplại sự nhiệt tình giúp đỡ từ thầy cô và cả tâm huyết của em khi quyết địnhthực hiện đề tài này
1.3 Nhiệm vụ của đề tài
Mục tiêu của đề tài là:
+ Tìm hiểu các bài trắc nghiệm số học test IQ
+ Tìm hiểu cách thức xây dựng một ứng dụng trên nền tảng Android.+ Xây dựng thành công ứng dụng trên nền tảng Android
+ Tìm hiểu về hệ quản lý cơ sở dữ liệu SQLite
Trang 9+ Tìm hiểu về công cụ lập trình Android Studio (ngôn ngữ Java).
1.3.2 Về chương trình
Chương trình thực hiện được các yêu cầu của đề tài tốt nghiệp
Ứng dụng đã phần nào xây dựng và đáp ứng chức năng chính:
+ Giao diện thân thiện dễ sử dụng
+ Sử dụng thành công SQLite để lưu trữ dữ liệu
+ Người dùng có thể làm thử các bài test trắc nghiệm IQ sẵn sàng chonhững mục đích khác
1.4 Phương pháp triển khai
Xây dựng ứng dụng bao gồm ứng dụng chạy trên điện thoại và mộtphần mềm đọc dữ liệu câu hỏi từ SQLite
Trong đề tài tốt nghiệp lần này, em quyết định thực hiện các phần từtriển khai một ứng dụng hoàn chỉnh theo các bước sau:
+ Khảo sát lấy yêu cầu người sử dụng điện thoại về các ứng dụng trắcnghiệm trên mobile
+ Tiếp đến, em sẽ nghiên cứu công nghệ phát triển ứng dụng chạy trên
hệ điều hành Android
Sau khi hoàn thành phần ứng dụng chạy trên điện thoại, em sẽ triểnkhai lấy bảng câu hỏi có trên điện thoại ra phần mềm quản lý dữ liệu của ứngdụng
Danh sách thứ tự triển khai ứng dụng:
+ Màn hình mở đầu của ứng dụng, nó sẽ hiện thị logo của ứng dụng vàtên ứng dụng trên đó (Splash Screen)
+ Màn hình giới thiệu, hiển thị nội dung của ứng dụng
+ Màn hình chính, gồm: bắt đầu và thoát ứng dụng
+ Màn hình lựa chọn thể loại, đề tài và bắt đầu làm bài
+ Màn hình đưa ra câu hỏi, thời gian, điểm và nút chuyển tiếp câu hỏi
Trang 10Sau đây là danh sách các công nghệ được sử dụng để xây dựng ứngdụng:
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Lý thuyết về Android
2.1.1 Lịch sử Android
Android là một nền tảng phần mềm dựa trên mã nguồn mở Linux OScho máy di động, máy tính bảng và những phần mềm trung gian
Trang 11(middleware) Nó không đơn thuần là 1 hệ điều hành, 1 công cụ lập trình hay
1 phần mềm trung gian mà nó gồm tất cả
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõiLinux do công ty Android 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 Platform
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) Mục tiêu của liên minh này là nhanhchóng đổi mới để đáp ứng tốt hơn cho nhu cầu người tiêu dùng và kết quả đầutiên của nó chính là nền tảng Android Android được thiết kế để phục vụ nhucầ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 Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-MobileG1, chiếc smartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau
T-đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK releaseCandidate 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 trong số các mục tiêu trong kiếntrú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ụngkhông chỉ được áp dụng 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 đượcgọ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êucủa thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệmtrê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ộtbản hợp đồng nào Vào khoảng cùng thời gian đó thì Google cũng cho pháthà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à
Trang 121.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụngbàn phím vật lý Android cố định vấn đề này bằng cách phát hành SDK 1.5và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 truyền thông, vật dụng, và các live folder.
2.1.2 Kiến trúc của Android
“Understanding Android” là cách mà ta tiếp cận lập trình Android vàthấu hiểu kến trúc hệ thống của nó Chúng ta có thể không cần hiểu rõ cấutrúc của một hệ điều hành nhưng chúng ta có thể lập trình một ứng dụng trên
hệ điều hành đó, đây là điều mà nhà sản xuất muốn khi release SDK với mộtframework có sẵn của họ Như chúng ta biết điều này cũng có mặt tốt và xấu
Framework là một tần cao cấp dành cho lập trình viên, nó đều có giớihạn của nó chúng ta có thể chỉ có thể lập trình những ứng dụng phổ biếnnhưng không nên tiến tới những ứng dụng cao cấp đi sâu vào hệ thống của hệđiều hành
Trang 13Hình 2.2: Mô hình tổng quan các thành phần của hệ điều hành Android
Tầng Linux Kernel:
+ Đây là nhân của hệ điều hành android, mọi xử lý của hệ thống đềuphải thông qua tầng này Linux Kernel cung cấp các trình điều khiển thiết bịphần cứng như: camera, USB, Wifi, Bluetooth, Display, Android dựa trênLinux phiên bản 2.6 lựa chọn các tính năng cốt lõi như bảo mật, quản lý bộnhớ, quản lý tiến trình, mạng stack và các trình điều khiển phần cứng Kernalhoạt động như một lớp trừu tượng giữa phần cứng và phần mềm còn lại của
hệ thống
Libraries:
+ Thư viện hệ thống (System C library)(LibC): thư viện dựa trên chuẩn
C, được sử dụng chỉ bởi hệ điều hành
Trang 14+ Thư viện Media (Media Libraries): Có nhiều code để hỗ trợ việc phát
và ghi các loại định dạng âm thanh, hình ảnh, video thông dụng
+ Thư viện web (LibWebCore): Đây là thành phần để xem nôi dungtrên web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse)cũng như để các ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ trợđược nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX,
+ Surface Manage: quản lý hiển thị 2D và 3D
+ SGL công nghệ 2D
+ SQLite: quản lý database của ứng dụng
+ Free Type: dùng cho hiển thị ảnh, font
+ SSL (Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2ứng dụng trên 1 cổng (socket)
+ Open GL/EL: hỗ trợ thư viện tùy chọn 3D tĩnh và động
Android Runtime:
+ Phần này các thư viện mà một chương trình viết bằng ngôn ngữ Java
có thể hoạt động Phần này có 2 bộ phân tương tự như hình chạy Java trênmáy tính thường Thứ nhất là các thư viện lõi (Core Library), chưa các lớpnhư JAVA IO, Collections, File Access Thứ hai là một máy ảo java (DalvikVirtual Machine)
+ Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Javacủa hệ điều hành android không được chạy bằng JRE (Java RuntimeEnvironment) của Sun (nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik(máy ảo dalvik được đặt tên sau khi một nhà phát triển phần mềm của googletạo ra nó khi đi thăm 1 ngôi làng ở nơi tổ tiên ông sinh sống) do Google pháttriển Máy ảo Dalvik thực thi cái tập tin dex khác với Java là chuyển sangdạng bytecode Định dạng này được tối ưu hóa cho bộ nhớ tối thiểu
Application Framework:
Trang 15+ Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấpcho các 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 truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm cácthô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ùng 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ế để đơngiản hóa việc sử dụng lại các thành phần Cơ bản tất cả các ứng dụng là một
+ Location Manager: Cho phép xác định vị trí của điện thoại dựa vào
hệ thống định vị toàn cầu GPS và Google Maps
+ Window Manager: Quản lý việc xây dựng và hiển thị các giao diệnngười dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng
+ Notication Manager: Quản lý việc hiển thị các thông báo (như báo cótin nhắn, có e-mail mới)
+ Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng baogồm các file hình ảnh, âm thanh, layout, string
+ Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từcác ứng dụng khác hoặc là chia sẻ dữ liệu giữa các ứng dụng đó
Application:
+ Các ứng dụng cơ bản được cài đặt đi liền với hệ điều hành là gọi điện(phone), quản lý danh bạ (Contacts), duyệt web (Browser), nhắn tin (SMS)
Trang 16+ Các ứng dụng được cài thêm như các phần mềm chứng khoán(Stock), các trò chơi (Game), từ điển, các widget các ứng dụng của bên thứ 3.
+ Viết bằng Java, phần mở rộng là apk
+ Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machineđược dựng lên để phục vụ cho nó Nó có thể là một Active Program: Chươngtrình có giao diện với người sử dụng hoặc là một background: chương trìnhchạy nền hay là dịch vụ
+ Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùngmột thời điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên vớimỗi ứng dụng thì có duy nhất một thực thể (instance) được phép chạy Điều
đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốthơn Các ứng dụng được phân quyền và tự hệ thống sẽ kill nếu mức ưu tiếnthấp
2.1.3 Các phiên bản của Android
Phiên bản Android 1.0:
+ Android 1.0 (2008) lần đầu tiên phân phối ứng dụng thông quaAndroid Market với 35 ứng dụng ra mắt Google Maps đã sử dụng GPS, Wi-
Fi của điện thoại và Google Maps đã tích hợp sẵn trình duyệt Android
Phiên bản Android 1.5 Cupcake:
+ Android 1.5 Cupcake (2009) là bản cập nhật lớn đầu tiên củaAndroid Cupcake đã thêm các tiện ích cho màn hình chính, bàn phím ảo,quay video trong máy ảnh, chức năng sao chép và dán vào trình duyệt web
Phiên bản Android 2.0 Eclair:
+ Android 2.0 Eclair (2009) hỗ trợ tài khoản Google, cho phép ngườidùng tìm kiếm nội dung theo từ khóa trong các tin nhắn văn bản, đồng thời bổsung hỗ trợ đa chạm và máy ảnh được cải tiến với đèn flash, zoom số
Phiên bản Android 2.2 Froyo:
Trang 17+ Android 2.2 Froyo (2010) giới thiệu Flash Player 10.1, cho phép điệnthoại phát video và phát trực tuyến âm thanh Máy ảnh flash tương thíchBluetooth giúp người dùng có thể sử dụng điện thoại của mình làm điểm phátsóng Wi-Fi.
Phiên bản Android 2.3 Gingerbread:
+ Android 2.3 Gingerbread (2011), Android được biết đến rộng rãi hơnnhờ tính năng giao tiếp trường gần (NFC), cho phép điện thoại thông minhkết nối với các thiết bị lân cận khác Hệ điều hành này cũng cho phép gọi điệnvideo bằng máy ảnh mặt trước và thêm trình quản lý tải xuống
Phiên bản Android Honeycomb 3.0:
+ Android Honeycomb 3.0 (2011) là bản cập nhật đầu tiên chỉ dành chomáy tính bảng, hỗ trợ đồ họa 3D, các tab trình duyệt cạnh nhau, trò chuyệnvideo với Google Talk, chia sẻ kết nối Bluetooth và chế độ toàn màn hìnhtrong thư viện ảnh
Phiên bản Android Ice Cream Sandwich 4.0:
+ Android Ice Cream Sandwich 4.0 (2011) sáp nhập các hệ điều hànhđiện thoại và máy tính bảng ICS cũng thêm nhận dạng khuôn mặt để mởkhóa điện thoại, phản hồi văn bản, tự động trả lời các cuộc gọi bị từ chối vàhiệu ứng video trực tiếp trong camera
Phiên bản Android Jelly Bean 4.1 – 4.3.1:
+ Android Jelly Bean là tên được đặt cho 3 phiên bản chính của hệ điềuhành Android mobile operating system developed by Google, trải qua cácphiên bản từ 4.1 đến 4.3.1
+ Android Jelly Bean 4.1 (2012) có hiệu suất nhanh hơn, mượt mà hơnnhờ "Project Butter", cho phép người dùng tương tác nhiều hơn, thông báo cóthể mở rộng, trình duyệt Chrome mặc định Hai phiên bản còn lại cũng cócùng tên Jelly Bean, được phát hành tương ứng vào tháng 10 năm 2012 vàtháng 7 18 năm 2013, trong đó phiên bản 4.2 gồm tối ưu hóa, hỗ trợ nhiều
Trang 18người dùng cho máy tính bảng, widget cho màn hình khóa, tùy chỉnh nhanh,
và screen saver, còn phiên bản 4.3 gồm các cải tiến và cập nhật nội bộ chonền tảng Android
Phiên bản Android 4.4 KitKat:
+ Android 4.4 KitKat (2013) có thêm biểu tượng cảm xúc vào bànphím Google, bộ nhớ nhỏ hơn để hỗ trợ điện thoại cấp thấp hơn, đồng thờicho phép người dùng in văn bản khi đang di chuyển với tính năng GoogleCloud Print
Phiên bản Android 5.0 Lollipop:
+ Android 5.0 Lollipop (2014) có giao diện phẳng Material Design,thông báo xuất hiện trên màn hình khóa Hệ điều hành cũng có chế độ ưu tiên,
hỗ trợ đa người dùng, ghim màn hình
Phiên bản Android 6.0 Marshmallow:
+ Android 6.0 Marshmallow (2015) bắt đầu có chế độ Doze để tiếtkiệm pin Đồng thời bổ sung thêm hỗ trợ tích hợp cho đầu đọc vân tay, USBType-C và chế độ 4K cho các ứng dụng
Phiên bản Android 7.0 Nougat:
+ Android 7.0 Nougat (2016) người dùng có thể xóa tất cả ứng dụngcủa mình bằng một lần nhấn, đồng thời điều chỉnh tông màu da của biểutượng cảm xúc và hỗ trợ VR
Phiên bản Android 8.0 Oreo:
+ Android 8.0 Oreo (2017) hay Android Oreo bổ sung nhiều tác vụtrong ứng dụng ảnh Ngoài ra còn mang đến trải nghiệm sao chép và dán tốthơn, cải thiện bảo mật và quản lý pin tốt hơn
Phiên bản Android Pie 9.0:
+ Android Pie 9.0 (2018) tập trung nâng cấp phần mềm giúp điện thoạiAndroid hoạt động nhanh hơn và tiết kiệm pin Android Pie bổ sung công cụtrí tuệ nhân tạo (AI) vào các ứng dụng và lối tắt tiện lợi hơn cho người dùng
Trang 192.2 Môi trường Android Studio
2.2.1 Các thành phần cơ bản của ứng dụng Android
Activity:
+ Có thể nói đây là thành phần quan trọng của bất kỳ ứng dụng Androidnào Activity đảm nhiệm công việc tạo ra một cửa sổ (Window) để người lậptrình đặt lên đó một giao diện thông qua phương thức setContentView(View),phương thức này được gọi trong phương thức @Override onCreate() của classđược extends từ Activity
Hình 2.2: Vòng đời một Activity+ onCreate(Bundle savedInstanceState): Được gọi khi hoạt động mớiđược tạo, tại đây khởi tạo các biến, nạp giao diện layout , phương thức này
Trang 20cũng nhận dữ liệu lưu lại trạng thái hoạt động trước đó (với mục đích để phụchồi - savedInstanceState) Sau sự kiện này bao giờ cũng gọi ngay lậptức onStart().
+ onStart(): Được gọi ngay trước khi Activity hiển thị trên màn hình.+ onResume(): Được gọi ngay khi Activity bắt đầu có thể tương tác vớingười dùng, và Activity nằm trên cùng trong danh sách các Activity của hệthống Sau phương thức này là các chức năng của Activity hoạt động dựa trêntương tác của người dùng , cho đến khi có một nguyên nhân nào đó màphương thức OnPause được gọi
+ onPause(): Được gọi khi hệ thống sắp kích hoạt một Activity khác,nếu bạn quá tải phương thức này, thường để lưu lại dự liệu thật nhanh để hệthống còn kích hoạt Activity khác Ngay sau phương thức này nó sẽgọi onResume() nếu Activity được kích hoạt lại ngay, hoặc gọi OnStop() nếuActivity bị ẩn đi
+ onStop(): Được gọi khi nó bị ẩn đi Sau phương thức này, Activity cóthể gọi onRestart() nếu nó được người dùng kích hoạt lại hoặcgọi onDestroy() để hết thúc
+ onDestroy(): gọi khi Activity bị hủy hoàn toàn (ví dụ gọi finish(),hoặc người dùng kill Activity)
Service:
Là thành phần luôn chạy ẩn trong hệ thống Android mà người dừngkhông thể thấy được Service dùng để cập nhật dữ liệu, đưa ra các cảnh báocần thiết, ví dụ đơn giản khi ta mở trình duyệt web thì giao diện hiện tại làtrình duyệt còn giao diện nhạc biến mất nhưng bài đó vẫn được chạy là nhờ
có service
Content Provider:
+ Content Provider là cơ chế cho phép chia sẻ dữ liệu giữa các ứngdụng với nhau Bất kỳ ứng dụng nào đều có thể cung cấp cho ứng dụng khác
Trang 21khả năng truy cập dữ liệu của mình thông qua Content Provider với các chứcnăng thêm, bớt, truy vấn dữ liệu Việc truy cập này được cung cấp thông quaURI định nghĩa và cung cấp bởi Content Provicder
+ Dữ liệu chia sẻ ở dạng một file hoặc CSDL SQLite Các ứng dụnggốc Android cung cấp sẵn nhiều Content Provider cho phép ứng dụng truycập dữ liệu như trình danh bạ, quản lý file media Hiện nay Content Providertồn tại trong hệ thống Android với Content Resolver
Notification:
+ Đưa ra các thông báo khi ứng dụng android đang được thự thi vàkhông làm ảnh hưởng đến ứng dụng thực thi
2.2.2 Mô hình kiến trúc trong Android
Mô hình MVC (Model – View – Controller): Model có trách nhiệm đốivới toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa View chính làthể hiện trực quan của Model, hay nói cách khác chính là giao diện của đốitượng đồ họa Và Controller điều khiển việc tương tác giữa đối tượng đồ họavới người sử dụng cũng như những đối tượng khác
Trang 22Hình 2.3: Mô hình Model View Controller+ Model : Model đại diện cho một nhóm các lớp mô tả tầng các quy tắc
xử lý dữ liệu Ví dụ Bussines Model có thể mô tả các hoạt động truy vấn dữliệu từ cơ sở dữ liệu thì được gọi là Data Model Cũng như định nghĩa ra cácquy tắc tương tác với dữ liệu như dữ liệu có thể thay đổi hoặc thao tác vào dữliệu
+ View : View đại diện cho các thành phần giao diện người dùng (UIcomponents) Nó chỉ có trách nhiệm hiển thị dữ liệu nhận được từ controllernhư là một kết quả Cũng có thể làm thay đổi model vào trong UI
+ Controller : Controller đại diện cho tầng xử lý dữ liệu được yêu cầunhận được Nhận đầu vào từ người dùng thông qua các View Sau đó xử lý dữliệu của người dùng và trả kết quả lại cho View Thông thường, nó đóng vaitrò là điều phối viên giữa View và Model
Mô hình MVP (Model – View – Presenter): Tương tự như mô hìnhMVC Tầng Controller của MVC được thay thế bởi tầng Presenter Mẫuparttern này được chia thành 3 tầng : Model, View, Presenter
Trang 23Hình 2.4: Mô hình Model View Presenter+ Model : Cũng giống với Model của mô hình MVC.
+ View : View đại diện cho các thành phần giao diện người dùng (UIcomponents) Nó chỉ có trách nhiệm hiển thị dữ liệu nhận được từ presenternhư là một kết quả Cũng có thể làm thay đổi model vào trong UI
+ Presenter : Presenter có nhiệm vụ xử lý tất cả các sự kiện UI thay choView Điều này có nghĩa khi nhận đầu vào từ người dùng thông qua các View.Sau đó xử lý dữ liệu của người dùng thông qua Model và trả kết quả lại choView Không giống như View và Controller Presenter và View hoàn toàn táchrời nhau và giao tiếp với nhau thông qua một Interface
Mô hình MVVM (Model – View – ViewModel):
Hình 2.5: Mô hình Model View ViewModel+ Model : Cũng giống với Model của MVC Parttern
Trang 24+ View : View đại diện cho các thành phần giao diện người dùng (UIcomponents) Nó chỉ có trách nhiệm hiển thị dữ liệu nhận được từ presenternhư là một kết quả Cũng có thể làm thay đổi model vào trong UI.
+ View Model : ViewModel phụ trách cho các Expose Method, cácCommand và các thuộc tính khác giúp lưu trữ trạng thái của View Khi thaotác dữ liệu trong model thì như là một kết quả của hành động nào đó của View
và kích hoạt sự kiện trong chính View đó
2.3 Hệ quản trị cơ sở dữ liệu SQLite
2.3.1 Giới thiệu về SQLite
SQLite là một hệ quản trị cơ sở dữ liệu thu nhỏ, không có server, thaotác trên file và có thể sử dụng trong hầu hết các hệ điều hành SQLite đượcRichard Hipp viết dưới dạng thư viện bằng ngôn ngữ C
2.3.2 Nhận định chung về SQLite
SQLite phù hợp tronng các tình huống sau:
+ Ứng dụng sử dụng flat file để lưu trữ dữ liệu: như từ điển, các ứng
dụng nhỏ, lưu cấu hình ứng dụng Nó mạnh mẽ hơn nhiều kỹ thuật lưu trữfile thông thường nhờ kỹ thuật thực hiện dễ dàng và tin cây hơn
+ Sử dụng trong các thiết bị nhúng: smart phone, PDA và các thiết bị di
động
+ Sử dụng làm database để lưu trữ dữ liệu lấy về từ các database trên
SQL server, Oracle,
+ Làm data base demo cho các ứng dụng lớn, dùng để làm mô hình
khái niệm cho ứng dụng
Trang 25+ Kích thước chương trình gọn nhẹ
+ Thực hiện thao tác đơn giản nhanh hơn các hệ thống cơ sở khách/chủkhác
+ Không cần phần mềm phụ trợ
+ Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng
+ Trong Android, chúng ta không cần cài đặt nhiều, chỉ cần cung cấpcác hàm để thao tác và chương trình sẽ quản lí phần còn lại
Hạn chế:
+ Không hỗ trợ một số tính năng của SQLite92
+ Cơ sở dữ liệu do SQLite tạo ra sẽ private, tức là chỉ sử dụng cho bảnthân ứng dụng
+ SQLite không hỗ trợ lệnh ALTER TABLE, do đó không thể thực hiệnchỉnh sửa hoặc xóa cột trong bảng
+ Vài tiến trình hoặc luồng có thể truy cập tới cùng một cơ sở dữ liệu.Việc đọc dữ liệu có thể chạy song song, còn việc ghi dữ liệu thì không đượcphép chạy đồng thời
2.3.3 Các lớp dữ liệu trong SQLite
Lớp lưu trữ:
Lớp lưu trữ Mô tả
NULL Giá trị là giá trị NULL
INTEGER Giá trị là số nguyên, có dầu được lưu trữ trong 1, 2, 3, 4, 6
hoặc 8 bytes tùy thuộc vào độ lớn của dữ liệu
REAL Giá trị này là một giá trị dấu phẩy động, được lưu dưới dạng
số dấu phẩy động 8 byte của IEEE
TEXT Giá trị là một chuỗi văn bản, được lưu trữ bằng cách sử dụng
mã hóa cơ sở dữ liệu (UTF-8, UTF-16BE hoặc UTF-16LE)BLOB Giá trị là một blob của dữ liệu, được lưu trữ chính xác như
đầu vào
Bảng 2.1: Lớp lưu trữ dữ liệu trong SQLite
Trang 26Affinity Type trong SQLite:
Affinity Mô tả
NONE Một cột với NONE affinity không ưu tiên một lớp lưu trữ
nào với lớp một lớp lưu trữ khác và không cố gắng ép dữliệu từ một lớp lưu trữ này sang dạng một lớp lưu trữ khác.NUMERIC Cột này có thể chứa các giá trị sử dụng tất cả 5 lớp lưu trữ.REAL Hành vi giống như một cột với NUMERIC affinity ngoại trừ
việc nó buộc các giá trị nguyên thành biểu diễn dấu phẩyđộng
TEXT Cột này lưu trữ tất cả dữ liệu bằng cách sử dụng các lớp lưu
trữ NULL, TEXT, hoặc BLOB
INTEGER Hành vi giống như một cột với NUMERIC affinity, với một
ngoại lệ trong biểu thức CAST
Bảng 2.2: Affinity Type trong SQLite
Tên kiểu dữ liệu và affinity trong SQLite:
INT - INTEGER - TINYINT - SMALLINT - MEDIUMINT
- BIGINT - UNSIGNED BIG INT - INT2 - INT8
INTEGER
CHARACTER(20) - VARCHAR(255) - VARYING
CHARACTER(255) - NCHAR(55) - NATIVE
CHARACTER(70) - NVARCHAR(100) - TEXT – CLOB
TEXT
BLOB - Không có kiểu dữ liệu nào được xác định NONE
REAL - DOUBLE - DOUBLE PRECISION – FLOAT REAL
NUMERIC - DECIMAL(10,5) - BOOLEAN - DATE –
DATETIME
NUMERIC
Bảng 2.3: Các kiểu dữ liệu và affinity trong SQLite
Kiểu dữ liệu Boolean trong SQLite:
SQLite không hỗ trợ lớp lưu trữ Boolean riêng rẽ Thay vào đó, các giátrị Boolean được lưu trữ dưới dạng các số nguyên: 0 cho false và 1 cho true
Kiểu dữ liệu date and time trong SQLite:
Lớp lưu trữ Định dạng Date
TEXT Một date trong định dạng "YYYY – MM – DD HH : MM :