Bối cảnh và vấn đề nghiên cứu

Sự phát triển mạnh mẽ của công nghệ thông tin và các thiết bị di động thông minh đã biến điện thoại di động thành một công cụ làm việc và giải trí phổ biến. Trong các hình thức giải trí kỹ thuật số, âm nhạc đóng vai trò quan trọng trong việc thư giãn tinh thần, hỗ trợ cải thiện chất lượng giấc ngủ, giảm căng thẳng và nâng cao chất lượng cuộc sống. Nhu cầu tiếp cận các ứng dụng nghe nhạc trực tuyến và ngoại tuyến tiện lợi, trực quan trên nền tảng di động ngày càng tăng cao.

Đề tài "Xây Dựng Ứng Dụng Nghe Nhạc Trên Android" được thực hiện bởi nhóm sinh viên Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, dưới sự hướng dẫn của giảng viên Trần Văn Định trong khuôn khổ học phần Lập trình di động.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài bao gồm:

  1. Nghiên cứu tổng quan về hệ điều hành Android, môi trường phát triển Android Studio và các thành phần cốt lõi trong kiến trúc ứng dụng Android.
  2. Khảo sát và xác định các yêu cầu chức năng, yêu cầu phi chức năng phục vụ nhu cầu nghe nhạc của người dùng.
  3. Phân tích, thiết kế hệ thống phần mềm bằng mô hình hóa trực quan (UML) và thiết kế cơ sở dữ liệu quan hệ kết hợp dữ liệu đám mây.
  4. Triển khai xây dựng hoàn chỉnh ứng dụng nghe nhạc trên thiết bị chạy hệ điều hành Android, cung cấp giao diện người dùng và giao diện quản trị nội dung.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Kiến trúc phần mềm ứng dụng di động Android, các kỹ thuật xử lý đa phương tiện (phát nhạc nền, quản lý tiến trình âm thanh), các giải pháp lưu trữ dữ liệu (SQLite, Firebase).
  • Phạm vi hệ thống: Ứng dụng hoạt động trên các thiết bị di động cài đặt hệ điều hành Android từ phiên bản 5.0 trở lên, sử dụng ngôn ngữ lập trình Java và hệ quản trị dữ liệu Firebase kết hợp SQLite nội bộ.

Cơ sở lý thuyết và phương pháp

Đề tài xây dựng trên nền tảng lý thuyết lập trình ứng dụng Android và phương pháp kỹ thuật phần mềm hướng đối tượng:

Khung lý thuyết và công nghệ

  • Kiến trúc Android: Khảo sát mô hình 5 tầng của hệ điều hành Android, bao gồm tầng Ứng dụng (Applications), tầng Khung ứng dụng (Application Framework), tầng Thư viện (Libraries), tầng Môi trường thực thi (Android Runtime với máy ảo Dalvik/ART) và tầng Nhân Linux (Linux Kernel).
  • Các thành phần cơ bản (Components):
    • Activity & Vòng đời Activity: Vận dụng các trạng thái onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() để quản lý giao diện và trạng thái ứng dụng.
    • Intent & AndroidManifest.xml: Sử dụng Explicit Intent và Implicit Intent để kích hoạt component, truyền tải dữ liệu kèm bộ lọc Intent Filter.
    • Service & Quản lý tiến trình chạy nền: Khảo sát các loại Service gồm Foreground Service (bắt buộc gắn Notification để phát nhạc nền liên tục), Background Service và Bound Service. Cơ chế phản hồi trong onStartCommand() (START_NOT_STICKY, START_STICKY, START_REDELIVER_INTENT).
    • Broadcast Receiver & Content Provider: Cơ chế tiếp nhận sự kiện hệ thống và chia sẻ dữ liệu liên ứng dụng qua ContentResolver.
    • Notification & Notification Channel: Quản lý thông báo và kênh điều khiển âm thanh ngoài màn hình khóa từ phiên bản Android 8 trở lên.
  • Nền tảng lưu trữ: Sử dụng hệ thống tệp tin cục bộ, SharedPreferences cho cấu hình nhẹ, SQLite cho lưu trữ nội bộ và Firebase Realtime Database của Google để đồng bộ dữ liệu thời gian thực và quản lý xác thực người dùng.

Phương pháp nghiên cứu và phát triển

  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng hệ thống biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram), biểu đồ hoạt động (Activity Diagram).
  • Thiết kế dữ liệu: Xây dựng sơ đồ thực thể kết hợp (ERD) và chuyển đổi sang lược đồ cơ sở dữ liệu quan hệ chi tiết.
  • Phương pháp thực nghiệm phát triển: Lập trình trực tiếp trên môi trường Android Studio bằng ngôn ngữ Java, tích hợp công cụ đóng gói Gradle.

Thiết kế và triển khai hệ thống

Yêu cầu hệ thống

Nhóm yêu cầu Nội dung đặc tả
Yêu cầu chức năng - Phát nhạc (phát, dừng, tiến bài, lùi bài, lặp lại, phát trộn ngẫu nhiên, điều chỉnh tiến trình phát, hẹn giờ tắt).
- Tìm kiếm bài hát theo tên, ca sĩ, chủ đề, thể loại.
- Bảng xếp hạng âm nhạc, gợi ý bài hát mới.
- Quản lý tài khoản (đăng ký, đăng nhập qua Email/Google/Facebook, đổi mật khẩu).
- Quản lý thư viện cá nhân và danh sách phát (Playlist).
- Tải bài hát về thiết bị để nghe ngoại tuyến.
- Phân hệ quản trị (CRUD người dùng, bài hát, album, banner, thể loại, chủ đề).
Yêu cầu phi chức năng - Tốc độ tải bài hát nhanh, hạn chế tối đa giật/lag.
- Dung lượng bộ nhớ ứng dụng chiếm dụng tối đa không quá 100 MB.
- Hoạt động trên nền tảng Android phiên bản 5.0 trở lên.
- Đảm bảo tính bảo mật thông tin tài khoản người dùng.
- Đảm bảo tính toàn vẹn và bản quyền của nguồn dữ liệu bài hát.

Cấu trúc cơ sở dữ liệu

Mô hình dữ liệu của hệ thống được phân rã thành 8 thực thể chính:

Tên bảng / Thực thể Khóa chính Khóa ngoại Mô tả chức năng
User id Không có Lưu trữ thông tin tài khoản, tên hiển thị, mật khẩu, email, số điện thoại, avatar, phân quyền (role).
Song id idTheme, idTypes, idAlbum, idPlaylist Lưu thông tin chi tiết bài hát, tên bài hát, hình ảnh, ca sĩ, đường dẫn nhạc (linkSong).
Banner id idSong Quản lý hình ảnh quảng bá và bài hát liên kết hiển thị trang chủ.
Album id Không có Lưu trữ danh mục album, hình đại diện và thông tin ca sĩ.
Theme id Không có Lưu trữ danh mục các chủ đề âm nhạc.
Types id Không có Phân loại các thể loại âm nhạc.
Playlist id uid (tham chiếu User.id) Lưu thông tin danh sách phát do người dùng hoặc quản trị viên tạo ra.
Playlist_Song id idSong, idPlaylist Bảng trung gian thể hiện quan hệ nhiều - nhiều giữa bài hát và danh sách phát.

Nội dung chính theo từng chương

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Chương này tập trung trình bày tổng quan về nền tảng hệ điều hành Android và môi trường phát triển ứng dụng di động:

  • Trình bày kiến trúc phân tầng của Android từ nhân Linux Kernel đến tầng Applications, phân tích nguyên lý biên dịch mã nguồn Java thông qua máy ảo DVM và ART.
  • Giới thiệu công cụ Android Studio, Android SDK và hệ thống build tự động Gradle.
  • Đi sâu vào 4 thành phần ứng dụng Android cốt lõi: Activity và vòng đời xử lý trạng thái bộ nhớ; Intent và vai trò điều phối trong tệp cấu hình AndroidManifest.xml; Service và các mức độ ưu tiên tiến trình nền (Foreground, Background, Bound Service); Broadcast Receiver và Content Provider trong xử lý thông điệp, chia sẻ tài nguyên.
  • Phân tích cơ chế thông báo Notification và giải pháp quản lý Notification Channel từ Android 8.0 trở lên.
  • So sánh các phương thức lưu trữ dữ liệu cục bộ (Internal/External File Storage, SharedPreferences, SQLite) và dịch vụ điện toán đám mây Firebase Realtime Database.

CHƯƠNG 2: GIỚI THIỆU CHUNG

Nội dung chương 2 làm rõ lý do chọn đề tài và xác lập các tiêu chí kỹ thuật:

  • Đánh giá bối cảnh phát triển của thị trường ứng dụng di động và nhu cầu thưởng thức âm nhạc nhằm giải tỏa căng thẳng trong đời sống hiện đại.
  • Liệt kê tập chức năng người dùng mong đợi: nghe nhạc trực tuyến, tìm kiếm đa tiêu chí, tạo danh sách phát cá nhân, tải bài hát nghe ngoại tuyến và cập nhật bảng xếp hạng.
  • Đặc tả chi tiết hệ thống yêu cầu chức năng và yêu cầu phi chức năng, xác định giới hạn tài nguyên hệ thống (Android 5.0+, RAM/Bộ nhớ dưới 100 MB, ngôn ngữ Java, công cụ Android Studio, SQLite và Firebase).

CHƯƠNG 3: THIẾT KẾ VÀ MÔ TẢ CHỨC NĂNG HỆ THỐNG

Chương 3 trình bày toàn bộ quá trình thiết kế hệ thống từ mức khái niệm đến thiết kế chi tiết:

  • Xây dựng sơ đồ Use Case tổng quát và 4 đặc tả Use Case trọng tâm: Đăng ký/Đăng nhập, Nghe nhạc, Quản lý danh sách phát cá nhân, Tìm kiếm.
  • Chi tiết hóa 21 sơ đồ tuần tự (Sequence Diagram) thể hiện tương tác giữa Actor, Giao diện và Hệ thống cho từng luồng xử lý: ngừng nhạc, phát nhạc, chuyển bài tiếp theo, lùi bài, tua thời gian, lặp bài, trộn danh sách, tải xuống, đánh giá, tìm kiếm, CRUD danh sách phát, CRUD đối tượng nhạc phía Admin.
  • Xây dựng 22 sơ đồ hoạt động (Activity Diagram) thể hiện luồng nghiệp vụ tương ứng của người dùng và quản trị viên.
  • Thiết kế cơ sở dữ liệu quan hệ qua sơ đồ ERD, chuẩn hóa danh sách các bảng dữ liệu: User, Song, Banner, Album, Theme, Types, Playlist, Playlist_Song.
  • Phác thảo thiết kế giao diện khung (Wireframes/Mockups) cho 16 màn hình chính: Bảng xếp hạng, Cá nhân, Tìm kiếm, Khám phá, Hồ sơ, Đổi mật khẩu, Đăng ký/Đăng nhập, Trình phát nhạc, Quản lý Playlist và Giao diện quản trị Admin.

CHƯƠNG 4: KẾT QUẢ

Chương 4 phản ánh kết quả hiện thực hóa phần mềm trên thiết bị thực tế:

  • Giao diện người dùng (Client): Triển khai thành công màn hình Bảng xếp hạng (sắp xếp bài hát theo lượt nghe); Màn hình Khám phá (chủ đề, thể loại, album); Màn hình Tìm kiếm (theo từ khóa tên bài, ca sĩ, thể loại); Màn hình Cá nhân (quản lý nhạc trên thiết bị, lịch sử nghe, danh sách phát); Màn hình Trình phát nhạc (điều khiển đa chức năng, danh sách đang phát); Màn hình Hồ sơ & Đổi mật khẩu; Hệ thống Đăng ký/Đăng nhập hỗ trợ phương thức Email, Google, Facebook.
  • Giao diện quản trị (Admin): Triển khai giao diện quản lý danh sách và cập nhật chi tiết cho 7 nhóm đối tượng dữ liệu: Người dùng, Bài hát, Banner, Album, Chủ đề, Thể loại, Danh sách phát. Form nhập liệu hỗ trợ nhập chuỗi văn bản, chọn từ danh sách Combobox và tải tệp tin từ thiết bị.

CHƯƠNG 5: KẾT LUẬN

  • Tổng kết các mục tiêu đã đạt được về mặt nắm vững kiến thức lập trình hướng đối tượng trên Android và quy trình phát triển sản phẩm phần mềm di động thực tế.
  • Đánh giá khả năng đáp ứng của sản phẩm đối với người dùng (nghe nhạc, tạo playlist, tải nhạc) và quản trị viên (đồng bộ dữ liệu trực tiếp qua Firebase Realtime Database).
  • Trình bày các hạn chế còn tồn đọng và vạch ra định hướng phát triển trong tương lai.

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

  1. Xây dựng hoàn chỉnh ứng dụng di động: Triển khai thành công ứng dụng nghe nhạc chạy trên hệ điều hành Android (hỗ trợ từ Android 5.0 trở lên) với giao diện trực quan và đầy đủ luồng nghiệp vụ.
  2. Hiện thực hóa phân hệ đa phương tiện: Ứng dụng tích hợp trình phát nhạc hỗ trợ đầy đủ các thao tác: Play/Pause, Next/Previous bài hát, Seekbar điều chỉnh thời gian, chế độ lặp lại (Loop), chế độ trộn bài ngẫu nhiên (Shuffle) và phát nhạc nền thông qua cơ chế Service kết hợp Notification.
  3. Quản lý dữ liệu thời gian thực: Kết nối thành công hệ thống dữ liệu cục bộ và đám mây với Firebase Realtime Database, cho phép đồng bộ tức thì các thao tác CRUD của quản trị viên đến toàn bộ người dùng đang hoạt động trên hệ thống.
  4. Hệ thống phân quyền rõ ràng: Thiết lập 2 phân hệ người dùng độc lập: Khách/Người dùng cá nhân (nghe nhạc, tìm kiếm, tạo danh sách phát, nghe nhạc từ bộ nhớ máy) và Quản trị viên (quản lý toàn diện dữ liệu danh mục và tài khoản).

Đóng góp về mặt học thuật và thực tiễn

  • Vận dụng đầy đủ quy trình kỹ thuật phần mềm chuẩn mực: từ khảo sát yêu cầu, mô hình hóa chi tiết bằng UML (Use Case, Sequence, Activity Diagram) đến thiết kế CSDL quan hệ chuẩn hóa.
  • Cung cấp mô hình tham khảo thực tế về việc áp dụng kiến trúc Android Components (Activity, Service, Broadcast Receiver, Content Provider) vào bài toán xây dựng ứng dụng giải trí đa phương tiện.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

Theo tự đánh giá của nhóm tác giả trong văn bản:

  • Nội dung cơ sở dữ liệu bài hát của ứng dụng còn thiếu sót, chưa đa dạng.
  • Một số chức năng xử lý nghiệp vụ chưa được tối ưu hóa hoàn toàn.
  • Bố cục giao diện và cách phối màu sắc của ứng dụng còn đơn giản, chưa thực sự thu hút người dùng.
  • Chưa thực hiện kiểm thử bao phủ được toàn bộ các trường hợp lỗi phát sinh trong quá trình vận hành.

Hướng phát triển tiếp theo

  • Mở rộng tính năng tương tác mạng xã hội: Phát triển các tính năng kết nối người dùng với người dùng (kết bạn, trò chuyện) và tương tác người dùng với máy chủ (cho phép người dùng tải các bản nhạc cá nhân lên hệ thống để chia sẻ cộng đồng).
  • Nâng cao trải nghiệm đa phương tiện: Bổ sung tính năng phát video/MV ca nhạc trực tuyến, hỗ trợ người dùng tự tạo và cá nhân hóa album nhạc riêng biệt.
  • Nâng cấp kỹ thuật và kiến trúc phần mềm: Áp dụng các kỹ thuật lập trình nâng cao nhằm tối ưu hóa hiệu năng, cải tiến giao diện hiện đại hơn, gia tăng mức độ bảo mật dữ liệu và tạo điều kiện thuận lợi cho việc bảo trì, mở rộng hệ thống về sau.

Giá trị tham khảo

Tài liệu đồ án có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Dùng làm tài liệu mẫu tham khảo cấu trúc một đồ án môn học Lập trình di động hoặc khóa luận tốt nghiệp ứng dụng Android.
  • Lập trình viên phát triển ứng dụng di động mới bắt đầu: Tham khảo hệ thống tài liệu thiết kế chi tiết (21 sơ đồ tuần tự và 22 sơ đồ hoạt động) mô tả rõ nét các luồng xử lý của một ứng dụng Media Player (xử lý sự kiện phát nhạc, điều khiển danh sách phát, tìm kiếm và phân loại dữ liệu).
  • Người nghiên cứu tích hợp Firebase vào Android: Tham khảo cách thiết kế lược đồ quan hệ và đồng bộ dữ liệu giữa ứng dụng Java trên Android Studio với Firebase Realtime Database.

Câu hỏi thường gặp

1. Đồ án sử dụng công nghệ và ngôn ngữ lập trình nào để xây dựng ứng dụng?
Ứng dụng được lập trình bằng ngôn ngữ Java trên môi trường phát triển tích hợp Android Studio, sử dụng bộ công cụ build Gradle. Cơ sở dữ liệu được lưu trữ và đồng bộ thông qua Firebase Realtime Database và SQLite nội bộ.

2. Ứng dụng hỗ trợ các phiên bản hệ điều hành Android nào và có giới hạn dung lượng ra sao?
Theo đặc tả yêu cầu phi chức năng trong đồ án, hệ thống yêu cầu thiết bị di động chạy hệ điều hành Android từ phiên bản 5.0 trở lên và dung lượng bộ nhớ cài đặt chiếm dụng tối đa không quá 100 MB.

3. Làm thế nào ứng dụng duy trì việc phát nhạc khi người dùng chuyển sang ứng dụng khác?
Hệ thống sử dụng thành phần Foreground Service trong Android để duy trì tiến trình phát nhạc trong background. Dịch vụ này bắt buộc hiển thị một Notification trên thanh trạng thái/màn hình khóa để người dùng tương tác và tránh việc hệ thống tự động giải phóng (kill) tiến trình khi thiếu bộ nhớ.

4. Cơ sở dữ liệu của hệ thống gồm những thực thể nào?
Hệ thống được thiết kế với 8 bảng dữ liệu quan hệ, bao gồm: User (người dùng), Song (bài hát), Banner (quảng bá), Album (danh mục album), Theme (chủ đề), Types (thể loại), Playlist (danh sách phát) và Playlist_Song (bảng liên kết giữa danh sách phát và bài hát).

5. Phân hệ Quản trị viên (Admin) được cung cấp những quyền hạn gì trên ứng dụng?
Quản trị viên có quyền thực hiện các thao tác Thêm, Sửa, Xóa (CRUD) đối với toàn bộ dữ liệu hệ thống ngay trên giao diện ứng dụng, bao gồm: quản lý tài khoản người dùng, bài hát, banner, album, chủ đề, thể loại và danh sách phát.


Kết luận

Đồ án "Xây Dựng Ứng Dụng Nghe Nhạc Trên Android" đã hoàn thành việc nghiên cứu nền tảng lý thuyết lập trình di động và hiện thực hóa thành công một sản phẩm ứng dụng nghe nhạc đa phương tiện trên nền tảng Android. Hệ thống đáp ứng tốt các yêu cầu phát nhạc cơ bản, quản lý thư viện bài hát cá nhân, tìm kiếm và phân quyền quản trị nội dung linh hoạt nhờ sự kết hợp giữa ngôn ngữ Java, Android Studio và Firebase. Mặc dù còn một số hạn chế về mặt giao diện và tính năng nâng cao, đồ án là tài liệu tham khảo có giá trị cao về mặt phân tích thiết kế hệ thống và triển khai ứng dụng phần mềm di động.