1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

Đ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

Thông tin cơ bản

Tiêu đề Phát triển ứng dụng nhắn tin gọi điện trên Android
Tác giả Hoàng Tùng Dương
Người hướng dẫn ThS. Nguyễn Văn Việt
Trường học Trường Đại học Công nghệ thông tin và Truyền thông
Chuyên ngành Kỹ thuật phần mềm
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thái Nguyên
Định dạng
Số trang 80
Dung lượng 4,75 MB

Cấu trúc

  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (10)
    • 1.1. Các công nghệ được áp dụng (10)
      • 1.1.1. MVP Pattern (10)
      • 1.1.2. Clean Architecture (11)
      • 1.1.3. Dependency Injection (13)
      • 1.1.4. Serverless (15)
    • 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 (22)
      • 1.2.5. Google Firebase (22)
      • 1.2.6. Star UML (23)
  • CHƯƠNG 2. KHẢO SÁT & PHÂN TÍCH THIẾT KẾ (25)
    • 2.1. Khảo sát (25)
    • 2.2. Yêu cầu cơ bản về chức năng (26)
      • 2.2.1. Chức năng xác thực người dùng (26)
      • 2.2.1. Chức năng nhắn tin, voice call và video call (26)
      • 2.2.2. Chức năng nhắn tin nhóm (26)
      • 2.2.3. Chức năng bạn bè (26)
    • 2.3. Tổng quan (27)
      • 2.3.1. Biểu đồ trường hợp sử dụng (27)
      • 2.3.2. Mô tả các tác nhân (28)
      • 2.3.3. Mô tả các trường hợp sử dụng (28)
      • 2.3.4. Biểu đồ lớp (29)
      • 2.3.5. ER Diagram (29)
    • 2.4. Chức năng xác thực người dùng (30)
      • 2.4.1. Đặc tả trường hợp sử dụng (30)
      • 2.4.2. Biểu đồ hoạt động (31)
      • 2.4.3. Biểu đồ trình tự (34)
    • 2.5. Chức năng nhắn tin (38)
      • 2.5.1. Đặc tả trường hợp sử dụng (38)
      • 2.5.2. Biểu đồ hoạt động (39)
      • 2.5.3. Biểu đồ trình tự (43)
    • 2.6. Chức năng nhật ký (45)
      • 2.6.1. Đặc tả trường hợp sử dụng (45)
      • 2.6.2. Biểu đồ hoạt động (46)
      • 2.6.3. Biểu đồ trình tự (47)
    • 2.7. Chức năng quản lí trang cá nhân (48)
      • 2.7.1. Đặc tả trường hợp sử dụng (48)
      • 2.7.2. Biểu đồ hoạt động (50)
      • 2.7.3. Biểu đồ trình tự (51)
    • 2.8. Chức năng nhắn tin nhóm (52)
      • 2.8.1. Đặc tả trường hợp sử dụng (52)
      • 2.8.2. Biểu đồ hoạt động (53)
      • 2.8.3. Biểu đồ trình tự (57)
  • CHƯƠNG 3. XÂY DỰNG & PHÁT TRIỂN ỨNG DỤNG (58)
    • 3.1. Yêu cầu hệ thống (58)
    • 3.2. Giao diện các chức năng của ứng dụng (59)
      • 3.2.1. Chức năng xác thực người dùng (59)
      • 3.2.2. Giao diện hiển thị tin nhắn (63)
      • 3.2.3. Chức năng danh bạ (64)
      • 3.2.4. Chức năng nhóm (65)
      • 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 (72)
      • 3.2.7. Giao diện trang tìm kiếm (73)
      • 3.2.8. Giao diện màn hình chat bot (74)
      • 3.2.9. Giao diện gọi thoại (75)
      • 3.2.10. Hộp thoại đăng xuất (77)
  • KẾT LUẬN (78)
    • 1. Kết quả đạt được (78)
    • 2. Những điểm hạn chế (78)
    • 3. Hướng phát triển (78)
  • TÀI LIỆU THAM KHẢO (79)

Nội dung

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

CƠ SỞ LÝ THUYẾT

Các công nghệ được áp dụng

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ấy cảm hứng từ mô hình MVC (Model-View-Controller), nhưng nó tập trung hơn vào việc là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 cho Presenter 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ệu từ 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àm nhiệ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ộc tí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à giao diệ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ản lý 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ý logic và 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ức tạ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ó

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 khi MVP 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, trong khi 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ạt khô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ười dù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ều lớ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àng giữa xử logic và giao diện người dùng Dễ kiểm thử hơn do Presenter không phụ thuộc vào View.

Clean Architecture (Kiến trúc sạch) là một phương pháp thiết kế phần mềm được phát triể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ệ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, 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 chi tiế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ân tá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ệm khá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ái niệ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ể

3 Interface Adapters (Bộ chuyển đổi giao diện): Lớp này chứa các thành phần liên quan đế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ười dù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ành phầ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ác thà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ép thay đổ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ần phụ 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ện cho 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ểm thử 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 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ên ngoài và chuyển đổi dữ liệu Cuối cùng, Frameworks & Drivers là thành phần giao tiếp với các công nghệ và framework bên ngoài, như UI frameworks hay cơ sở dữ liệu.

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

Android Studio là một môi trường phát triển tích hợp (Integrated Development Environment - IDE) được phát triển bởi Google, chuyên dùng cho việc phát triển ứng dụ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ệt cho việc phát triển Android, Android Studio là một lựa chọn hàng đầu cho các nhà phát triển ứng dụng di động.

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àm việ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ệc xâ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ông minh 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à định dạ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.

3 Thiết kế giao diện người dùng (UI): Android Studio cung cấp trình chỉnh sửa giao diện người dùng (Layout Editor) cho phép nhà phát triển thiết kế giao diện người dùng mộ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ếu tố 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ương tá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 ứng dụ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ết bị 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ểm thử ứng dụng, bao gồm kiểm thử đơn vị (unit testing), kiểm thử chức năng (functional testing) 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ác cô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ạnh mẽ Đ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à plugin khác.

Android Studio là một IDE mạnh mẽ và toàn diện cho việc phát triển ứng dụng Android 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ạnh mẽ đến từ Google và nhà phát triển của IDE IntelliJ, việc phát triển ứng dụng di động trê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ển quá mạnh mẽ nên năm 2009, Oracle đã mạnh tay mua lại cả Sun MicorSystems để nắm ngôn ngữ Java trong tay.

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ực lậ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 sở hữu vốn tính năng đầy đủ nhất của một đàn anh thực thụ trong ngành Bất cứ ai đã học qua Java rồi cũng cơ bản điểm qua được một số tính năng nổi bậc như sau:

Hình 1.2 12 tính năng của ngôn ngữ lập trình Java Java có tính Đơn giản:

Java đã cải tiến dễ dàng hơn bằng cách loại bỏ tất cả những thứ phức tạp của các anh hàng xóm (chẳng hạn như con trỏ trong C++, ) để bản thân trở nên đơn giản và dễ tiếp cận với người học mà vẫn có hiệu suất hàng đầu.

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

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ện nhất.

Java có tính di động:

Bạn hoàn toàn có thể đóng gói toàn bộ chương trình Java và di chuyển nó một cách linh hoạt

Java có tính Độc lập với nền tảng:

Java độc lập, không phụ thuộc vào nền tảng, có nghĩa là mọi ứng dụng sau khi được biên dịch có thể mang đi và thực thi trên các nền tảng khác (Write Once, Run Anywhere)

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

KHẢO SÁT & PHÂN TÍCH THIẾT KẾ

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ông sứ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ới nhữ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ĩnh vự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ác chứ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 ứng dụ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ủa ngườ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ực hiệ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ưng riê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ức thờ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ập tứ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ạn bè, 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 giao tiế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ột cách rõ ràng và hiệu quả

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ười dù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ất lượ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.

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ực hiệ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ài khoả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ằng cá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ằng cá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 video call 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 được mờ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.

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ăng tì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òng thờ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ạn bè 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.

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ọn nhữ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ện thoạ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.

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

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

STT Tên tác nhân Mô tả

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

2.3.3 Mô tả các trường hợp sử dụng

STT Mã Trường hợp sử dụng Mô tả

1 UC1000 Authenticate Người dùng phải tiến hành Đăng nhập/Đăng ký nếu muốn truy cập vào ứng dụng.

2 UC2000 Message Trò chuyện văn bản, gửi hình ảnh voice call video call.

3 UC3000 Story Quản lý bài viết, đăng dòng trạng thái tương tác bài viết.

4 UC4000 Manage personal profile Quản lí các thông tin cá nhân và đặt cách hiển thị các thông tin này đến người dùng khác.

5 UC5000 Manage friends Quản lí bạn bè.

6 UC6000 Group Trò chuyện với nhiều người.

7 UC7000 Search User Tìm kiếm bạn bè.

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

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

Mô tả Người dùng sử dụng các chức năng đăng nhập, đăng ký, đặt lại mật khẩu

Tác nhân tham gia Người dùng

Mức ưu tiên Phải có

Nguyên nhân Người dùng phải tiến hành xác thực trước khi tiến vào sâu bên trong ứng dụng Điều kiện cần

- Tài khoản đã được tạo sẵn (Đănh nhập bằng email, Đặt lại mật khẩu)

- Đã có số điện thoại (Đăng nhập bằng số điện thoại)

- Email chưa được sửa dụng (Đăng ký) Điều kiện đủ

- Người dùng đăng nhập ứng dụng thành công (Đăng nhập bằng Email, Đăng nhập bằng số điện thoại, Đăng ký)

- Email khôi phục mật khẩu được gửi (Đặt lại mật khẩu)

1 Người dùng mở ứng dụng

2 Người dùng chọn Đăng nhập bằng Email

3 Người dùng nhập thông tin và Submit

4 Hệ thống xác thực thông tin đăng nhập thành công

5 Ứng dụng điều hướng người dùng tới màn hình chính

Luồng thay thế 2a Người dùng chọn đăng nhập bằng số điện thoại

3a Người dùng nhập thông tin và Submit

4a hệ thống xác thực số điện thoại3b nhập mã xác thực

2b Người dùng chọn Đăng ký tài khoản

2c Người dùng chọn Đặt lại mật khẩu

4a Hệ thống gửi email đặt lại mật khẩu và thông báo thành công

Luồng ngoại lệ 4b Xác thực thất bại

- 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

- 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

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

- 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:

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

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

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ùng

Mứ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ại

Nguyê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

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

2a Người dùng nhấn nút camera chọn hình ảnh hoặc video. 2b Người dùng nhấn nút tệp chọn tệp

2c Người dùng nhấn nút gọi để thực hiện cuộc gọi.

4a Người dùng từ chối quyền.

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

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

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

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

- Chức năng gửi hình ảnh:

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

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

Hình 2.13 Biểu đồ hoạt động chức năng khi gọi video 2.5.3 Biểu đồ trình tự

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

Hình 2.14 Biểu đồ trình tự khi gửi tin nhắn

Hình 2.15 Biểu đồ trình tự khi thực hiện cuộc gọi

Chức năng nhật ký

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

Mô tả Hiển thị các bài đăng của người dùng và mọi người

Tác nhân tham gia Người dùng, Người dùng khác

Mức ưu tiên Không có

Nguyên nhân Người dùng muốn đăng tải trạng thái cá nhân hoặc xem bài viết. Điều kiện cần Người dùng đã đăng nhập

1 Người dùng chọn Dòng thời gian từ bảng điều hướng.

2 Điều hướng người dùng tới trang Dòng thời gian.

3 Ứng dụng hiển thị các bài đăng mới nhất của người dùng tham gia.

4 Chọn tạo bài viết mới để tạo bài viết.

5 Hiển thị giao diện tạo bài viết

6 Thêm văn bản hoặc hình ảnh và nhấn submit.

7.Điều hướng về giao diện Dòng thời gian

3a Người dùng mở menu của một bài đăng của chính người dùng chọn Xóa.

3b Bài viết bị xóa, cập nhật lại dòng thời gian.

- Chức năng đăng tải nhật ký:

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

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

- Chức năng đăng tải bài viết:

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

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

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

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

Mô tả Quản lí trang cá nhân

Tác nhân tham gia Người dùng

Mức ưu tiên Phải có

Nguyên nhân Người dùng muốn xem và chỉnh sửa thông tin cá nhân Điều kiện cần - Người dùng đã đăng nhập.

Luồng cơ bản 1 Người dùng đi tới Trang cá nhân.

2 Ứng dụng hiển thị các thông tin của người dùng.

3 Người dùng chọn Chỉnh sửa trang cá nhân, ứng dụng hiển thị giao diện chỉnh sửa.

4 Người dùng thực hiện thay đổi sau đó Submit.

5 Thay đổi thông tin thành công, ứng dụng cập nhật lại trang cá nhân.

Luồng thay thế 3a Người dùng chọn xem Dòng thời gian.

4a Người dùng vuốt xuống để xem Dòng thời gian

Luồng ngoại lệ 4a Thay đổi thông tin thất bại, ứng dụng hiển thị thông báo lỗi.

- Chức năng xem trang cá nhân:

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

- Chức năng chỉnh sửa trang cá nhân:

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

- Chức năng xem trang cá nhân:

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

- Chức năng chỉnh sửa trang cá nhân:

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

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

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

Mô tả Gửi tin nhắn ghi lại thông tin hội thoại, quản lý thành viên nhóm

Tác nhân tham gia Người dùng, người dùng khác.

Mức ưu tiên Phải có

Nguyên nhân Người dùng muốn tham gia hội thoại có nhiều thành viên Điều kiện cần - Người dùng đã đăng nhập.

Luồng cơ bản 1 Người dùng đi tới trang tin nhắn nhóm.

2 Ứng dụng hiển thị các thông tin nhóm hội thoại.

3 Người dùng chọn hội thoại muốn tham gia

4 Người dùng thực hiện nhập thông tin và Submit.

5 Ứng dụng lưu lại thông tin phiên hội thoại

6 Người dùng có thể thoát hoặc ở lại phiên hội thoại

3a Người dùng là admin Đổi tên nhóm, giải tán nhóm thêm thành viên nhóm, đuổi khỏi thành viên khỏi nhóm

3b Người dùng là thành viên

Rời nhóm, thêm thành viên vào nhóm.

4a Người dùng gửi ảnh, video , tệp

- Chức năng đổi tên nhóm:

Hình 2.24: Biểu đồ hoạt động khi đổi tên nhóm

- Chức năng xóa thành viên nhóm:

Hình 2.25: Biểu đồ hoạt động chức năng xóa thành viên nhóm

- Chức năng thêm thành viên nhóm:

Hình 2.26: Biểu đồ hoạt động chức năng thêm thành viên nhóm

- Chức năng giải tán nhóm:

Hình 2.27: Biểu đồ hoạt động chức năng giải tán nhóm

Hình 2.28: Biểu đồ hoạt động chức năng rời nhóm

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

Hình 2.29: Biểu đồ chức năng gửi tin nhắn nhóm 2.8.3 Biểu đồ trình tự:

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

Hình 2.30: Biểu đồ trình tự chức năng gửi tin nhắn nhóm

XÂY DỰNG & PHÁT TRIỂN ỨNG DỤNG

Yêu cầu hệ thống

Để có thể áp dụng được các công nghệ mới và đảm bảo các thiết bị không quá cũ, có thể sử dụng được ứng dụng một cách tốt nhất, ứng dụng sẽ được phát triển với yêu cầu thấp nhất là các thiết bị chạy Android 8 (API Level 26) trở lên.

Hiện nay số thiết bị đang chạy Android 8 trở lên đang chiếm đến hơn 90% số lượng người dùng hệ điều hành này, việc chọn chọn yêu cầu thấp nhất là Android 8 sẽ ban đầu đảm bảo được số lượng người dùng tiếp cận được ứng dụng là lớn nhất và đảm bảo được phần lớn các công nghệ được ra mắt ở phiên bản này vẫn còn được hỗ trợ tốt cho tới hiện tại.

Tóm lại, chỉ cần thiết bị đáp ứng được yêu cầu tối thiểu của Android 8 là sẽ có thể sử dụng được ứng dụng Như vậy, cộng với một số yêu cầu bên lề của ứng dụng ta sẽ có bảng yêu cầu hệ thống cho ứng dụng như sau:

Hệ điều hành Android 8 (API Level 26) hoặc hơn

Nhân xử lí Ít nhất 4 nhân, xung nhịp 1.2 GHz hoặc hơn

Bộ nhớ trong Tối thiều 4 GB bộ nhớ trong và ít nhất thêm 1 GB để duy trì các ứng dụng

Màn hình Tối thiểu 4.7 Inch, FHD hoặc hơn

Pin Li-ion 3200 mAh hoặc tốt hơn

Hệ thống Tương thích với Dịch vụ của Google

Giao diện các chức năng của ứng dụng

3.2.1 Chức năng xác thực người dùng Đây sẽ là nơi người dùng thực hiện các tác vụ như đăng nhập, đăng ký và đặt lại mật khẩu.

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

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

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

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

3.2.2 Giao diện hiển thị tin nhắn

Giao diện hiển thị danh sách các tin nhắn, các phím chức năng để sử dụng ứng dụng. Giao diện hội thoại chứa thông tin đoạn hội thoại và có các chức năng như:

- Nhắn tin: người dùng có thể gửi trực tiếp tin nhắn bằng văn bản, hình ảnh, video hoặc đính kèm tệp để gửi cho bạn bè người thân…

- Thông báo: hiển thị trạng thái bạn bè, chờ xác nhận, kết bạn, nếu đã là bạn bè sẽ không hiển thị thông báo nữa.

- Gọi: cho phép người dùng sử dụng chức năng gọi thoại hoặc video.

- Bạn bè: chức năng này giúp người dùng có một danh sách bạn bè thuận tiện cho việc liên lạc và lưu trữ thông tin liên lạc của bạn bè, gia đình , đồng nghiệp…

- Lời mời: chức năng này giúp người dùng chấp nhận lời mời kết bạn từ người dùng khác.

Hình 3.19 Giao diện danh bạ

Giao diện hiển thị danh sách các tin nhắn, các phím chức năng để sử dụng ứng dụng.

Chức năng nhóm cho phép nhiều người tham gia cuộc hội thoại để giao tiếp và trao đổi thông tin một cách dễ dàng thông qua tin nhắn văn bản hình ảnh… cho phép tạo ra bình chọn giúp thành viên trong nhóm đóng góp ý kiến.

Vai trò của trưởng nhóm và thành viên:

- Trưởng nhóm: là người tạo ra cuộc hội thoại có những chức năng như thay đổi tên nhóm, xóa thành viên trong nhóm, giải tán nhóm, thêm thành viên vào nhóm, nhắn tin, tạo bình chọn…

- Thành viên: là thành viên trong nhóm có chức năng như thêm thành viên vào nhóm, rời nhóm, nhắn tin, tạo bình chọn …

- Giao diện chức năng thêm thành viên vào nhóm

Người dùng muốn thêm ai đó vào nhóm hội thoại chọn thêm thành viên nhóm tại trang thông tin nhóm và chọn thêm thành viên Ứng dụng xuất hiện màn hình bao gồm danh sách gợi ý người dùng và tìm kiếm khi muốn thêm mới một ai đó.

Hình 3.8 Giao diện thêm người dùng vào nhóm thoại

- Hộp thoại tạo nhóm mới:

Khi người dùng nhấn tạo nhóm, người dùng sẽ nhập tên nhóm và nhóm sẽ được tạo. Người tạo nhóm sẽ mặc định là Admin của nhóm.

Hình 3.9 Hộp thoại tạo nhóm mới

- Giao diện thông tin nhóm:

Tại đây nếu người dùng là Admin tại đây Admin có quyền đổi tên nhóm, giải tán nhóm, xem thành viên nhóm.

Hình 3.10 Giao diện thông tin nhóm

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

Giao diện nhật ký là chức năng cho phép người dùng đăng tải nhật ký trạng thái bản thân, hình ảnh, nội dung để tương tác với bạn bè cập nhật thông tin đến với mọi người.

Hình 3.11 Giao diện trang nhật ký và tạo bài viết

Giao diện hộp thoại rời nhóm nếu bạn là thành viên trong nhóm tại giao diện trang thông tin nhóm sẽ có nút rời nhóm người dùng khi click vào sẽ xuất hiện hộp thoại hỏi bạn có chắc chắn rời nhóm nếu đồng ý bạn sẽ thoát ra khỏi nhóm chat và điều hướng trang tin nhắn.

Hình 3.12 Hộp thoại rời nhóm

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

Thông tin về người dùng như ảnh đại diện, tên hiển thị, địa chỉ email, sẽ được hiển thị tại đây Người dùng cũng có thể chỉnh sửa các thông tin cá nhân của mình.

Hình 3.13 Giao diện chỉnh sửa thông tin cá nhân và hiển thị thông tin cá nhân

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

Giao diện trang tìm kiếm có chức năng tìm kiếm bạn bè bằng cách nhập tên người dùng, địa chỉ Email, số điện thoại Hiển thị trạng thái bạn bè nếu chưa là bạn sẽ có thể gửi lời mời kết bạn tại đây.

3.2.8 Giao diện màn hình chat bot Đây là giao diện chức năng chat bot Người dùng có thể đưa ra câu hỏi hoặc tìm hiểu thông tin nhanh ngay tại trong ứng dụng

Hình 3.15 Giao diện màn hình chat bot

- Giao diện chờ cuộc gọi:

Giao diện chờ bắt máy khi thực hiện cuộc gọi thoại hoặc video tại đây có nút kết thúc cuộc gọi nếu người dùng muốn hủy cuộc gọi.

Hình 3.16 Giao diện chờ khi thực hiện cuộc gọi

- Giao diện khi thực hiện cuộc gọi:

Tại giao diện này người dùng có các chức năng như sau:

 Loa: Người dùng có thể bật tắt loa thoại

 Micro: Người dùng có thể bật tắt micro

 Camera: Người dùng có thể bật tắt camera

 Đổi camera: Người dùng có thể sử dụng camera trước hoặc camera sau.

 Kết thúc cuộc gọi: Người dùng nhấn để kết thúc cuộc gọi

Hình 3.17 Giao diện khi thực hiện cuộc gọi

Khi người dùng nhấn Đăng xuất từ Bảng cá nhân, người dùng sẽ được hỏi nếu thực sự muốn đăng xuất.

Hình 3.18 Hộp thoại xác nhận đăng xuất

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

HÌNH ẢNH LIÊN QUAN

Hình 2.2 Trường hợp sử dụng tổng quát - Xây dựng ứng dụng ChatApp trên Android
Hình 2.2 Trường hợp sử dụng tổng quát (Trang 27)
Hình 2.4. Biểu đồ hoạt động chức năng Đăng nhập bằng số điện thoại - Xây dựng ứng dụng ChatApp trên Android
Hình 2.4. Biểu đồ hoạt động chức năng Đăng nhập bằng số điện thoại (Trang 32)
Hình 2.5. Biểu đồ hoạt động chức năng Tạo tài khoản - Xây dựng ứng dụng ChatApp trên Android
Hình 2.5. Biểu đồ hoạt động chức năng Tạo tài khoản (Trang 33)
Hình 2.7. Biểu đồ trình tự chức năng Đăng nhập bằng email - Xây dựng ứng dụng ChatApp trên Android
Hình 2.7. Biểu đồ trình tự chức năng Đăng nhập bằng email (Trang 34)
Hình 2.8. Biểu đồ trình tự cho chức năng Đăng nhập bằng số điện thoại - Xây dựng ứng dụng ChatApp trên Android
Hình 2.8. Biểu đồ trình tự cho chức năng Đăng nhập bằng số điện thoại (Trang 35)
Hình 2.9. Biểu đồ hoạt động cho chức năng Đăng ký - Xây dựng ứng dụng ChatApp trên Android
Hình 2.9. Biểu đồ hoạt động cho chức năng Đăng ký (Trang 36)
Hình 2.10. Biểu đồ hoạt động cho chức năng Đặt lại mật khẩu - Xây dựng ứng dụng ChatApp trên Android
Hình 2.10. Biểu đồ hoạt động cho chức năng Đặt lại mật khẩu (Trang 36)
Hình 2.11. Biểu đồ hoạt động khi gửi tin nhắn - Xây dựng ứng dụng ChatApp trên Android
Hình 2.11. Biểu đồ hoạt động khi gửi tin nhắn (Trang 40)
Hình 2.12. Biểu đồ hoạt động khi gửi hình ảnh - Xây dựng ứng dụng ChatApp trên Android
Hình 2.12. Biểu đồ hoạt động khi gửi hình ảnh (Trang 41)
Hình 2.13. Biểu đồ hoạt động chức năng khi gọi thoại - Xây dựng ứng dụng ChatApp trên Android
Hình 2.13. Biểu đồ hoạt động chức năng khi gọi thoại (Trang 42)
Hình 2.14. Biểu đồ trình tự khi gửi tin nhắn - Xây dựng ứng dụng ChatApp trên Android
Hình 2.14. Biểu đồ trình tự khi gửi tin nhắn (Trang 44)
Hình 2.15. Biểu đồ trình tự khi thực hiện cuộc gọi - Xây dựng ứng dụng ChatApp trên Android
Hình 2.15. Biểu đồ trình tự khi thực hiện cuộc gọi (Trang 44)
Hình 2.16. Biểu đồ hoạt động cho chức năng khi đăng tải nhật ký - Xây dựng ứng dụng ChatApp trên Android
Hình 2.16. Biểu đồ hoạt động cho chức năng khi đăng tải nhật ký (Trang 46)
Hình 2.18. Biều đồ trình tự cho chức năng đăng tải bài viết - Xây dựng ứng dụng ChatApp trên Android
Hình 2.18. Biều đồ trình tự cho chức năng đăng tải bài viết (Trang 48)
Hình 2.21. Biểu đồ hoạt động cho chức năng chỉnh sửa trang cá nhân - Xây dựng ứng dụng ChatApp trên Android
Hình 2.21. Biểu đồ hoạt động cho chức năng chỉnh sửa trang cá nhân (Trang 51)
Hình 2.22. Biểu đồ trình tự cho chức năng Xem trang cá nhân - Xây dựng ứng dụng ChatApp trên Android
Hình 2.22. Biểu đồ trình tự cho chức năng Xem trang cá nhân (Trang 51)
Hình 2.23. Biểu đồ trình tự Chỉnh sửa trang cá nhân - Xây dựng ứng dụng ChatApp trên Android
Hình 2.23. Biểu đồ trình tự Chỉnh sửa trang cá nhân (Trang 52)
Hình 2.25: Biểu đồ hoạt động chức năng xóa thành viên nhóm - Xây dựng ứng dụng ChatApp trên Android
Hình 2.25 Biểu đồ hoạt động chức năng xóa thành viên nhóm (Trang 54)
Hình 2.26: Biểu đồ hoạt động chức năng thêm thành viên nhóm - Xây dựng ứng dụng ChatApp trên Android
Hình 2.26 Biểu đồ hoạt động chức năng thêm thành viên nhóm (Trang 54)
Hình 2.27: Biểu đồ hoạt động chức năng giải tán nhóm - Xây dựng ứng dụng ChatApp trên Android
Hình 2.27 Biểu đồ hoạt động chức năng giải tán nhóm (Trang 55)
Hình 2.28: Biểu đồ hoạt động chức năng rời nhóm - Xây dựng ứng dụng ChatApp trên Android
Hình 2.28 Biểu đồ hoạt động chức năng rời nhóm (Trang 56)
Hình 2.29: Biểu đồ chức năng gửi tin nhắn nhóm 2.8.3. Biểu đồ trình tự: - Xây dựng ứng dụng ChatApp trên Android
Hình 2.29 Biểu đồ chức năng gửi tin nhắn nhóm 2.8.3. Biểu đồ trình tự: (Trang 57)
Hình 2.30: Biểu đồ trình tự chức năng gửi tin nhắn nhóm - Xây dựng ứng dụng ChatApp trên Android
Hình 2.30 Biểu đồ trình tự chức năng gửi tin nhắn nhóm (Trang 57)
Hình 3.15. Biểu mẫu Đăng nhập bằng số điện thoại - Xây dựng ứng dụng ChatApp trên Android
Hình 3.15. Biểu mẫu Đăng nhập bằng số điện thoại (Trang 60)
Hình 3.11. Giao diện trang nhật ký và tạo bài viết - Xây dựng ứng dụng ChatApp trên Android
Hình 3.11. Giao diện trang nhật ký và tạo bài viết (Trang 69)
Hình 3.13. Giao diện chỉnh sửa thông tin cá nhân và hiển thị thông tin cá nhân - Xây dựng ứng dụng ChatApp trên Android
Hình 3.13. Giao diện chỉnh sửa thông tin cá nhân và hiển thị thông tin cá nhân (Trang 72)
Hình 3.16. Giao diện chờ khi thực hiện cuộc gọi - Xây dựng ứng dụng ChatApp trên Android
Hình 3.16. Giao diện chờ khi thực hiện cuộc gọi (Trang 75)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w