Đồ án môn học nhập môn ứng dụng di động xây dựng ứng dụng media player

91 2 0
Đồ án môn học nhập môn ứng dụng di động xây dựng ứng dụng media player

Đ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

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM ĐỒ ÁN MÔN HỌC NHẬP MƠN ỨNG DỤNG DI ĐỘNG (Lớp SE114.M22.PMCL) Nhóm XÂY DỰNG ỨNG DỤNG MEDIA PLAYER SINH VIÊN THỰC HIỆN: Hà Phi Hùng – 20520526 Lê Quang Trung – 20520333 Phạm Nhựt Danh – 20520151 Nguyễn Quang Vũ – 20520352 Phạm Trương Hải Đoàn – 20520046 GIẢNG VIÊN HƯỚNG DẪN: ThS Nguyễn Tấn Toàn Tp.HCM, tháng 06 năm 2022 ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM ĐỒ ÁN MÔN HỌC NHẬP MƠN ỨNG DỤNG DI ĐỘNG (Lớp SE114.M22.PMCL) Nhóm XÂY DỰNG ỨNG DỤNG MEDIA PLAYER SINH VIÊN THỰC HIỆN: Hà Phi Hùng – 20520526 Lê Quang Trung – 20520333 Phạm Nhựt Danh – 20520151 Nguyễn Quang Vũ – 20520352 Phạm Trương Hải Đoàn – 20520046 GIẢNG VIÊN HƯỚNG DẪN: ThS Nguyễn Tấn Toàn Tp.HCM, tháng 06 năm 202 BẢNG PHÂN CÔNG THỰC HIỆN ĐỒ ÁN MÔN HỌC Họ tên SV1: HÀ PHI HÙNG Họ tên SV2: LÊ QUANG TRUNG MSSV: 20520526 MSSV: 20520333 Xử lý tính phát nhạc Xử lý tính thư viện nhạc Xử lý tính phát video Xử lý tính đa ngơn ngữ Chỉnh sửa, tích hợp tính Xử lý tính cài đặt thiết lập Viết báo cáo Họ tên SV3: PHẠM NHỰT DANH Viết báo cáo Họ tên SV4: NGUYỄN QUANG VŨ MSSV: 20520151 Xử lý tính danh sách phát MSSV: 20520352 Thiết kế giao diện Xử lý tính danh sách yêu thích Làm slide Xử lý tính danh sách xem sau Viết báo cáo Viết báo cáo Họ tên SV5: PHẠM TRƯƠNG HẢI ĐOÀN MSSV: 20520046 Xử lý tính thư viện video Xử lý tính lưu lịch sử phát Xử lý tính thống kê số lượt phát Viết báo cáo SV thực SV thực (Ký tên) (Ký tên) HÀ PHI HÙNG LÊ QUANG TRUNG SV thực SV thc hin (Ký tờn) (Ký tờn) ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player PHẠM NHỰT DANH SV thực (Ký tên) PHẠM TRNG HI ON NGUYN QUANG V ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player LI CM ƠN Trong thời đại số nay, lĩnh vực công nghệ thông tin không ngừng phát triển mang lại tiện lợi đời sống hàng ngày Một ví dụ điển hình cho tiện ích phần mềm, ứng dụng với giao diện dễ tương tác nhiều tính mang lại thuận tiện cho người dùng Là sinh viên ngành Kỹ thuật phần mềm, đồ án môn Nhập môn ứng dụng di động, nhóm định chọn đề tài: XÂY DỤNG ỨNG DỤNG MEDIA PLAYER, qua vận dụng củng cố kiến thức kỹ học Nhóm xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Tấn Tồn tận tình giảng dạy, hướng dẫn, tạo cho nhóm tảng kiến thức vững để thực đề tài, đồng thời giúp đỡ, góp ý để nhóm ngày hồn thiện ứng dụng Nhóm xin gửi lời cảm ơn đến bạn học lớp SE114.M22.PMCL chuẩn bị kĩ lưỡng buổi seminar giúp nhóm có nhiều kiến thức cần thiết cho việc thực đồ án Do hạn chế kiến thức thời gian, đồ án nhóm cịn nhiều điểm cần cải thiện Nhóm mong nhận góp ý thầy bạn để đồ án nhóm ngày hồn thiện NHĨM SINH VIÊN THỰC HIỆN Hà Phi Hùng Lê Quang Trung Phạm Nht Danh Nguyn Quang V Phm Trng Hi on ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player NHN XẫT CA GING VIấN HNG DN Tp.HCM, ngày … tháng … nm 2022 GVHD ThS Nguyn Tn Ton ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player - Để quan sát liệu từ đối tượng này, cần gọi hàm subscribe đưa callback chứa code lấy xử lý liệu trả Một điểm nhấn RxJava ta xử lý liệu trước trả thông qua operator flatMap, filter, map,… Ta nối operator lại để thực xử lý nghiệp vụ phức tạp - Ta yêu cầu observable sequence tạo xử lý liệu thread khác thông báo thread thơng qua scheduler io, computation,… Điều giúp ta xử lý liệu mà không làm chặn thread đứng UI Ta đặt thread để load xử lý liệu qua phương thức subscribeOn đặt thread để nhận liệu qua phương thức observeOn 3.2.3 Ví dụ áp dụng vào ứng dụng - Một ví dụ việc áp dụng RxJava vào ứng dụng load liệu album từ MediaStore Việc load liệu thực thread IO Single Khi load xong, Single trả observer liệu load thread observer gọi view để hiển thị liệu Hình 3.2 Sơ đồ dùng RxJava để load liệu từ MediaStore - Tạo Single load liệu album từ MediaStore nó: public Single getAlbums (String selection, String[] selectionArgs, String sortOrder) { return Single.fromCallable(() -> { List albums = new ArrayList(); // Việc load liệu vo albums t MediaStore ó c lt i ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player return albums; }).subscribeOn(Schedulers.io()); - Load mt album t ID public Single getAlbum(long id) { return getAlbums(MediaStore.Audio.Albums._ID + " = ?", new String[] { String.valueOf(id) }, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER) map(i -> i.get(0)); } - Lấy liệu từ Single qua Observer cập nhật view tương ứng: getAlbum(albumId).observeOn( AndroidSchedulers.mainThread()) subscribe(album -> { binding.albumDetailsName.setText(album.getAlbumName()); binding.albumDetailsArtist.setText(album.getArtistName()); }); 3.3 Đảm bảo có phân tách UI xử lý liệu kiến trúc MVVM 3.3.1 Sơ lược - Kiến trúc MVVM (Model-View-ViewModel) kiến trúc phần mềm đề cao phân tách việc phát triển giao diện người dùng – thông qua ngôn ngữ markup XML, XAML thông qua module code GUI - việc phát triển logic xử lý nghiệp vụ để tránh việc giao diện bên phải phụ thuộc vào khối liệu định bên [ CITATION Wik22 \l 1033 ] Hình 3.3 Sơ đồ kiến trỳc MVVM ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player - Trong kin trỳc MVVM gm phận: + View: Gồm thành phần liên quan đến giao diện hệ thống nhằm hiển thị thông tin tương tác với người dùng + Model: Gồm thân liệu thành phần liên quan đến xử lý liệu để thành phần thuộc View hiển thị lên giao diện + ViewModel: Là thành phần gắn kết View Model Khác với thành phần Presenter mơ hình MVP thành phần Controller mơ hình MVC, ViewModel hoạt động xoay quanh binder – công nghệ liên kết liệu khiến cho việc giao tiếp View ViewModel trở nên hoàn toàn tự động 3.3.2 Kiến trúc MVVM lập trình Android - Trong lập trình Android, thực hóa kiến trúc MVVM số thành phần thuộc Architecture Components Android – thành phần Android thiết kế nhằm giảm thiểu việc code khơng cần thiết, module hóa ứng dụng, hỗ trợ lập trình viên việc quản lý lifecycle nhiều yếu tố khác [ CITATION And \l 1033 ]: + View: Các Activity Fragment gồm đoạn code liên kết với ViewModel để lấy liệu + ViewModel: Lớp ViewModel LiveData Android xây dựng Trong lớp LiveData cho phép View “quan sát” thay đổi xảy liệu bên thông báo cho View quan sát + Model: Lớp Repository – cho phép quản lý nhiều nguồn liệu khác Thư viện Room database – n gin húa vic ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player qun lý c s liệu SQLite Các lớp DAO – gắn phương thức với câu truy vấn SQL Các lớp Entity đại diện cho bảng sở liệu Hình 3.4 Kiến trúc MVVM Android 3.3.3 Áp dụng kiến trúc MVVM vào ứng dụng - Đối với ứng dụng tại, nhóm áp dụng kiến trúc MVVM thông qua việc sử dụng thành phần Android, cụ thể ví dụ sau, việc quản lý playlist thực cách dễ dàng với thành phần kiến trúc MVVM: + Model: Tạo lớp xử lý liệu bao gồm lớp Playlist, lp PlaylistDao, lp AppRoomDatabase, v lp PlaylistRepository ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player Hỡnh 3.5 Lớp Playlist lớp Entity đại diện cho playlist Hình 3.6 Lớp PlaylistDao gắn phương thức với câu truy vấn SQL Hình 3.7 Lớp AppRoomDatabase – kế thừa từ RoomDatabase database chung ứng dụng Hình 3.8 Lớp PlaylistRepository để liên kết đến Room database nguồn liệu khác (nếu có) ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player + ViewModel: Lp PlaylistViewModel k tha t lp AndroidViewModel sử dụng LiveData Hình 3.9 Lớp PlaylistViewModel kế thừa từ lớp AndroidViewModel + View: Bên lớp PlaylistFragment sử dụng PlaylistViewModel để liệu thay đổi recyclerview hiển thị playlist update: Hình 3.10 S dng PlaylistViewModel bờn PlaylistFragment ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player KT LUẬN  Ưu điểm đồ án - Giao diện đồng nhất, dễ dùng - Có đầy đủ tính ứng dụng media - Có tính tiện ích danh sách phát, lưu vị trí phát cuối, đa ngơn ngữ - Hiệu suất tốt có nhiều liệu  Hạn chế đồ án - Chưa hiển thị thể loại nhạc có máy - Chưa hỗ trợ phát stream - Chưa hỗ trợ đầy đủ chế độ tối xoay ngang hình  Hướng phát triển đồ án - Hỗ trợ phát stream nhạc video - Thêm tab hiển thị thể loại nhạc có hình thư viện nhạc - Hỗ trợ đầy đủ ch ti v xoay mn hỡnh ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player ãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.playerãỏằ.Ăn.mn.hỏằãc.nhỏưp.mn.ỏằâng.dỏằƠng.di.ỏằng.xÂy.dỏằng.ỏằâng.dỏằƠng.media.player

Ngày đăng: 02/11/2023, 01:58

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

  • Đang cập nhật ...

Tài liệu liên quan