CHƯƠNG 1 : TỔNG QUAN 1.1 Lý do chọn đề tài Với sự bùng nổ củacông nghệ thông tin, cũng như những sản phẩm liên quan tới công nghệ. Và đặc biệt là dịch Covid-19 đã làm đảolộn cuộc sống thường ngày của mọi người, rất nhiều người đã mất đi thói quen thường có củabản thân và cảm thấy khó khăn để tạodựng lại thói quen đã mất. Quakhảosát và tìm hiểu, nhóm thấy được rằng nhu cầu theodõi thói quen hàng ngày ngày càng nhiều đối với nhiều độ tuổi người dùng khác nhau đặc biệt là học sinh và sinh viên. Việc theodõi thói quen hằng ngày sẽ giúp người dùng có động lực và tự nhắc nhở bản thân để không ngừng hoàn thiện bản thân hơn theo từng ngày.
Cũng như khả năng cải thiện chất lượng cuộc sống thông quacác thói quen tốt. Nắm bắt được nhu cầu đó, nhóm đã quyết định tìm hiểu và thực hiện để tài “Xây dựng ứng dụng theodõi thói quen trên Android”. Với mong muốn hướng tới đối tượng ở mọi độ tuổi cần theodõi hành vi thói quen củamình hằng ngày chỉ với điện thoại thông minh.2 Mục tiêu đề tài Xây dựng ứng dụng đáp ứng nhu cầu theodõi thói quen hằng ngày củangười dùng. Ứng dung đáp ứng được các chức năng sau: Khởi tạongười dùng trên thiết bị mới.
Hiển thị danh sách các thói quen đang theodõi theongày. Thống kê các thói quen theongày. Thống kê một thói quen theotháng. Thống kê các thói quen không thực hiện theotuần.
Cập nhật thói quen. Đếm ngược thời gian giống phương pháp Pomodoro. Tạolời nhắc nhở.3 Phương pháp nghiên cứu Phương pháp tổng hợp cơ sở từ lý thuyết: Học hỏi và tìm hiểu các tài liệu, các ứng dụng liên quan đến các công nghệ đang tìm hiểu. Đánh giá và lựachọn công nghệ.
Phương pháp tham khảoý kiến từ chuyên gia. 1 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker Tham khảoý kiến đóng góp từ giảng viên giảng dạy, các anh, chị và bạn bè có kinh nghiệm liên quan đến các vấn đề công nghệ, vấn đề thực tiễn trong quá trình thực hiện đề tài để tạotính chính xác và khoahọc củađề tài. 2 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu Android là một hệ điều hành được phát triển trên nền Linux 2.6 được thiết kế cho các thiết bị dị động với màn hình cảm ứng như điện thoại thông minh, máy tính bảng. Ban đầu, Android được phát triển bởi công ty liên hợp Android, được Google mua lại vào năm 2005 và cho ramắt dưới dạng mã nguồn mở vào năm 2007.
Hiện nay Android đã trở thành một trong những hệ điều hành được ưachuộng nhất trên thế giới.2 Lịch sử các phiên bản Android Dưới đây là danh sách tóm tắt các bản Android cùng tên và ngày phát hành. : Lịch sử các phiên bản Android Phiên bản Tên Ngày phát hành Android 1.4 Ice Cream Sandwich 18/10/2011 Android 4.1 Jelly Bean 09/07/2012 Android 4.1 Lollipop 12/11/2014 3 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker Android 6.0 Pie 06/08/2018 Android 10 Android Q 03/09/2019 Android 11 Android R 08/09/2020 4 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker 2.3 Cấutrúc hệ điều hành Android Hình. : Cấu trúc hệ điều hành Android 2.1 Linux Kernel Tầng thấp nhất là Linux Kernel giúp xử lý tiếp nhận các thiết bị ngoại vi như màn hình, máy ảnh, bàn phím,… Đồng thời kernel còn xử lý tốt mạng kết nối, trình điều khiển thiết bị.2 Các thư viện Tiếp theolà tầng thư viện gốc như Webkit hỗ trợ trình duyệt, SQLite dành chocơ sở dữ liệu, FreeType hỗ trợ phông chữ, hay các thư viện SSL hỗ trợ bảo mật Internet… 2.3 Các thư viện lõi Về các thư viện lõi, một số thư viện chính củaAndroid: android.app – Cấp quyền truy cập vàoứng dụng.content – Cấp quyền truy cập nội dung (content), truyền tải thông điệp giữacác ứng dụng. 5 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker android.database – Được sử dụng để truy cập dữ liệu củacontent provider và các lớp quản lý cơ sở dữ liệu SQLite.opengl -Một Javainterface để sử dụng OpenGL.os - Cung cấp các ứng dụng với quyền truy cập vàocác dịch vụ chuẩn củahệ điều hành bao gồm thông báo, các dịch vụ hệ thống và các giaotiếp nội tiến trình.text – Để hiển thị và thaotác chữ trên màn hình.view – Các thành phần cơ bản trong xây dựng UI củaứng dụng.widget - Tập thành phần UI đã được xây dựng sẵn như button, label, list view, radiobutton,.webkit - Tập các lớp chophép duyệt web được xây dựng trong các ứng dụng.4 Android Runtime Nằm ở lớp thứ 2 từ dưới lên.
Tầng này baogồm phần củaAndroid quan trọng là Dalvik Virtual Machine - là một loại JavaVirtual Machine được phát triển tối ưu cho Android với hiệu suất caohơn cùng với các thư viện lõi đã được trình bày ở trên. DVM sử dụng các đặc trưng củaLinux Kernel như quản lý bộ nhớ và đaluồng. DVM giúp các ứng dụng Android chạy trong tiến trình riêng củanó. Android Runtime cũng cung cấp các thư viện chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java.5 Application Framework Lớp Android Framework baogồm các API củaAndroid như UI, điện thoại.
Android Framework baogồm các dịch vụ chính sau: Activity Manager: Kiểm soát tất cả mọi mặt củavòng đời ứng dụng và ngăn xếp các Activity. Content Providers: Chophép các ứng dụng chiasẻ dữ liệu với nhau. Resource Manager: Quyền truy cập các tài nguyên như chuỗi, màu sắc, layout UI. Notifications Manager: Hiển thị cảnh báo và các thông báo cho người dùng.
View System: Các thành phần giaodiện (view) được sử dụng để tạoUI.6 Thư viện RX Java RX Javalà một thư viện khá nổi tiếng, được sử dụng choviệc lập trình Reactive hay còn gọi là lập trình phản ứng, trong quá trình phát triển các ứng dụng dành cho 6 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker Android. Nguyên nhân là vì thư viện RX Javalàm đơn giản hóađi các tác vụ đồng thời (concurrency) hay không đồng thời (asynchronous) trong lập trình di động. Những đặc điểm nổi bật củaRX Javabaogồm: Tính trực quang (Intuitivity): RX sử dụng cùng kiểu synxtax cho các tác vụ liên quan tới (action- descriptions) với synxtax củacác ngôn ngữ lập trình như JavaStream. Tính mở rộng (Expandability): Người lập trình có thể mở rộng thư viện RX bằng cách tự custom các extension method.
Tính kết hợp (Composability): Người lập trình có thể dễ dàng kết hợp các hàm (operator) trong Rx Java, để thực hiện các hàm phức tạp hơn. Tính chuyển đổi (Convertibility): Các hàm trong RxJavacó thể chuyển đổi kiểu dữ liệu thông quaviệc phân loại (filtering), xử lý (processing), và mở rộng (expanding) các luồng dữ liệu. Tính khai báo (Declarativity): Người lập trình có thể mô tả yêu cầu củachương trình ở mức độ trừu tượng caohơn.7 Dagger Có nhiều ứng dụng Android cần phải phụ thuộc vàoviệc khởi tạocác đối tượng (object) cần thiết cho các phụ thuộc (dependencies). Ví dụ như một Client API của Twitter có thể được xây dựng, sử dụng các thư viện networking như Gson.
Với sự trợ giúp củaDagger, nó sẽ thực hiện việc phân tích các phụ thuộc (dependencies) , và tạo racác dòng code để kết nối chúng lại với nhau. Dagger hoạt động hoàn toàn dựatheo việc sử dụng các annotation processor và compile-time check, để phân tích và xác thực các phụ thuộc. Khác với những Frame work khác, Dagger không chịu những hạn chế như quá phụ thuộc vàoXML, hay hiệu năng có vấn đề khi khởi động.4 Ưuđiểm của Android Những ưu điểm củaAndroid: Giá cả thiết bị di động Android: Thị trường di động có hệ điều hành Android rất đadạng với nhiều giá cả khác nhau từ thấp tới cao, nhưng vẫn đầy đủ các chức năng cần thiết, và sức 7 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker mạnh phần cứng đầy mạnh mẽ, phù hợp với đa số người tiêu dùng. Từ những điều trên có thể suy rađược việc làm ứng dụng choAndroid là một hướng đi thông minh, khi tiềm năng người dùng là rất lớn và đadạng Điện thoại có hệ điều hành Android được sản xuất bởi nhiều công ty smart phone như Samsung, Sony Ericsson hay Lenuvo.
Đối với điện thoại sử dụng IOS, chỉ có sản phẩm củaApple là có hệ điều hành IOS, và thường sản phẩm củaApple có giá thành rất đắt đỏ, và nếu vì giá tiền mà không mua được thì cũng không còn cách nào khác để sỡ hữu điện thoại IOS. Trái ngược với sản phẩm IOS, thì điện thoại Android lại đadạng hơn, với nhiều hãng sản xuất khác nhau, cấu hình và giá cả cạnh tranh. Hệ thống mở: Khác với IOS, là một hệ thống đóng mà hầu như bất khả thi để có thể tùy biến. Android là một hệ điều hành mở, chophép người dùng tùy biến thiết bị củamình với những phần mềm bên ngoài.
Thân thiện với Google: Bởi vì Android là hệ điều hành được thiết kế bởi Google, hầu hết tất cả thiết bị di động Android đều được tích hợp với những dịch vụ nổi tiếng của Google, như Gmail, Google Reader, Google Docs, v.5 Khuyết điểm của Android Những khuyết điểm củaAndroid: Dễ bị dính Virus: Chính vì Android là một HĐH mở, nên thiết bị di động Android dễ bị Virus tấn công hơn hơn sovới Iphone. Dongười dùng có thể tải ứng dụng từ nhiều trang hay nguồn khác nhau, tạođiều kiện chokẻ xấu phát tán virus lên thiết bị. Với hệ điều hành IOS, Apple chỉ chophép người dùng tải ứng dụng từ Apple App Store, được kiểm soát một cách chặt chẽ bởi Apple, khiến cho việc xâm nhập củahacker khó hơn nhiều. Ứng dụng bị giới hạn bởi chính hệ điềuhành: Mặc dù rằng có hơn trăm ngàn ứng dụng sẵn có chongười dùng Android, không phải tất cả người dùng đều có thể chạy ứng dụng trên thiết bị điện thoại củahọ.
Nguyên nhân ở đây chính vì việc người dùng Android thường tiếp tục việc xử dụng các phiên bản HĐH cũ củaAndroid, chẳng hạn như Gingerbread, được phát hành vàonăm 2010 thay vì Kitkat, là phiên bản mới nhất hiện tại. Một số lý dotrên chính là nguyên nhân mà một số điện thoại 8 Báo cáo đồ án tốt nghiệp Ứng dụng Habit Tracker Android đời mới có thể không được cập nhật phiên bản HĐH mới nhất, để chạy các ứng dụng mới.6 Ứng dụng Lớp trên nhất là Application. Các ứng dụng được tạo rasẽ được cài đặt trên lớp này. Ví dụ như: Danh bạ, nhắn tin, trò chơi.1 Giới thiệu Java Spring boot là một công cụ mở khiến cho việc sử dụng các Java based Framework để tạo các ứng dụng web hay microservices trở nên đơn giản hơn.