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

Sự phát triển của ngành Công nghệ thông tin đã thúc đẩy việc ứng dụng máy vi tính và điện thoại thông minh vào công việc cũng như đời sống giải trí thường nhật. Trên thị trường truyền thông di động, các nền tảng hệ điều hành như J2ME, Android, iOS, Hybrid và Web-based Mobile Application đã có những bước tiến đáng kể. Trong đó, hệ điều hành Android với đặc tính mã nguồn mở, khả năng kế thừa và kết hợp nhiều công nghệ đã trở thành một môi trường phổ biến, thu hút cộng đồng lập trình viên tham gia phát triển ứng dụng.

Xuất phát từ nhu cầu giải trí thông qua thiết bị di động cá nhân, đề tài "Xây dựng ứng dụng Android nghe nhạc offline" được sinh viên Đoàn Hoàng Hải thực hiện dưới sự hướng dẫn của ThS. Phùng Anh Tuấn tại Khoa Công nghệ thông tin, Trường Đại học Dân Lập Hải Phòng (năm 2018). Đề tài tập trung nghiên cứu nền tảng Android và phương thức xử lý âm thanh nhằm xây dựng một tiện ích nghe nhạc cục bộ tiện lợi trên thiết bị di động.

Nhiệm vụ nghiên cứu của đồ án được xác định gồm các nội dung sau:

  1. Nghiên cứu tổng quan về hệ điều hành Android, lịch sử phát triển các phiên bản và kiến trúc hệ thống 4 lớp.
  2. Tìm hiểu môi trường phát triển ứng dụng Android Studio, các thành phần cấu trúc của một dự án Android (Manifest, Java, Res, Gradle), vòng đời Activity, cơ chế Intent, SharedPreferences và hệ thống hiệu ứng đồ họa.
  3. Phân tích lý thuyết về tệp nhạc số, các thông số kỹ thuật âm thanh, cơ chế nén âm thanh có tổn hao (Lossy) và không tổn hao (Lossless), trọng tâm là chuẩn nén MP3 và thư viện phát nhạc MediaPlayer trên Android.
  4. Thiết kế chức năng và triển khai cài đặt chương trình thực nghiệm ứng dụng nghe nhạc offline trên nền tảng di động Android.
  • Đối tượng nghiên cứu: Hệ điều hành Android, môi trường lập trình Android Studio, cấu trúc định dạng tệp nhạc số (MP3, WAV, FLAC, WMA, PCM, MIDI) và các lớp xử lý đa phương tiện của Android API.
  • Phạm vi nghiên cứu: Ứng dụng phát âm thanh chạy trên môi trường Android, khai thác các tệp nhạc số được lưu trữ trực tiếp trên bộ nhớ thiết bị (chế độ offline), không phụ thuộc vào kết nối mạng; dữ liệu và thử nghiệm được tiến hành trong khuôn khổ đồ án tốt nghiệp đại học năm 2018.

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

Đồ án xây dựng các giải pháp kỹ thuật dựa trên các cơ sở lý thuyết nền tảng về hệ điều hành di động và xử lý tín hiệu âm thanh kỹ thuật số:

  • Kiến trúc hệ thống Android: Mô hình phân lớp gồm 4 tầng chính:
    • Nhân Linux (Linux Kernel 2.6): Cung cấp các dịch vụ cốt lõi về bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng và mô hình điều khiển thiết bị (driver).
    • Tầng thư viện và Android Runtime: Hệ thống thư viện C/C++ (libc, Media Framework dựa trên OpenCORE của PacketVideo, Surface Manager, LibWebCore, SGL, OpenGL ES, FreeType, SQLite) và môi trường thực thi Dalvik Virtual Machine (thực thi tệp .dex tối ưu hóa bộ nhớ) / Android Runtime (ART).
    • Tầng khung ứng dụng (Application Framework): Cung cấp các dịch vụ quản lý như View System, Content Provider, Resource Manager, Notification Manager và Activity Manager.
    • Tầng ứng dụng (Applications): Chứa các ứng dụng người dùng và ứng dụng hệ thống.
  • Lý thuyết nhạc số và xử lý âm thanh:
    • Các thông số đặc trưng: Mẫu (Sample), Tần số lấy mẫu (Sample Rate - ví dụ chuẩn 44.100 Hz), Độ sâu bit (Bit Depth - 16 bits, 24 bits), Số kênh âm thanh (Channel) và Tốc độ bit (Bitrate - tính bằng kbps).
    • Tiêu chuẩn mã hóa MP3 (MPEG-1 Layer 3, ISO/IEC 11172-3): Sử dụng mô hình tâm thính học (psychoacoustic), phép biến đổi miền thời gian sang miền tần số thông qua 32 băng tần lọc cầu phương đa âm và phép biến đổi MDCT (12 hoặc 36 nhánh), hỗ trợ cấu trúc khung dữ liệu và siêu dữ liệu ID3 (ID3v1, ID3v2, APEv2).
  • Phương pháp nghiên cứu:
    • Phương pháp phân tích - tổng hợp tài liệu: Nghiên cứu tài liệu chính thống về Android SDK, kiến trúc máy ảo Java/Dalvik, và các tiêu chuẩn quốc tế về mã hóa dữ liệu âm thanh số.
    • Phương pháp thiết kế và kỹ nghệ phần mềm: Phân tích yêu cầu bài toán, thiết kế sơ đồ phân cấp giao diện (ViewGroup, View), cấu hình tương tác thành phần và xây dựng mã nguồn bằng ngôn ngữ Java trên nền tảng Android Studio.
    • Phương pháp thực nghiệm: Cài đặt, triển khai ứng dụng trên máy ảo Genymotion (kết hợp Oracle VirtualBox) và chạy thử nghiệm các tính năng điều khiển âm thanh trên thiết bị Android thực tế.
  • Nguồn dữ liệu: Tài liệu kỹ thuật từ Android Developers, tài liệu Java Development Kit (Oracle), các tài liệu chuẩn hóa âm thanh ISO/IEC và các tệp âm thanh thử nghiệm định dạng MP3.

Thiết kế và triển khai

Hệ thống phần mềm được thiết kế và xây dựng dựa trên các thông số công nghệ và quy chuẩn kỹ thuật cụ thể:

1. Môi trường và công cụ phát triển

  • Hệ điều hành máy tính phát triển: Microsoft Windows (hỗ trợ Windows 7, 8, 10, Vista).
  • Môi trường phát triển tích hợp (IDE): Android Studio (xây dựng trên nền tảng IntelliJ IDEA Community Edition).
  • Bộ công cụ phát triển Java: Java Development Kit (JDK) phiên bản 7 trở lên.
  • Công cụ giả lập: Máy ảo Genymotion tích hợp Oracle VirtualBox (yêu cầu hỗ trợ phần cứng ảo hóa VT-x hoặc AMD-V, OpenGL 2.0).
  • Công cụ biên dịch và quản lý phụ thuộc: Hệ thống Gradle thông qua tệp build.gradle.

2. Tổ chức cấu trúc dự án Android

Một dự án Android hoàn chỉnh được phân chia thành các thư mục và tệp cấu hình chức năng:

  • Tệp AndroidManifest.xml: Định nghĩa định danh duy nhất của ứng dụng (package name), khai báo các thành phần Activity, Service, Receiver, Provider, cấu hình phiên bản SDK yêu cầu (<uses-sdk>) và xin cấp quyền truy cập hệ thống (<uses-permission>).
  • Thư mục java: Chứa toàn bộ các gói mã nguồn (package) và các lớp logic xử lý bằng ngôn ngữ Java.
  • Thư mục res (Resources):
    • drawable/: Lưu trữ các tệp đồ họa, hình ảnh tĩnh và các tệp XML định nghĩa giao diện trạng thái.
    • layout/: Lưu trữ các tệp XML bố cục giao diện người dùng cho các màn hình.
    • mipmap/: Chứa các biểu tượng (icon/logo) khởi chạy của ứng dụng theo các độ phân giải khác nhau.
    • values/: Lưu trữ các tài nguyên giá trị gồm color.xml (bảng mã màu), dimens.xml (kích thước hiển thị), strings.xml (chuỗi văn bản tĩnh) và styles.xml (giao diện và chủ đề chuẩn).

3. Kiến trúc giao diện và điều khiển

  • Phân cấp giao diện: Giao diện được xây dựng từ các lớp ViewGroup (LinearLayout, RelativeLayout, FrameLayout, ScrollView, RecyclerView, CoordinatorLayout) bao đóng các thành phần điều khiển View (TextView, EditText, Button, ImageButton, CheckBox, ToggleButton, RadioButton, ProgressBar, ListView, GridView, ViewFlipper, ImageView, Switch).
  • Quản lý vòng đời Activity: Xử lý luồng thực thi của màn hình qua 4 trạng thái cốt lõi trên ngăn xếp Activity Stack (Active/Running, Paused, Stopped, Destroyed/Killed).
  • Truyền nhận dữ liệu bằng Intent: Sử dụng Explicit Intent (Intent tường minh) và Implicit Intent (Intent không tường minh) kết hợp đối tượng Bundle để truyền dữ liệu dạng key-value qua các phương thức putExtra(), getIntent(), và cơ chế phản hồi startActivityForResult() kèm callback onActivityResult().
  • Lưu trữ trạng thái cục bộ: Ứng dụng triển khai giao diện SharedPreferences ở chế độ bảo mật MODE_PRIVATE để lưu trữ và đọc các cấu hình dạng nguyên thủy (boolean, int, float, long, String) bằng đối tượng Editor (commit() / apply()).
  • Xử lý âm thanh: Ứng dụng cấu hình quyền đọc bộ nhớ ngoài thiết bị (READ_EXTERNAL_STORAGE) và sử dụng lớp API MediaPlayer của hệ thống để nạp, phân tích tệp âm thanh và thực thi các lệnh điều khiển luồng phát (Play, Pause, Stop, Seek).

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

CẤU TRÚC NỘI DUNG ĐỒ ÁN TỐT NGHIỆP:

Chương 1: Hệ điều hành Android

Chương 1 trình bày tổng quan về nguồn gốc, kiến trúc kỹ thuật và lịch sử tiến hóa của hệ điều hành Android:

  • Lịch sử ra đời: Ban đầu được phát triển bởi Android Inc., được Google mua lại vào năm 2005. Phiên bản thương mại đầu tiên (Android 1.0) xuất hiện trên thiết bị T-Mobile G1 vào ngày 22 tháng 10 năm 2008.
  • Kiến trúc hệ điều hành: Phân tích chi tiết 4 tầng cấu trúc (Nhân Linux 2.6, Thư viện C/C++ và Dalvik VM/ART, Tầng ứng dụng nền tảng và Tầng ứng dụng người dùng).
  • Tiến trình phát triển các phiên bản: Khái quát các mốc nâng cấp tính năng từ Android 1.5 Cupcake (bắt đầu quy chuẩn đặt tên theo bánh kẹo), 1.6 Donut, 2.1 Eclair, 2.2 Froyo (bổ sung JIT compiler, USB tethering, Wi-Fi hotspot), 2.3 Gingerbread, 3.0 Honeycomb (chuyên biệt cho máy tính bảng), 4.0 Ice Cream Sandwich (bộ font Roboto, hợp nhất smartphone và tablet), 4.1-4.3 Jelly Bean (Project Butter tối ưu độ mượt, Google Now), 4.4 KitKat (Immersive mode, tối ưu hoạt động trên thiết bị RAM 512MB), 5.0 Lollipop (ngôn ngữ thiết kế Material Design, chuyển đổi sang ART, Project Volta), 6.0 Marshmallow (chế độ tiết kiệm pin Doze, Now on Tap), 7.0 Nougat (chia đôi màn hình đa nhiệm, trung tâm thông báo cải tiến) đến 8.0/8.1 Oreo (Project Treble, Picture-in-Picture, giới hạn tác vụ chạy ngầm).

Chương 2: Môi trường phát triển ứng dụng Android Studio

Chương này tập trung vào hướng dẫn thiết lập môi trường lập trình và cơ chế hoạt động của các thành phần cốt lõi trong một dự án Android:

  • Cài đặt công cụ: Chi tiết các bước cài đặt Java JDK, cấu hình biến môi trường Path, cài đặt Android Studio và thiết lập máy ảo giả lập Genymotion cùng Oracle VirtualBox.
  • Cấu trúc tệp tin và thư mục: Phân tích vai trò của AndroidManifest.xml, các thẻ khai báo quan trọng (<uses-permission>, <activity>, <service>, <receiver>, <uses-sdk>), thư mục java, các thư mục tài nguyên con trong res (drawable, layout, mipmap, values) và tệp quản lý cấu hình biên dịch build.gradle.
  • Thành phần giao diện người dùng: Định nghĩa các lớp bố cục ViewGroup, danh sách các điều khiển cơ bản View cùng hệ thống thuộc tính chuẩn (layout_width, layout_height, text, textColor, background, gravity, textSize, inputType, hint).
  • Vòng đời Activity và cơ chế truyền nhận dữ liệu: Khái quát trạng thái Active/Running, Paused, Stopped; phân loại Explicit Intent và Implicit Intent; kỹ thuật đóng gói dữ liệu qua Bundle và phương thức tương tác Activity.
  • Lưu trữ cục bộ và hiệu ứng: Hướng dẫn sử dụng đối tượng SharedPreferences để ghi, đọc và xóa dữ liệu; trình bày 10 hiệu ứng đồ họa cơ bản (Fade in, Fade out, Blink, Zoom in, Zoom out, Rotate, Move, Slide up, Slide down, Sequential/Together animation) thông qua lớp Animation và AnimationUtils.

Chương 3: Tổng quan về phát nhạc trong Android

Chương 3 đi sâu vào bản chất vật lý của âm thanh kỹ thuật số, các thuật toán nén và các lớp hỗ trợ đa phương tiện trên hệ điều hành Android:

  • Khái niệm nhạc số: Quá trình chuyển đổi tín hiệu tương tự (Analog) dạng sóng liên tục sang tín hiệu số (Digital) dạng xung rời rạc. Bản nhạc số được xác định bởi 5 thông số: Mẫu (Sample), Tần số lấy mẫu (Sample Rate), Độ sâu bit (Bit Depth/Resolution), Số kênh (Channel) và Tốc độ bit (Bitrate).
  • Công thức tính dung lượng file âm thanh không nén: $$\text{Dung lượng (bytes)} = \text{Sample Rate} \times (\text{Bit Depth} / 8) \times \text{Thời gian (giây)} \times \text{Số kênh}$$ Ví dụ minh họa: 1 phút âm thanh stereo có Sample rate 44.100 Hz, Bit depth 16 bits (2 bytes) có dung lượng xấp xỉ 10,58 MB ($44.100 \times 2 \times 60 \times 2 = 10.584.000\text{ bytes}$).
  • Phân loại định dạng âm thanh:
    • Nén có tổn hao (Lossy compression): Loại bỏ dải tần âm thanh tai người khó nghe thấy (thường trên 20 kHz) dựa trên mô hình tâm thính học; gồm MP3, WMA, OGG.
    • Nén không tổn hao (Lossless compression): Nén giảm kích thước tập tin nhưng giữ nguyên chất lượng gốc; gồm FLAC (giảm 30% - 40% dung lượng so với bản gốc), APE.
    • Không nén/Khác: PCM, WAV, MIDI (ghi lại lệnh điều khiển nhạc cụ dưới dạng chuỗi nhị phân).
  • Nghiên cứu chuẩn nén MP3 (ISO/IEC 11172-3 Layer 3):
    • Lịch sử: Xuất phát từ nghiên cứu hiện tượng che lấp thính giác của Alfred Marshall Mayer (1894), Richard Ehmer (1959), Ernst Terhardt và công trình của Karlheinz Brandenburg tại Đại học Erlangen-Nuremberg với ca khúc thử nghiệm "Tom's Diner" của Suzanne Vega. Các cột mốc phát triển: bộ mã hóa l3enc (1994), phần mềm WinPlay3 (1995), Winamp (1997), máy nghe nhạc Saehan MPMAN và Rio PMP300 (1998).
    • Kỹ thuật: Biến đổi 576 mẫu miền thời gian sang miền tần số (hoặc 192 mẫu khi có tín hiệu chuyển tiếp nhanh), sử dụng 32 băng tần lọc cầu phương và kỹ thuật MDCT; phân tích chế độ Bitrate cố định (CBR) và Bitrate biến thiên (VBR).
    • Cấu trúc tệp MP3: Gồm các khung MP3 (Header chứa từ đồng bộ sync word và khối dữ liệu âm thanh) kết hợp siêu dữ liệu nhúng ID3 (ID3v1, ID3v2, APEv2) chứa tiêu đề, nghệ sĩ, album.
  • Xử lý phát nhạc trên Android: Cơ chế khai báo quyền đọc bộ nhớ thiết bị và nguyên lý vận hành của thư viện MediaPlayer.

Chương 4: Chương trình thực nghiệm

Chương 4 mô tả quá trình hiện thực hóa ứng dụng nghe nhạc offline:

  • Phát biểu bài toán: Xây dựng tiện ích giải trí cá nhân cho phép phát các tệp âm thanh có sẵn trên bộ nhớ cục bộ của điện thoại Android, giao diện thân thiện, hoạt động độc lập không cần Internet.
  • Thiết kế chức năng: Quét hệ thống tệp để truy xuất danh sách bài hát MP3, hiển thị thông tin bài hát (tên, ca sĩ lấy từ ID3 tag), điều khiển phát nhạc (Play, Pause, Next, Previous), thanh điều chỉnh tiến trình (SeekBar) và quản lý danh sách phát.
  • Xây dựng chương trình và giao diện: Triển khai các Activity, nạp layout XML, liên kết mã nguồn Java xử lý sự kiện click của các nút bấm và tích hợp lớp MediaPlayer để thực thi luồng phát nhạc.

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

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

  • Tổng hợp và hệ thống hóa toàn bộ kiến trúc nền tảng Android, cấu trúc dự án chuẩn trong Android Studio và chu trình vòng đời ứng dụng.
  • Phân tích bản chất toán lý và cấu trúc kỹ thuật của các định dạng âm thanh số phổ biến, đặc biệt là cơ chế phân tách khung và siêu dữ liệu của chuẩn MP3.
  • Xây dựng thành công ứng dụng "Nghe nhạc offline" với đầy đủ các tính năng cơ bản: quét tệp MP3 trên bộ nhớ ngoài, tải danh sách bài hát, hiển thị giao diện phát nhạc trực quan và điều khiển quá trình phát âm thanh qua MediaPlayer.

2. Bảng so sánh các định dạng nhạc số được phân tích trong đồ án

Định dạng Nhóm nén Cơ chế đặc trưng Ưu điểm ghi nhận trong đồ án
MP3 (MPEG-1 Layer 3) Có tổn hao (Lossy) Dùng mô hình tâm thính học, lọc 32 băng tần, MDCT, hỗ trợ thẻ ID3 Dung lượng nhỏ (tỉ lệ nén khoảng 1:11 ở 128 kbps), tương thích phổ biến trên mọi thiết bị.
FLAC Không tổn hao (Lossless) Nén bảo toàn nguyên vẹn dữ liệu âm thanh gốc Giảm 30% - 40% dung lượng so với tệp gốc mà không làm suy hao chất lượng âm thanh.
WMA Có tổn hao (Lossy) Chuẩn nén độc quyền của Microsoft Windows Media Đạt chất lượng tương đương MP3 ở mức bitrate chỉ bằng một nửa, giảm dung lượng tệp.
eAAC+ Có tổn hao (Lossy) Nâng cấp từ định dạng AAC với thuật toán nén tiên tiến Cho chất lượng âm thanh vượt trội hơn MP3 trên các tệp có kích thước tương đương.
PCM / WAV Không nén (Lossless) Lưu trữ nguyên gốc sóng âm thanh số hóa Chất lượng âm thanh chuẩn xác tuyệt đối (chuẩn Audio CD), nhưng dung lượng rất lớn.
MIDI Dữ liệu điều khiển Lưu trữ chuỗi nhị phân điều khiển các nhạc cụ kỹ thuật số Kích thước tệp siêu nhẹ, không ghi trực tiếp sóng âm mà lưu mã lệnh phát nhạc.

3. Đóng góp của tác giả

  • Cung cấp tài liệu hệ thống hóa từ lý thuyết xử lý tín hiệu âm thanh số đến quy trình lập trình ứng dụng di động trên hệ điều hành Android.
  • Đưa ra hướng dẫn triển khai ứng dụng phát nhạc thực tế sử dụng các thành phần thuần của Android SDK (Activity, Intent, SharedPreferences, MediaPlayer).

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

  • Hạn chế:
    • Ứng dụng chỉ tập trung vào việc đọc và phát các tệp âm thanh có sẵn trên bộ nhớ ngoài của thiết bị (chế độ offline), chưa hỗ trợ tính năng nghe nhạc trực tuyến (online streaming) qua mạng.
    • Chưa tích hợp các module xử lý âm thanh nâng cao như bộ cân bằng âm sắc (Equalizer), tạo hiệu ứng vòm hoặc tự động tải ảnh bìa album trực tuyến.
    • Thử nghiệm mới được thực hiện trong phạm vi cấu hình máy ảo Genymotion và một số dòng máy Android tại thời điểm năm 2018.
  • Hướng phát triển:
    • Mở rộng ứng dụng kết nối với Web Server để hỗ trợ tải và nghe nhạc trực tuyến.
    • Bổ sung các tính năng nâng cao: Equalizer tùy biến, tạo và quản lý danh sách phát (Playlist) phức tạp, hẹn giờ tắt nhạc và tối ưu hóa giao diện cho các phiên bản Android mới.

Giá trị tham khảo

Đồ án là tài liệu tham khảo kỹ thuật phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Làm tài liệu học tập nền tảng về lập trình ứng dụng Android bằng Java trên môi trường Android Studio.
  • Người nghiên cứu về đa phương tiện di động: Tham khảo các phân tích chi tiết tại Chương 3 về lý thuyết nhạc số, cấu trúc khung tệp MP3, cách nhúng metadata ID3 và phương pháp sử dụng lớp MediaPlayer để xử lý âm thanh.
  • Lập trình viên mới bắt đầu: Tham khảo Chương 2 để nắm vững cấu trúc một Android Project, cách phân chia tài nguyên trong thư mục res, cơ chế lưu trữ SharedPreferences và các loại chuyển cảnh hoạt họa (Animation).

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

1. Kiến trúc hệ điều hành Android được chia thành mấy lớp chính?

Theo Chương 1 của đồ án, Android gồm 5 phần chính được bố trí trong 4 lớp: Nhân Linux (Linux Kernel phiên bản 2.6), Tầng thư viện C/C++ kết hợp môi trường thực thi Android Runtime (Dalvik VM/ART), Tầng khung ứng dụng (Application Framework) và Tầng ứng dụng người dùng (Applications).

2. Tệp AndroidManifest.xml giữ vai trò gì trong dự án Android?

Tệp AndroidManifest.xml là tệp cấu hình cốt lõi tự động sinh ra trong mỗi dự án Android, dùng để đặt tên gói (package name), định nghĩa các Activity, Service, Broadcast Receiver, Content Provider, xin cấp quyền truy cập hệ thống (<uses-permission>), và khai báo mức API SDK tối thiểu mà ứng dụng yêu cầu để hệ điều hành có thể nhận diện và khởi chạy.

3. Năm thông số cơ bản nào quyết định chất lượng và dung lượng của một bản nhạc số?

Theo Chương 3, năm thông số cơ bản gồm:

  1. Mẫu (Sample): Thành phần lấy mẫu nhỏ nhất của sóng âm.
  2. Tần số lấy mẫu (Sample Rate): Số lần lấy mẫu trong một giây (Hz).
  3. Độ sâu bit (Bit Depth/Resolution): Số lượng bit dùng để biểu diễn mỗi mẫu (ví dụ 16 bits, 24 bits).
  4. Số kênh (Channel): Số luồng âm thanh phân tách (Mono, Stereo).
  5. Tốc độ bit (Bitrate): Dung lượng dữ liệu tính theo kilobits trên một giây (kbps).

4. Ca khúc nào được sử dụng đầu tiên để thử nghiệm và tinh chỉnh thuật toán nén MP3?

Theo tài liệu lịch sử phát triển chuẩn MP3 tại Chương 3, ca khúc "Tom's Diner" của nữ nghệ sĩ Suzanne Vega đã được nhà khoa học Karlheinz Brandenburg tại Đại học Erlangen-Nuremberg lựa chọn để thẩm định và tinh chỉnh thuật toán nén MP3 nhờ vào tính chất đơn âm và dải quang phổ giọng hát rộng.

5. Cơ chế lưu trữ SharedPreferences trong Android hoạt động như thế nào?

SharedPreferences là một giao diện cho phép lưu trữ và đọc dữ liệu dưới dạng các cặp khóa - giá trị (key-value) được ghi trong tệp XML cục bộ của ứng dụng. Cơ chế này hỗ trợ lưu các kiểu dữ liệu nguyên thủy (boolean, int, float, long, String) và khi thiết lập ở chế độ Context.MODE_PRIVATE, dữ liệu chỉ có thể được truy cập độc quyền bởi ứng dụng tạo ra nó.


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng Android nghe nhạc offline" của sinh viên Đoàn Hoàng Hải đã tổng hợp toàn diện các kiến thức nền tảng về hệ điều hành Android, môi trường phát triển Android Studio và lý thuyết xử lý tệp nhạc số. Trên cơ sở phân tích cấu trúc định dạng MP3 và các lớp điều khiển đa phương tiện, tác giả đã thiết kế và triển khai thành công một ứng dụng nghe nhạc ngoại tuyến hoàn chỉnh, đáp ứng các chức năng quản lý danh sách và phát âm thanh trực tiếp trên thiết bị di động. Công trình là tài liệu tổng thuật và thực hành kỹ thuật có giá trị tham khảo rõ ràng cho sinh viên khối ngành Công nghệ thông tin trong lĩnh vực phát triển ứng dụng di động.