Xây dựng ứng dụng ChatApp trên Android

80 0 0
Tài liệu đã được kiểm tra trùng lặp
Xây dựng ứng dụng ChatApp trên Android

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Xây dựng ứng dụng ChatApp trên Android hoàn thành sinh viên đã vận dụng kiến thức và khảo sát thực tế để thực hiện yêu cầu bài toán. Ứng dụng đã được hoàn thành theo yêu cầu đã đặt ra ban đầu với các chức năng đã được thực hiện một các tương đối chỉn chu, ứng dụng đã đạt được mục tiêu ban đầu như: - Có thể gửi tin nhắn theo nhiều định dạng khác nhau - Thực hiện cuộc gọi giữa hai người dùng - Giúp người dùng xem lại đoạn tin nhắn giữa hai người hoặc nhiều người với tính năng nhóm chat - Hiểu thị thông tin tổng quát cá nhân hoặc người dùng khác

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNGKHOA CÔNG NGHỆ THÔNG TIN

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN -

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến Ban giám hiệu Trường Đại họcCông nghệ thông tin và Truyền thông, đặc biệt là Khoa Công nghệ thông tin đã tạo điềukiện cho em thực hiện và hoàn thành đồ án tốt nghiệp này.

Em xin trân trọng cảm ơn Thầy Nguyễn Văn Việt, giảng viên hướng dẫn đồ án, ngườiđã tận tình hướng dẫn, góp ý và hỗ trợ em trong suốt quá trình thực hiện đồ án Nhờ vàosự hướng dẫn cùng các kiến thức chuyên ngành của thầy, em đã có thể hoàn thành đượcđề tài "Phát triển ứng dụng nhắn tin gọi điện trên Android" một cách tốt nhất.

Em cũng xin gửi lời cảm ơn tất cả các giảng viên thuộc khoa Công nghệ thông tincũng như các giảng viên thuộc các bộ môn khác đã truyền đạt kiến thức và kỹ năng choem trong các lĩnh vực khác nhau đặc biệt là về Công nghệ thông tin trong suốt quá trìnhhọc tập tại trường.

Em nhận thức được rằng đồ án của em còn nhiều thiếu sót cần cải thiện và bổ sungthêm Vậy nên em mong muốn có được các góp ý và ý tưởng về đề tài này để em có thểtiếp tục học hỏi và nghiên cứu để cải thiện cũng như áp dụng cho các dự án sau này.

Em xin chân thành cảm ơn!

Thái Nguyên, ngày tháng năm 2024Sinh viên thực hiện

Hoàng Tùng Dương

Trang 4

LỜI CAM ĐOAN

Em xin cam đoan đồ án tốt nghiệp “XÂY DỰNG ỨNG DỤNG NHẮN TIN GỌIĐIỆN” là quá trình nghiên cứu của bản thân để hoàn thành Cùng sự hướng dẫn tận tìnhcủa giảng viên hướng dẫn TS - Nguyễn Văn Việt Những phần sử dụng tài liệu tham khảovà sử dụng một số kiến thức trong đồ án đã được liệt kê và nêu rõ trong phần tài liệutham khảo.

Thái Nguyên, ngày tháng năm 2024Sinh viên thực hiện

Hoàng Tùng Dương

Trang 5

1.2 Các công cụ và tiện ích được sử dụng 16

1.2.1 Android Studio IDE 16

1.2.2 Ngôn ngữ lập trình Java 17

1.2.3 Thư viện Zegocloud 20

1.2.4 Thư viện Material 21

Trang 7

CHƯƠNG 3 XÂY DỰNG & PHÁT TRIỂN ỨNG DỤNG 58

3.2.5 Giao diện chức năng nhật ký 69

3.2.6 Giao diện quản lý thông tin cá nhân 71

3.2.7 Giao diện trang tìm kiếm 72

3.2.8 Giao diện màn hình chat bot 73

3.2.9 Giao diện gọi thoại 74

3.2.10 Hộp thoại đăng xuất 76

KẾT LUẬN 77

1 Kết quả đạt được 77

2 Những điểm hạn chế 77

3 Hướng phát triển 77

TÀI LIỆU THAM KHẢO 78

Ý KIẾN CỦA GIÁO VIÊN HƯỚNG DẪN 79

Trang 8

MỤC LỤC HÌNH ẢNH

Hình 2.1 Trường hợp sử dụng tổng quát 27

Hình 2.2: Biểu đồ hoạt động chức năng Đăng nhập bằng địa chỉ email 31

Hình 2.3 Biểu đồ hoạt động chức năng Đăng nhập bằng số điện thoại 32

Hình 2.4 Biểu đồ hoạt động chức năng Tạo tài khoản 33

Hình 2.5 Biểu đồ hoạt động chức năng Đặt lại mật khẩu 33

Hình 2.6 Biểu đồ trình tự chức năng Đăng nhập bằng email 34

Hình 2.7 Biểu đồ trình tự cho chức năng Đăng nhập bằng số điện thoại 35

Hình 2.8 Biểu đồ hoạt động cho chức năng Đăng ký 36

Hình 2.9 Biểu đồ hoạt động cho chức năng Đặt lại mật khẩu 36

Hình 2.10 Biểu đồ hoạt động khi gửi tin nhắn 40

Hình 2.11 Biểu đồ hoạt động khi gửi hình ảnh 41

Hình 2.12 Biểu đồ hoạt động chức năng khi gọi thoại 42

Hình 2.17 Biểu đồ hoạt động cho chức năng khi đăng tải nhật ký 46

Hình 2.18 Biểu đồ hoạt động cho chức năng xóa bài đăng 47

Hình 2.19 Biều đồ trình tự cho chức năng đăng tải bài viết 48

Hình 2.20 Biểu đồ trình tự cho chức năng Xóa bài đăng 48

Hình 2.22 Biểu đồ hoạt động cho chức năng Xem trang cá nhân 50

Hình 2.23 Biểu đồ hoạt động cho chức năng chỉnh sửa trang cá nhân 51

Hình 2.24 Biểu đồ trình tự cho chức năng Xem trang cá nhân 51

Hình 2.25 Biểu đồ trình tự Chỉnh sửa trang cá nhân 52

Hình 3.1 Màn hình xác thực 59

Hình 3.2 Biểu mẫu Đăng nhập bằng số điện thoại 60

Hình 3.3 Biểu mẫu Đăng ký 61

Hình 3.4 Biểu mẫu Đặt lại mật khẩu 62

Hình 3.5 Giao diện danh sách tin nhắn và giao diện hội thoại 63

Trang 9

Hình 3.6 Giao diện danh bạ 64Hình 3.7 Giao diện hiển thị danh sách tin nhắn và hội thoại nhóm 65

Trang 10

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT1.1 Các công nghệ được áp dụng

1.1.1 MVP Pattern

Mô hình MVP (Model-View- Presenter) là một mô hình kiến trúc phần mềm được sửdụng trong việc phát triển ứng dụng Android để tách rời giao diện người dùng (UI) vàlogic xử lý ứng dụng, giúp tăng tính bảo trì và mở rộng của ứng dụng MVP được lấycảm hứng từ mô hình MVC (Model-View-Controller), nhưng nó tập trung hơn vào việclàm cho ứng dụng dễ kiểm soát và kiểm thử.

Trong MVP, Model đại diện cho dữ liệu và logic xử lý dữ liệu Cung cấp dữ liệu choPresenter khi được yêu cầu, model không biết gì về View và Presenter.

View là thành phần hiển thị giao diện người dùng Nó đảm nhận vai trò hiển thị dữ liệutừ Presenter và tương tác với người dùng View không chứa logic xử lý dữ liệu và chỉ làmnhiệm vụ hiển thị thông tin

Presenter là một lớp trung gian giữa Model và View Nó nhận dữ liệu từ Model vàchuyển đổi nó thành dữ liệu phù hợp để hiển thị trên View Presenter cung cấp các thuộctính và lệnh mà View sử dụng để hiển thị và tương tác với dữ liệu Nó không biết gì vềgiao diện người dùng cụ thể, điều này giúp tách biệt hoàn toàn logic xử lý dữ liệu và giaodiện người dùng

Ưu điểm của MVP bao gồm:

- Tách biệt rõ ràng giữa logic xử lý dữ liệu và giao diện người dùng, giúp dễ dàng quảnlý và bảo trì ứng dụng.

- Tính linh hoạt và khả năng kiểm thử tốt do logic xử lý nằm trong Presenter.

- MVP cũng dễ dàng kiểm thử hơn vì có Presenter là một lớp riêng biệt quản lý logicvà tương tác giữa View và Model.

Tuy nhiên, MVP cũng có một số nhược điểm:

- MVP có thể làm cho kiến trúc ứng dụng trở nên phức tạp hơn, đặc biệt là khi cónhiều lớp trung gian giữa View, Presenter, và Model Việc này có thể làm tăng độ phứctạp trong việc quản lý các tương tác và mối quan hệ giữa các lớp.

- Presenter sẽ dần lớn lên do bị thêm các business logic rải rác Người dùng sẽ rất khóđể kiểm soát và chia nhỏ code khi Presenter đã quá lớn.

Trang 11

So sánh với MVC (Model-View-Controller) và MVVM (Model-View-Presenter):- Trong MVC, Controller hoặc Presenter đảm nhận vai trò trung gian giữa Model vàView, trong khi MVP sử dụng Presenter MVC chủ yếu tập trung vào việc điều phối vàđiều khiển, MVVM tập trung vào việc quản lý dữ liệu và giao diện người dùng, trong khiMVP tách biệt rõ ràng xử lý logic và điều phối.

- MVVM tập trung vào việc cung cấp dữ liệu cho View thông qua ViewModel, trongkhi MVP đặt nặng tính tương tác giữa Presenter và View.

Tóm lại, MVP là một mô hình thiết kế phát triển phần mềm mạnh mẽ và linh hoạtkhông quá phức tạp Nó tách biệt rõ ràng giữa logic xử lý dữ liệu và giao diện ngườidùng, giúp dễ dàng quản lý và bảo trì ứng dụng MVP có ưu điểm về tính linh hoạt, khảnăng kiểm thử tốt và khả năng tái sử dụng cao Tuy nhiên, nó đòi hỏi việc tạo ra nhiềulớp và có một số khái niệm phức tạp So với MVC và MVVM, MVP Tách biệt rõ rànggiữa xử logic và giao diện người dùng Dễ kiểm thử hơn do Presenter không phụ thuộcvào View.

1.1.2 Clean Architecture

Clean Architecture (Kiến trúc sạch) là một phương pháp thiết kế phần mềm được pháttriển bởi Robert C Martin, còn được gọi là Uncle Bob Nó tập trung vào việc tách biệtcác thành phần và lớp của hệ thống thành các lớp độc lập với nhau, đồng thời đảm bảotính mở rộng, bảo trì và kiểm thử dễ dàng.

Mục tiêu chính của Clean Architecture là tạo ra một hệ thống có thể thay đổi các chitiết bên trong mà không ảnh hưởng đến các thành phần bên ngoài Nó đề cao sự phântách giữa các lớp và sự tuân thủ các nguyên tắc SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation và Dependency Inversion).

Clean Architecture được chia thành các lớp theo các mức độ phụ thuộc và trách nhiệmkhác nhau Các lớp này bao gồm:

1 Entities (Thực thể): Đây là các đối tượng cơ bản của hệ thống, biểu diễn các kháiniệm cốt lõi và logic của ứng dụng.

2 Use Cases (Các trường hợp sử dụng): Lớp này chứa các quy trình kinh doanh cụ thể

Trang 12

3 Interface Adapters (Bộ chuyển đổi giao diện): Lớp này chứa các thành phần liênquan đến việc giao tiếp với bên ngoài của hệ thống, bao gồm các lớp giao diện ngườidùng, lớp giao tiếp với các dịch vụ bên ngoài (API, cơ sở dữ liệu, v.v.) và các lớp chuyểnđổi dữ liệu.

4 Frameworks & Drivers (Các khung ứng dụng và trình điều khiển): Đây là thànhphần giao tiếp trực tiếp với các công nghệ và framework bên ngoài như UI frameworks,databases, web servers, v.v Nó chịu trách nhiệm kết nối các thành phần bên trong với cácthành phần bên ngoài.

Ưu điểm của Clean Architecture bao gồm:

- Tính linh hoạt và dễ dàng mở rộng: Các thành phần được tách biệt rõ ràng, cho phépthay đổi và bảo trì dễ dàng mà không ảnh hưởng đến các thành phần khác.

- Khả năng kiểm thử tốt: Các thành phần có thể được kiểm thử độc lập mà không cầnphụ thuộc vào các thành phần khác.

- Tính tái sử dụng cao: Sự phân tách giữa các lớp và nguyên tắc SOLID tạo điều kiệncho việc tái sử dụng mã nguồn.

Tuy nhiên, Clean Architecture cũng có một số nhược điểm:

- Đòi hỏi sự hiểu biết về nguyên tắc và quy tắc thiết kế phần mềm.

- Tạo ra một số lớp và thành phần phụ để xử lý sự tách biệt và phân chia trách nhiệm,gây ra một lượng mã nguồn và công việc phát triển thêm.

Clean Architecture giúp xây dựng hệ thống phần mềm linh hoạt, dễ bảo trì và dễ kiểmthử Nó tách biệt các thành phần và lớp của hệ thống thành các lớp độc lập với nhau,đồng thời đảm bảo tính mở rộng và bảo trì dễ dàng Các lớp trong Clean Architectuređược tổ chức theo mức độ phụ thuộc và trách nhiệm, bao gồm Entities, Use Cases,Interface Adapters và Frameworks & Drivers.

Entities đại diện cho các đối tượng cốt lõi của hệ thống, biểu diễn các khái niệm vàlogic chính Use Cases chứa các trường hợp sử dụng và tác vụ kinh doanh, sử dụng cácđối tượng Entities để thực hiện các nhiệm vụ cụ thể Interface Adapters chứa các thành

Trang 13

phần liên quan đến giao tiếp với bên ngoài, bao gồm giao diện người dùng, dịch vụ bênngoài và chuyển đổi dữ liệu Cuối cùng, Frameworks & Drivers là thành phần giao tiếpvới các công nghệ và framework bên ngoài, như UI frameworks hay cơ sở dữ liệu.

Clean Architecture có nhiều ưu điểm, bao gồm tính linh hoạt và dễ mở rộng, khả năngkiểm thử tốt và khả năng tái sử dụng cao Việc tách biệt rõ ràng giữa các thành phần giúpthay đổi và bảo trì dễ dàng, đồng thời cho phép kiểm thử độc lập các thành phần Tuynhiên, việc áp dụng Clean Architecture đòi hỏi hiểu biết về nguyên tắc và quy tắc thiết kếphần mềm, cũng như tạo ra một số lớp và công việc phát triển thêm.

Clean Architecture là một phương pháp thiết kế phần mềm mạnh mẽ, giúp xây dựng hệthống linh hoạt, bảo trì dễ dàng và dễ kiểm thử Nó đảm bảo sự tách biệt giữa các thànhphần và lớp trong hệ thống, đồng thời tuân thủ nguyên tắc SOLID để tạo ra một kiến trúcsạch và dễ mở rộng.

1.1.3 Dependency Injection

Dependency Injection (DI) là một nguyên tắc trong lập trình phần mềm giúp quản lýcác thành phần phụ thuộc (dependencies) trong một ứng dụng Nó tạo điều kiện cho việcchèn (inject) các đối tượng hoặc các phụ thuộc vào một thành phần từ bên ngoài, thay vìthành phần tự tạo hay quản lý chúng.

Mục tiêu chính của Dependency Injection là giảm sự phụ thuộc chặt chẽ giữa cácthành phần trong một hệ thống phần mềm Thay vì các thành phần tự tạo hoặc trực tiếpgọi các thành phần phụ thuộc, DI cho phép các phụ thuộc được cung cấp từ bên ngoài,thông qua việc chèn chúng vào thành phần cần sử dụng Điều này tạo ra một cách linhhoạt để thay đổi và tái sử dụng các thành phần mà không làm thay đổi mã nguồn của cácthành phần khác.

Có ba phương pháp chính để thực hiện Dependency Injection:

1 Constructor Injection (Chèn thông qua Constructor): Trong phương pháp này, cácphụ thuộc được chèn vào thông qua các tham số của constructor của một lớp Khi khởitạo một đối tượng từ lớp đó, các phụ thuộc sẽ được cung cấp và gán cho các biến thànhviên tương ứng.

Trang 14

2 Setter Injection (Chèn thông qua Setter): Trong phương pháp này, các phụ thuộcđược chèn vào thông qua các phương thức setter của một lớp Sau khi khởi tạo đối tượng,các phương thức setter sẽ được gọi để cung cấp các phụ thuộc.

3 Interface Injection (Chèn thông qua Interface): Trong phương pháp này, mộtinterface được sử dụng để chèn các phụ thuộc vào thành phần Lớp thành phần sẽ triểnkhai interface này và cung cấp implement cho các phương thức chèn phụ thuộc.

Ưu điểm của Dependency Injection bao gồm:

- Giảm sự phụ thuộc: DI giúp giảm sự phụ thuộc chặt chẽ giữa các thành phần, làmcho mã nguồn linh hoạt hơn và dễ mở rộng hơn.

- Tái sử dụng và kiểm thử dễ dàng: Các phụ thuộc có thể được thay thế hoặc mô phỏngtrong quá trình kiểm thử hoặc thay đổi logic mà không cần thay đổi mã nguồn của thànhphần.

- Quản lý các thành phần phụ thuộc: DI giúp quản lý việc tạo và cung cấp các thànhphần phụ thuộc, đảm bảo rằng các phiên bản và tài nguyên được quản lý một cách hiệuquả.

Tuy nhiên, DI cũng có một số nhược điểm:

- Điều phối phụ thuộc: Việc quản lý và điều phối các phụ thuộc có thể trở nên phức tạpvà khó khăn trong các ứng dụng lớn.

- Cần hiểu rõ cấu trúc và quy tắc: Áp dụng DI đòi hỏi hiểu rõ nguyên tắc và quy tắccủa nó để đảm bảo việc chèn phụ thuộc được thực hiện đúng cách.

Dependency Injection là một nguyên tắc quan trọng trong lập trình phần mềm, giúpgiảm sựphụ thuộc và tạo ra các ứng dụng dễ dàng mở rộng, linh hoạt và dễ quản lý Nó làmột công cụ mạnh mẽ trong việc xây dựng các hệ thống phần mềm có khả năng thay đổivà bảo trì tốt.

Trang 15

1.1.4 Serverless

Serverless là một mô hình phát triển ứng dụng trong đó nhà phát triển không cần quantâm đến việc quản lý cơ sở hạ tầng máy chủ (server infrastructure) Thay vì tập trung vàoviệc triển khai và quản lý máy chủ, nhà phát triển chỉ cần tập trung vào việc viết mã vàtriển khai các chức năng (functions) hoặc logic của ứng dụng.

Mô hình serverless cho phép nhà phát triển xây dựng ứng dụng phân tán và tự độngmở rộng mà không cần lo lắng về việc mua sắm, cấu hình và duy trì các máy chủ Cácchức năng (functions) trong mô hình này được triển khai và chạy trên nền tảng điện toánđám mây, và việc quản lý tài nguyên và mở rộng đều do nhà cung cấp điện toán đám mây(cloud provider) chịu trách nhiệm.

Có nhiều nhà cung cấp serverless phổ biến trên thị trường, mỗi nhà cung cấp đều cungcấp một dịch vụ serverless riêng với các tính năng và công cụ hỗ trợ Dưới đây là một sốví dụ về các nhà cung cấp serverless:

1 Amazon Web Services (AWS) Lambda: AWS Lambda là dịch vụ serverless củaAmazon Nó cho phép bạn triển khai các hàm (functions) và chạy chúng mà không cầnquan tâm đến việc quản lý máy chủ Lambda hỗ trợ nhiều ngôn ngữ lập trình và tích hợptốt với các dịch vụ khác trong hệ sinh thái AWS.

2 Microsoft Azure Functions: Azure Functions là dịch vụ serverless của MicrosoftAzure Nó cung cấp một môi trường để triển khai các chức năng (functions) mà khôngcần lo lắng về việc cấu hình máy chủ Azure Functions tích hợp tốt với các dịch vụ kháccủa Azure và hỗ trợ nhiều ngôn ngữ lập trình.

3 Google Cloud Functions: Google Cloud Functions là dịch vụ serverless của GoogleCloud Platform Nó cho phép bạn triển khai chức năng (functions) và chạy chúng màkhông cần quản lý cơ sở hạ tầng Cloud Functions tích hợp tốt với các dịch vụ khác củaGoogle Cloud và hỗ trợ nhiều ngôn ngữ lập trình.

4 IBM Cloud Functions: IBM Cloud Functions là dịch vụ serverless của IBM Cloud.Nó cho phép bạn triển khai các hàm (functions) và chạy chúng mà không cần quản lýmáy chủ IBM Cloud Functions hỗ trợ nhiều ngôn ngữ lập trình và tích hợp tốt với cácdịch vụ khác trong hệ sinh thái IBM Cloud.

Trang 16

Mô hình serverless giúp giảm sự phụ thuộc vào cơ sở hạ tầng và tập trung vào việc tạora các chức năng (functions) và logic của ứng dụng Nó mang lại sự linh hoạt, mở rộng vàgiảm chi phí cho việc phát triển ứng dụng Các nhà cung cấp serverless cung cấp cáccông cụ và dịch vụ để hỗ trợ triển khai và quản lý serverless một cách dễ dàng và hiệuquả.

1.2 Các công cụ và tiện ích được sử dụng

1.2.1 Android Studio IDE

Android Studio là một môi trường phát triển tích hợp (Integrated DevelopmentEnvironment - IDE) được phát triển bởi Google, chuyên dùng cho việc phát triển ứngdụng di động trên nền tảng Android Với các công cụ, tính năng và sự tích hợp đặc biệtcho việc phát triển Android, Android Studio là một lựa chọn hàng đầu cho các nhà pháttriển ứng dụng di động.

Hình 1.1 Android studio

Dưới đây là một số đặc điểm và tính năng chính của Android Studio:

1 Tích hợp dễ dàng: Android Studio tích hợp tốt với trình quản lý mã nguồn Git và hệthống kiểm soát phiên bản, cho phép nhà phát triển dễ dàng quản lý mã nguồn và làmviệc trong nhóm Nó cũng tích hợp với Gradle, một công cụ xây dựng mạnh mẽ cho việcxây dựng, kiểm thử và triển khai ứng dụng Android.

2 Trình biên tập thông minh: Android Studio cung cấp trình biên tập mã nguồn thôngminh với các tính năng như gợi ý mã, kiểm tra lỗi cú pháp, tự động hoàn thành và địnhdạng mã tự động Điều này giúp tăng năng suất và giảm thời gian phát triển.

Trang 17

3 Thiết kế giao diện người dùng (UI): Android Studio cung cấp trình chỉnh sửa giaodiện người dùng (Layout Editor) cho phép nhà phát triển thiết kế giao diện người dùngmột cách trực quan Bằng cách kéo và thả các thành phần, sắp xếp và tùy chỉnh các yếutố giao diện, nhà phát triển có thể dễ dàng tạo ra giao diện người dùng hấp dẫn và tươngtác.

4 Trình giả lập thiết bị: Android Studio đi kèm với Android Emulator, một trình giảlập thiết bị Android tích hợp Trình giả lập này cho phép nhà phát triển thử nghiệm ứngdụng trên nhiều thiết bị Android khác nhau, mô phỏng các tính năng và hành vi của thiếtbị thực tế.

5 Hỗ trợ kiểm thử và gỡ lỗi: Android Studio cung cấp các công cụ mạnh mẽ để kiểmthử ứng dụng, bao gồm kiểm thử đơn vị (unit testing), kiểm thử chức năng (functionaltesting) và kiểm thử giao diện người dùng (UI testing) Nó cũng hỗ trợ gỡ lỗi (debugging)chi tiết, cho phép nhà phát triển theo dõi và sửa lỗi trong quá trình thực thi ứng dụng.

6 Tích hợp các công cụ và thư viện: Android Studio tích hợp và hỗ trợ một loạt cáccông cụ và thư viện hữu ích để giúp nhà phát triển xây dựng ứng dụng đa dạng và mạnhmẽ Điều này bao gồm hỗ trợ Kotlin (ngôn ngữ lập trình chính thức của Android), thưviện hỗ trợ Android Jetpack, Firebase, Google Play Services và nhiều công cụ và pluginkhác.

Android Studio là một IDE mạnh mẽ và toàn diện cho việc phát triển ứng dụngAndroid Với các tính năng và công cụ đa dạng cộng thêm sự hỗ trợ và cập nhật mạnhmẽ đến từ Google và nhà phát triển của IDE IntelliJ, việc phát triển ứng dụng di độngtrên hệ điều hành Android sẽ trở nên tiện lợi và dễ dàng hơn nhiều.

1.2.2 Ngôn ngữ lập trình Java

Năm 1990, James Gosling tạo ra ngôn ngữ Oak trong dự án Green của SunMicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng.Năm 1995, Oak đượcđổi tên thành Java và dần trở thành tiêu chuẩn cho công ngiệp Internet Vì Java phát triểnquá mạnh mẽ nên năm 2009, Oracle đã mạnh tay mua lại cả Sun MicorSystems để nắmngôn ngữ Java trong tay.

Trang 18

Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class),thay vì biên dịch mã nguồn thành mã máy, Java sẽ được biên dịch thành bytecode, sau đóđược chạy trên môi trường thực thi Java vẫn đang là ngôn ngữ thống trị trong lĩnh vựclập trình mặc cho sự trỗi dậy của các ngôn ngữ như là Python hay JavaScript

Java hầu như được sử dụng rộng rãi trong hầu hết các lĩnh vực từ ngân hàng, tài chính,bán lẻ, ứng dụng di động, thị trường chứng khoán hay thậm chí là Big data.

Java có tính Hướng đối tượng:

Trang 19

Mọi thứ trong Java đều có thể xem là đối tượng – sở hữu các thuộc tính và hành vi.Java còn được coi là ngôn ngữ hỗ trợ lập trình hướng đối tượng đầy đủ và hoàn thiệnnhất.

Java có tính Bảo mật:

Tất cả các mã Java được chuyển đổi sang byteCode sau khi biên dịch, cho phép pháttriển các hệ thống / ứng dụng không có virus, giả mạo Hơn nữa, cú pháp của Java rấtchặt chẽ nên giúp cho các chương trình Java thô sơ khi sinh ra đã có một mức độ bảo mậtnhất định (Cho dù chưa thực hiện các biện pháp bảo mật)

Java rất Mạnh mẽ :

Java có khả năng thích ứng với môi trường phát triển hỗ trợ cấp phát bộ nhớ động dogiảm lãng phí bộ nhớ và hiệu suất của ứng dụng được tăng lên Có bộ gom rác tự độngtrong java chạy trên Máy ảo Java để loại bỏ các đối tượng không còn được sử dụng bởiứng dụng Java nữa Có xử lý ngoại lệ và cơ chế kiểm tra kiểu trong Java Tất cả nhữngđiểm này làm cho Java mạnh mẽ.

Java có kiến trúc trung lập:

Không giống như nhiều ngôn ngữ lập trình khác bao gồm C và C ++, khi Java đượcbiên dịch, nó không được biên dịch thành máy cụ thể nền tảng, thay vào đó là biên dịchthành bytecode độc lập với nền tảng Bytecode này được phân phối trên web và đượcMáy ảo (JVM) giải thích trên bất kỳ nền tảng nào nó đang được chạy.

Do đó, khi bạn viết một đoạn mã Java trong một nền tảng cụ thể và tạo ra một tệp.Class mã thực thi Bạn có thể thực thi / chạy tệp Class này trên bất kỳ hệ thống nào, điềukiện duy nhất là hệ thống đích phải được cài đặt JVM (JRE) trong đó Nói tóm lại, trìnhbiên dịch Java tạo ra một định dạng tệp đối tượng có kiến trúc trung lập, làm cho mã

Trang 20

được biên dịch có thể thực thi được trên nhiều bộ xử lý, với sự hiện diện của hệ thốngJava Runtime.

Java có tính động:

Java là một ngôn ngữ động Nó hỗ trợ tải động của các lớp Nó có nghĩa là các lớpđược tải theo yêu cầu Nó cũng hỗ trợ các chức năng từ các ngôn ngữ bản địa của nó, tứclà, C và C ++ Java hỗ trợ biên dịch động và quản lý bộ nhớ tự động (bộ sưu tập rác).

Java có tính năng Biên dịch + Thông dịch:

Java sẽ được biên dịch thành byteCode sau đó được thông dịch bởi môi trường Javaruntime.

Java có Hiệu suất cao:

Java đạt được hiệu suất cao thông qua việc sử dụng byteCode có thể dễ dàng dịch sangmã máy và việc sử dụng các trình biên dịch JIT (Just-In-Time) giúp Java mang lại hiệunăng cao.

Java hỗ trợ Đa luồng:

Java hỗ trợ nhiều luồng thực thi, cho phép xử lý và thực hiện tính toán song song.

Java có tính phân tán:

Java cung cấp một tính năng giúp tạo các ứng dụng phân tán Sử dụng phương thức từxa (RMI - Remote Method Invocation), một chương trình có thể gọi một phương thứccủa một chương trình khác thông qua và nhận được đầu ra, cho phép các đối tượng củamột ứng dụng được phân bố và thực thi trên các máy tính khác nhau.

1.2.3 Thư viện Zegocloud

Zegocloud là một nền tảng cung cấp các giải pháp giao tiếp thời gian thực (RTC) vàdịch vụ đám mây nhằm hỗ trợ các ứng dụng truyền thông đa phương tiện, chẳng hạn nhưvideo, âm thanh, và nhắn tin Thư viện Zegocloud cung cấp các API và SDK mạnh mẽ đểxây dựng các ứng dụng liên quan đến hội nghị truyền hình, phát sóng trực tiếp, tròchuyện thoại, nhắn tin và nhiều hơn nữa.

Trang 21

Hình 1.3: ZEGOCLOUD

Các tính năng của Zegocloud:

 Video và Âm thanh: Hỗ trợ truyền tải video và âm thanh chất lượng cao với độ trễthấp, phù hợp cho hội nghị truyền hình, phát sóng trực tiếp, và các ứng dụngtruyền thông đa phương tiện khác.

 Hỗ trợ Đa nền tảng: Zegocloud cung cấp SDK cho nhiều nền tảng như iOS,Android, Web, và Unity, giúp bạn phát triển ứng dụng trên nhiều môi trường khácnhau.

 Quản lý Phát triển: Zegocloud cung cấp bảng điều khiển quản lý để giám sát vàkiểm soát các ứng dụng, tài nguyên, và dịch vụ liên quan.

Lợi ích của Zegocloud:

 Dễ dàng triển khai: Thư viện cung cấp các API và SDK rõ ràng và dễ sử dụng,giúp bạn nhanh chóng tích hợp các tính năng truyền thông vào ứng dụng củamình.

 Chất lượng cao và độ tin cậy: Zegocloud cung cấp chất lượng video và âmthanh cao, cũng như độ tin cậy cao trong giao tiếp thời gian thực.

 Tính linh hoạt: Thư viện hỗ trợ nhiều giao thức và công nghệ, cho phép bạn tạora các ứng dụng đa dạng và linh hoạt.

 Dịch vụ khách hàng: Zegocloud cung cấp hỗ trợ kỹ thuật và tài liệu đầy đủ đểgiúp bạn triển khai và quản lý ứng dụng của mình.

Trang 22

1.2.4 Thư viện Material

Material là một thư viện giao diện người dùng được phát triển bởi Google Nó cungcấp một bộ các thành phần giao diện người dùng và các công cụ thiết kế để tạo ra các ứngdụng có giao diện hiện đại và hấp dẫn Thư viện Material dựa trên ngôn ngữ thiết kếMaterial Design của Google, được giới thiệu lần đầu tiên vào năm 2014.

-một số đặc điểm nổi bật của thư viện Material:

Thành phần UI chất lượng cao: Thư viện Material cung cấp nhiều thành phần giao

diện người dùng như nút, thanh công cụ, danh sách, thẻ, biểu đồ, và nhiều thành phầnkhác Các thành phần này đều tuân thủ các nguyên tắc thiết kế của Material Design.

Tùy biến linh hoạt: Bạn có thể dễ dàng tùy biến các thành phần của thư viện Material

để phù hợp với phong cách thiết kế riêng của ứng dụng của mình, bao gồm màu sắc, hìnhdáng, và hoạt ảnh.

Hỗ trợ nhiều nền tảng: Thư viện Material có các phiên bản dành cho nhiều nền tảng

như Android, iOS, web, và Flutter, cho phép bạn xây dựng ứng dụng đồng nhất trên nhiềunền tảng.

Tài liệu phong phú: Thư viện Material đi kèm với tài liệu chi tiết và hướng dẫn sử

dụng rõ ràng, giúp các nhà phát triển dễ dàng tìm hiểu và triển khai các thành phần giaodiện người dùng.

Cộng đồng hỗ trợ: Thư viện Material có một cộng đồng phát triển mạnh mẽ và hỗ trợ

lẫn nhau, cung cấp các hướng dẫn, giải pháp, và cập nhật thường xuyên.

1.2.5 Google Firebase

Firebase là một nền tảng phát triển ứng dụng di động và web đám mây, được cung cấpbởi Google Nó cung cấp một loạt các dịch vụ dựa trên đám mây để giúp các nhà pháttriển xây dựng, triển khai và quản lý ứng dụng một cách dễ dàng và hiệu quả Firebasebao gồm nhiều dịch vụ khác nhau, trong đó có hai dịch vụ quan trọng sẽ được áp dụngvào trong dự án này đó là là Authentication và Firestore.

Firebase Authentication là một dịch vụ xác thực người dùng mạnh mẽ và dễ sử dụng.Nó cung cấp các phương thức xác thực linh hoạt như đăng nhập bằng email, đăng nhậpbằng mạng xã hội (Google, Facebook, Twitter), đăng nhập bằng số điện thoại và đăngnhập bằng tài khoản người dùng tùy chỉnh Firebase Authentication giúp bạn xây dựng hệthống đăng nhập an toàn và quản lý danh sách người dùng một cách dễ dàng Nó cũng

Trang 23

tích hợp tốt với các tính năng bảo mật khác của Firebase như quyền truy cập dựa trên vaitrò và kiểm soát truy cập.

Firestore là một cơ sở dữ liệu đám mây NoSQL linh hoạt và mạnh mẽ Nó cung cấpmột lưu trữ dựa trên tài liệu và cơ chế đồng bộ thời gian thực, cho phép bạn lưu trữ vàtruy xuất dữ liệu một cách dễ dàng Firestore được tổ chức theo cấu trúc tàiliệu/collection/document, giúp bạn tổ chức và truy xuất dữ liệu theo cách linh hoạt Nócung cấp tính năng đồng bộ thời gian thực, cho phép dữ liệu được cập nhật ngay lập tứctrên tất cả các thiết bị kết nối Firestore cũng tích hợp tốt với các dịch vụ khác củaFirebase như Authentication, Cloud Functions và Storage, giúp bạn xây dựng ứng dụnghoàn chỉnh và mạnh mẽ.

Ngoài Authentication và Firestore, Firebase còn cung cấp nhiều dịch vụ khác nhưRealtime Database, Cloud Storage, Cloud Functions, Cloud Messaging và Analytics.Realtime Database là một cơ sở dữ liệu thời gian thực, Cloud Storage cung cấp lưu trữđám mây, Cloud Functions cho phép bạn xây dựng và triển khai các chức năng máy chủkhông cần máy chủ riêng, Cloud Messaging giúp gửi thông báo đến người dùng vàAnalytics giúp bạn hiểu rõ hơn về hành vi người dùng và hiệu suất ứng dụng.

Tóm lại, Firebase là một nền tảng đám mây mạnh mẽ cho phát triển ứng dụng di độngvà web Với dịch vụ như Authentication và Firestore, bạn có thể xây dựng hệ thống xácthực người dùng và quản lý dữ liệu một cách dễ dàng và linh hoạt Firebase cũng cungcấp một loạt các dịch vụ khác nhau để giúp bạn xây dựng các ứng dụng đa dạng và mạnhmẽ.

1.2.6 Star UML

Star UML là một ứng dụng phần mềm mạnh mẽ và linh hoạt để mô hình hóa và thiếtkế các hệ thống phần mềm Nó cung cấp một môi trường đồ họa dễ sử dụng và được sửdụng rộng rãi trong lĩnh vực phát triển phần mềm và quản lý dự án.

Với Star UML, bạn có thể tạo ra các biểu đồ UML (Unified Modeling Language) nhưbiểu đồ lớp, biểu đồ tuần tự, biểu đồ hoạt động, biểu đồ trạng thái và nhiều loại biểu đồkhác Các biểu đồ UML giúp bạn diễn đạt và trực quan hóa các khía cạnh cấu trúc, hànhvi và tương tác của hệ thống phần mềm, giúp cải thiện việc hiểu và truyền đạt thông tingiữa các thành viên trong dự án.

Trang 24

Star UML cung cấp một loạt các tính năng và công cụ để hỗ trợ quá trình phát triển phầnmềm Bạn có thể tạo ra các mô hình UML chính xác và chi tiết bằng cách kéo và thả cácphần tử, kết nối chúng với nhau và tùy chỉnh thuộc tính và phương thức của chúng Nócũng cho phép bạn tạo ra các mô hình mô phỏng tiến trình kinh doanh, cung cấp một cáinhìn tổng quan về cấu trúc của dự án.

Một trong những ưu điểm của Star UML là khả năng mở rộng của nó Bạn có thể tảixuống và cài đặt các plugin và extension từ cộng đồng người dùng, mở rộng tính năng vàkhả năng của ứng dụng theo nhu cầu cụ thể Điều này giúp bạn tùy chỉnh và linh hoạttrong việc sử dụng Star UML để phù hợp với yêu cầu cụ thể của dự án.

Ngoài ra, Star UML hỗ trợ xuất và nhập các tệp tin UML theo các định dạng chuẩn nhưXMI, XML, PNG và PDF, giúp bạn chia sẻ và trình bày mô hình của mình cho các thànhviên khác trong dự án Bạn cũng có thể tích hợp Star UML với các công cụ quản lý phiênbản như Git để theo dõi và quản lý lịch sử thay đổi của mô hình.

Tóm lại, Star UML là một ứng dụng mô hình hóa phần mềm mạnh mẽ và đa dạng Vớikhả năng tạo ra các biểu đồ UML và hỗ trợ mở rộng, nó giúp bạn thiết kế và trực quanhóa hệ thống phần mềm một cách dễ dàng và linh hoạt Với tính năng xuất và nhập tệptin UML và tích hợp với các công cụ khác, Star UML cung cấp một môi trường làm việctoàn diện để phát triển và quản lý dự án phần mềm.

Trang 25

CHƯƠNG 2 KHẢO SÁT & PHÂN TÍCH THIẾT KẾ2.1 Khảo sát

Ngày nay, công nghệ đang không ngừng phát triển và dần thay thế đi những công việc,lối sống, công nghệ cũ, lỗi thời để sử dụng những dịch vụ tiện ích tốn ít thời gian và côngsức hơn Không còn những bức thư tay, không còn khó khăn khi muốn trò chuyện vớinhững người thân ở xa, không còn vấn đề trong việc kết bạn, trò chuyện với mọi người.Công nghệ thông tin phát triển và đi kèm theo nó cũng là sự phát triển của những gãkhổng lồ Facebook, Instagram, Twitter,… họ đều là những người tiên phong trong lĩnhvực mạng xã hội, kết nối nhiều người lại với nhau Cùng với đó là sự phát triển của thịtrường điện thoại di động, ai ai cũng có một chiếc smart phone trên tay với đầy đủ cácchức năng, tiện ích.

Từ đó, học hỏi và kế thừa tri thức từ những người đi trước để cố gắng tạo ra một ứngdụng di động có thể nhắn tin và gọi điện trực tuyến có thể đáp ứng được nhu cầu củangười dùng Ứng dụng mang tên Sky Chat cho phép người dùng trò chuyện văn bản, thựchiện cuộc gọi thoại và video, tạo nhóm trò chuyện và kết bạn mới một cách dễ dàng vàtiện lợi Với giao diện thân thiện và tính năng đa dạng, dễ dàng sử dụng, mang đặc trưngriêng và được sử dụng rộng rãi sau khi hoàn thiện.

Một trong những lợi ích chính của việc sử dụng các ứng dụng chat cho phép giao tiếp tứcthời với mọi người Không cần chờ đợi lâu, có thể nhắn tin và trao đổi thông tin ngay lậptức Tính năng này rất hữu ích trong cuộc sống bận rộn hiện nay, khi thời gian luôn làmột yếu tố quan trọng.

Sự tiện lợi và linh hoạt của ứng dụng chat cũng là một điểm cộng lớn Bạn có thể sử dụngứng dụng ở bất kỳ đâu, chỉ cần có kết nối internet Điều này cho phép trò chuyện với bạnbè, gia đình hoặc đồng nghiệp mọi lúc mọi nơi, dù bạn đang ở nhà, tại văn phòng hayđang di chuyển.

Ngoài ra, ứng dụng chat còn cung cấp đa dạng hóa hình thức giao tiếp, bao gồm văn bản,hình ảnh, video và âm thanh Các cuộc gọi video cũng có sẵn, mang lại trải nghiệm giaotiếp chân thực và trực quan hơn Điều này giúp bạn dễ dàng truyền đạt thông điệp mộtcách rõ ràng và hiệu quả

Trang 26

Tóm lại, ứng dụng chat trò chuyện với mọi người mang lại nhiều lợi ích cho ngườidùng, giúp họ giao tiếp nhanh chóng, tiện lợi và hiệu quả Nó không chỉ cải thiện chấtlượng cuộc sống mà còn tăng cường sự kết nối và gắn kết giữa mọi người.

2.2 Yêu cầu cơ bản về chức năng

2.2.1 Chức năng xác thực người dùng

Trước khi có thể sử dụng các chức năng chính của ứng dụng người dùng phải thựchiện Đăng nhập tài khoản trước Ứng dụng dự định sẽ cung cấp 2 hình thức đăng nhập làĐăng nhập bằng Google và Đăng nhập bằng địa chỉ email Nếu người dùng muốn sửdụng chức năng Đăng nhập bằng địa chỉ email thì trước hết phải thực hiện Đăng ký tàikhoản mới Sau khi người dùng thực hiện đăng ký, người dùng sẽ được gán một uid tựđộng, uid này sẽ được sử dụng để truy cập đến dữ liệu của người dùng trên cơ sở dữ liệu.Trong trường hợp người dùng quên mật khẩu, họ có thể thực hiện Đặt lại mật khẩu bằngcách sử dụng địa chỉ email đã đăng ký tài khoản trước đó.

2.2.1 Chức năng nhắn tin, voice call và video call

Đây là chức năng nòng cốt của ứng dụng Cho phép người dùng soạn tin nhắn bằngcách nhập văn bản và thêm hình ảnh hoặc âm thanh một cách nhanh chóng Toàn bộthông tin của phiên chat sẽ được lưu lại nhằm phục vụ cho việc lưu trữ, xem tin nhắn vàthông báo Ngoài ra ứng dụng cho phép người dùng trò chuyện trực tiếp thông qua videocall và voice call giúp người dùng kết nối với mọi người.

2.2.2 Chức năng nhắn tin nhóm

Người dùng có thể tham gia nhóm chat bằng cách tạo nhóm hoặc người dùng đượcmời Người dùng có thể gửi và nhận tin nhắn trong nhóm, bao gồm văn bản, hình ảnh .Toàn bộ thông tin của phiên chat sẽ được lưu lại nhằm phục vụ cho việc lưu trữ, hiển thịtin nhắn cho tất cả thành viên trong nhóm và thông báo.

2.2.3 Chức năng bạn bè

Người dùng có thể gửi yêu cầu kết bạn, chấp nhận, hủy kết bạn thông qua chức năngtìm kiếm bạn bè Người dùng có thể xem các thông tin của nhau như trang cá nhân, dòngthời gian tương, tác xã hội hoặc bắt đầu một cuộc hội thoại mới Sau khi đã trở thành bạnbè thông tin của họ sẽ nằm trong danh mục danh bạ giúp hiển thị và liên lạc dễ dàng hơn.

Trang 27

2.2.4 Chức năng quản lý trang cá nhân

Toàn bộ thông tin của người dùng sẽ được hiển thị tại đây Người dùng có thể chọnnhững thông tin mà mình muốn hiển thị tới người khác ví dụ như tên, ngày sinh, số điệnthoại, địa chỉ, sở thích, ngoài ra người dùng còn có thể đặt một đoạn giới thiệu ngắn đểhiển thị trên cùng.

2.3 Tổng quan

2.3.1.Biểu đồ trường hợp sử dụng

Hình 2.2 Trường hợp sử dụng tổng quát

Trang 28

2.3.2 Mô tả các tác nhân

1 User (Người dùng) ứng dụngNgười trực tiếp thực hiện các thao tác trên

đến người dùng khác.5 UC5000 Manage friends Quản lí bạn bè.

Trang 29

2.3.4 Biểu đồ lớp

2.3.5 ER Diagram

Trang 31

- Chức năng đăng nhập bằng Email:

Hình 2.3: Biểu đồ hoạt động chức năng Đăng nhập bằng địa chỉ email

Trang 32

- Chức năng đăng nhập bằng số điện thoại:

Hình 2.4 Biểu đồ hoạt động chức năng Đăng nhập bằng số điện thoại

- Chức năng đăng ký:

Trang 33

Hình 2.5 Biểu đồ hoạt động chức năng Tạo tài khoản

- Chức năng đặt lại mật khẩu:

Hình 2.6 Biểu đồ hoạt động chức năng Đặt lại mật khẩu

Trang 34

2.4.3 Biểu đồ trình tự

- Chức năng đăng nhập bằng email:

Hình 2.7 Biểu đồ trình tự chức năng Đăng nhập bằng email

- Chức năng đăng nhập bằng số điện thoại:

Trang 35

Hình 2.8 Biểu đồ trình tự cho chức năng Đăng nhập bằng số điện thoại

- Chức năng Đăng ký:

Trang 36

Hình 2.9 Biểu đồ hoạt động cho chức năng Đăng ký

- Chức năng Đặt lại mật khẩu:

Hình 2.10 Biểu đồ hoạt động cho chức năng Đặt lại mật khẩu

Trang 38

2.5 Chức năng nhắn tin

2.5.1 Đặc tả trường hợp sử dụng

Mô tả Gửi tin nhắn và ghi lại thông tin đoạn hội thoại

Tác nhân tham gia Người dùngMức ưu tiên Phải có

Điều kiện kích hoạt Người dùng chọn phiên hội thoạiNguyên nhân Người dùng muốn trao đổi thông tin

Điều kiện cần - Người dùng đã đăng nhập.

- Quyền truy cập internet, quyền thông báo được cho phép.

Điều kiện đủ - Người dùng hoàn thành phiên hội thoại

- Người dùng thoát khỏi phiên hội thoại

Luồng cơ bản

1 Người dùng bắt đầu bằng cách chọn phiên hội thoại.2 Hiển thị giao diện người dùng nhập thông tin.

3 Ứng dụng yêu cầu các quyền cần thiết.

4 Người dùng cho phép các quyền được yêu cầu.

5 Ứng dụng bắt đầu ghi lại các thông tin của phiên hội thoại.6 Ứng dụng hiển thị thông tin của phiên hội thoại

7 Người dùng nhất thoát để thoát khỏi phiên hội thoại

Trang 39

Usecase dừng lại

4b Người dùng từ chối quyền, ứng dụng hiển thị thông báo lỗi.

Quay lại bước 2

5a Lưu thông tin thất bại, ứng dụng hiển thị thông báo lỗi

Quay lại bước 2

2.5.2 Biểu đồ hoạt động

- Chức năng gửi tin nhắn:

Trang 40

Hình 2.11 Biểu đồ hoạt động khi gửi tin nhắn

Ngày đăng: 16/05/2024, 01:28

Tài liệu cùng người dùng

Tài liệu liên quan