Chương 1. TONG QUAN DE TÀI 1. Hién trang Hiện nay, hai hình thức giải tri phổ biến nhất đó chính là nghe nhac và mạng xã hội. Đối với ứng dụng nghe nhạc, những ứng dụng nhiều người sử dụng có thé kế đến như là Spotify,Youtube Music, Zing MP3,.
Còn đối với những mạng xã hội, Facebook, Tiktok, Souncloud có thể kế đến như là những ứng dung hàng đầu cho mục đích này. Tuy nhiên, ngoải Youtube thì chưa có một ứng dụng nào là áp dụng tất cả hai hình thức trên. Lý do chọn đề tài Âm nhạc từ lâu luôn đóng góp vị trí quan trọng trong sự phát triển của đời sống và xã hội. Mọi người thường nghe âm nhac dé giải trí, thư giản, giải toa áp lực của bản thân, cũng như dé đáp ứng nhu cầu của bản thân trong cuộc sống thường ngày.
Đôi khi âm nhạc cũng là sợi dây gắn kết mọi người lại với nhau, họ chia sẻ cũng như trò chuyện về những bài nhạc họ yêu thích. Do đó, nham đáp ứng nhu cầu nghe nhạc cũng như chia sẻ nhạc của mọi người, nhóm chúng em quyết định chọn dé tài này, xây dựng ứng dụng nghe nhạc trên Mobile tích hợp gợi ý và chia sẻ nhạc. Ứng dụng cung cấp những tiện ích giúp người dùng dễ dàng tiếp cận với những bài nhạc mới cũng như gợi ý những bài nhạc hay dựa trên những thông tin của người dùng. Bên cạnh đó, ứng dụng còn có mạng xã hội để mọi người chia sẻ những bai nhạc của mình với moi người.
Mục đích nghiên cứu Chúng em mong muôn đáp ứng nhu câu nghe nhạc và chia sẻ nhạc của mọi người Chúng em đã luôn tò mò và hứng thú đối với các công nghệ liên quan tới Mobile đặc biệt là Flutter, cũng như sự hệ thống gợi ý Chúng em mong muốn được áp dụng những kiến thức và kĩ năng đã học vào dự án 1. Đối tượng nghiên cứu 1. Các công nghệ nghiên cứu Đối với thiết kế hệ thống: - MVC - Kết nối va trao đổi giữa ứng dụng va database thông qua RESTful API Đối với database: MongoDB Đối với ứng dụng: Flutter và Dart Đối với Recommender System: Content-Based System, Collaborative Filtering Khác: - Luu trữ ảnh thông qua Cloudinary - _ Trao đổi mail thông qua Spring Mail - _ Lưu trữ các đường dan thông qua Firebase Dynamic Linking - _ Nguồn nhạc thông qua ZingMP3 1. Đối tượng để tài Những người có sở thích nghe nhạc cũng như những người muốn chia sẻ đam mê nghe nhac tới moi người.
Phạm vỉ nghiên cứu 1. Phạm vỉ môi trường Ứng dụng di động trên Android 1. Phạm vỉ chức năng - _ Cung cấp các bài nhạc, playlist, nghệ sĩ dựa trên ZingMP3 - Phat nhạc và kèm lyric nếu có - Lut danh sách các bài hát, album, nghệ sĩ yêu thích - Chon nhạc random va repeat danh sách nhac dang chơi - Cac playlist, thông tin nghệ sĩ được quản lí tiện lợi kèm theo một số chức năng như xem thông tin bài hát cũng như chuyên đổi qua lại giữa các bài hát trong playlist hoặc của nghệ sĩ - _ Chức năng hen giờ tắt nhạc - Goi ý các bài nhạc dựa trên lịch sử nghe nhạc của người dùng - _ Xem thông tin các bài hát của mọi người trên mạng xã hội - _ Đăng bài và kiểm tra bài quyền của bài nhạc đã đăng - Binh luận và yêu thích bai đăng - Chia sẻ bai nhạc của bài đăng Chương 2. Kiến thức nền tảng 2.
Tìm hiểu về Flutter Flutter Hinh 2.1 Flutter Flutter là một công cụ phát triển giao điện người dùng mã nguồn mở được sử dung dé tao ra các ứng dụng di động cho Android và iOS. Được phát triển bởi Google, Flutter sử dụng ngôn ngữ Dart đề xây dựng các ứng dụng đẹp và hiệu quả. Flutter sử dụng một cấu trúc UI được gọi là "widget tree", cho phép bạn xây dựng giao diện người dùng bằng cách sắp xếp các widget khác nhau. Widget là một khối xây dựng giao diện được sử dụng dé tạo ra các thành phần khác nhau của ứng dụng như nút, trường văn bản, hình ảnh, danh sách, menu, v.
Với tính năng "Hot Reload" cho phép bạnxem kết quả ngay tức thì khi thay đổi code, hỗ trợ cho nhiều thiết bị và nhiều kích thước màn hình, cũng như khả năng xây dựng ứng dụng chạy trên nền tảng web và máytính để bàn. Flutter được đánh giá là một công cụ hữu ích cho các nhà phát triển di động vìtính linh hoạt và hiệu suất của nó.2 Spring Framework Spring Framework là một trong những framework phát triển ứng dụng Java phô biến nhất hiện nay. Xây dựng trên các nguyên tắc của Dependency Injection (DI) và Inversion of Control (IoC), giúp giảm thiểu sự phức tạp của việc quản lý các đối tượng trong ứng dụng. 10 Ngoài ra, Spring Framework cũng cung cấp nhiều tính năng như: e Spring Data: cung cấp một cách dễ dàng dé tương tác với các cơ sở dữ liệu khác nhau, bao gồm cả RDBMS và NoSQL.
e Spring Security: cung cap cac tinh nang bao mat cho tng dung, bao gồm xác thực và phân quyền. e Spring MVC: cung cấp một kiến trúc MVC dé phát triển các ứng dụng web. e Spring Boot: cung cấp một cách nhanh chóng dé tạo ra các ứng dụng độc lập và tự động cấu hình. Spring Framework cũng được tích hợp với các công nghệ khác như Hibernate, JPA, Thymeleaf, và nhiều thư viện khác dé giúp giải quyết các van dé phát triển ứng dụng Java.
Với các tính năng và lợi ích của nó, Spring Framework đã trở thành một trong những công nghệ phổ biến nhất trong lĩnh vực phát triển ứng dung Java.3 FastAPI FastAPI là một framework web phát triển ứng dụng API nhanh và hiệu quả bằng Python. Nó được thiết kế với mục đích cung cấp hiệu suất cao, tính năng tải liệu hóa tự động, và hỗ trợ đầy đủ cho các tính năng của Python, bao gồm cả async/await. FastAPI được xây dựng trên nền tảng Starlette, một framework web ASGI (Asynchronous Server Gateway Interface) được phát triển bởi Encode. Với sự kết hợp của Starlette và 11 Python, FastAPI cho phép phát triển ứng dụng API nhanh chóng và dễ dàng, với các tính năng như: e Tu động tạo tài liệu API với OpenAPI và JSON Schema.
e©_ Sử dụng type hints (chú thích kiểu dit liệu) dé tao ra các API endpoint và kiểm tra đầu vào dữ liệu tự động. e Hỗ trợ các tính năng ASGI và asyncio dé tối ưu hóa hiệu suất và xử lý các yêu cầu đồng thời. © Cung cấp các công cụ dé xử lý lỗi, xác thực người dùng và phân quyền truy cập. FastAPI cũng được đánh giá là một trong những framework web phát trién API nhanh nhất hiện nay, với khả năng xử lý hàng ngàn yêu cầu mỗi giây trên một máy chủ đơn giản.4 MongoDB MongoDB là một hệ thống cơ sở dữ liệu phi quan hệ (NoSQL) được phát triển bởi MongoDB Inc.
MongoDB lưu trữ dữ liệu dưới dạng tài liệu JSON linh hoạt và có khả năng mở rộng tốt, cho phép lưu trữ dữ liệu lớn và xử lý các yêu cầu truy vấn phức tạp. 12 MongoDB là một hệ thống cơ sở đữ liệu tài liệu mã nguồn mở và có sẵn miễn phí. Nó được thiết kế dé tương thích với các ứng dung web hiện đại và các ứng dụng đám mây. MongoDB cung câp các tính năng như: e Khả năng lưu trữ dữ liệu dưới dang tài liệu JSON linh hoạt, cho phép dé dàng thêm, sửa, xóa các trường và đối tượng trong cơ sở dữ liệu.
e_ Khả năng mở rộng tốt, có thé scale-out cơ sở dữ liệu bằng cách thêm các node vào hệ thống. e Hỗ trợ các tính năng như indexing, aggregation, và map-reduce dé xử lý các yêu cầu truy vấn phức tạp. e Cung cấp các tính năng bảo mật như xác thực và phân quyền truy cập dé bảo vệ dữ liệu. MongoDB cũng được tích hợp với các công nghệ khác như Node.js, Python, Java, và nhiều thư viện khác để giúp giải quyết các vấn đề phát triển ứng dụng.
Với các tính năng và lợi ích của nó, MongoDB đã trở thành một trong những công nghệ cơ sở đữ liệu phi quan hệ phô biến nhất trong lĩnh vực phát triển ứng dụng web và đám mây. 13 Vo Dynamic Links Hinh 2.5 Firebase Dynamic Link Dynamic Link là một tinh năng của Google Firebase, cho phép tạo ra các liên kết động dé chia sẻ nội dung và thông tin giữa các ứng dụng va trang web. Với Dynamic Link, người dùng có thé truy cập nội dung của ứng dụng hoặc trang web một cách dé dang và nhanh chóng. Khi tạo một Dynamic Link, người dùng có thể tùy chỉnh liên kết để phù hợp với mục đích sử dụng của mình, bao gồm cả tùy chỉnh URL, tùy chỉnh nội dung và tùy chỉnh tham số.
Điều này giúp tăng tính linh hoạt và tăng khả năng tương tác của ứng dụng hoặc trang web. Dynamic Link cũng cung cấp các tính năng như theo dõi, phân tích và kiểm soát truy cập, cho phép người dùng theo dõi và phân tích các hoạt động của người dùng khi truy cập vào liên kết. Điều này giúp tối ưu hóa chiến lược tiếp thị và cải thiện hiệu quả của ứng dụng hoặc trang web. 14 Dynamic Link được tích hợp với nhiều ứng dụng và trang web khác nhau, cho phép tạo ra các liên kết động giữa chúng.
Với các tính năng và lợi ích của nó, Dynamic Link đã trở thành một công nghệ quan trọng trong lĩnh vực phát triển ứng dụng và tiếp thị sd. Giới thiệu Mang xã hội sẽ là nơi dé người dùng có thé đăng những ban thu âm về bài hát ( có thé là do chính họ sáng tác hoặc cover ) và nhận được những bình luận, tương tác của người dùng khác. Người dùng có thể chia sẻ bài hát mình yêu thích cho người khác. Bản quyền bài hát 2.
Hướng giải quyết Khi xây dựng mạng xã hội dé chia sẻ bài hát, một vấn dé cần được đặt ra đó là bản quyền bài hát. Nhóm đã làm một API endpoint dé kiểm tra bản quyền bài hat dựa vào thư viện TinyTag của Python. Mỗi bài hát sẽ được đánh dau bản quyền bằng một chuan tag là ID3. Thư viện TinyTag này có chức năng sẽ trích xuất thông tin ID3 của bài hát người dùng đăng tải.
Nếu ID3 tag xuất hiện trong file nhạc của người dùng thì bài hát đó sẽ vi phạm bản quyền. Lý Ngựa Ô Quang Linh 1993 15 Bảng 2.1 Danh sách các bài hát test bản quyền 2. Đánh giá độ chính xác Như bảng thống kê ở 3.1, những bài hát được phát hành những năm trở lại đây sẽ có xác suất kiểm tra được bản quyền cao hơn những bai hát đã được phát hành từ lâu.