Bao cao java , javafx file doc phần mềm nghe nhạc

31 246 0
Bao cao java , javafx file doc phần mềm nghe nhạc

Đ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

Các chức năng + Phát, dừng và skip bài hát. + Quản lí bài hát dựa vào album, artist, songs. + Quản lí danh sách phát nhạc + Phát nhạc theo tuần tự playlist, lặp bài, suffle playlist nhạc. + Drag bài hát vào phần mềm. + Search theo bài hát, artists, album. + Dựng playlist đã nghe gần đây, playlist được nghe nhiều nhất. + Tự động tải hình ảnh album dựa vào tên album có sẵn

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN NGƠN NGỮ LẬP TRÌNH JAVA ĐỀ TÀI MEDIA PLAYER TP Hồ Chí Minh, 13 tháng 06 năm 2018 Giảng viên hướng dẫn: ThS Lê Thanh Trọng Sinh viên : Lê Đức Tiến – 15520881 Sinh viên 15520851 : Dương Phước Hải Thọ - Sinh viên 15520787 : Đỗ Thành Thắng - NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN … , ngày tháng năm 2018 Người nhận xét (Ký tên) LỜI CẢM ƠN Để có thành cơng mơn học hồn thành tốt đồ án cuôi kỳ - ứng dụng “Music Player” chúng em nhận nhiều giúp đỡ q thầy bạn bè Tỏ lòng biết ơn sâu sắc, chúng em xin chân thành cảm ơn giảng viên khoa Công nghệ phần mềm – Đại học Công Nghệ Thông Tin với tri thức tâm huyết truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trường Trong học kỳ này, chúng em tiếp cận với môn học “Công nghệ phần mềm chuyên sâu” – mơn học hữu ích sinh viên khoa Công nghệ phần mềm Và đặc biệt, trình thực đồ án mơn học giúp chúng em nâng cao kiến thức, trải nghiệm thực tế việc xây dựng website đơn giản phần giúp đỡ nhiều người sử dụng sản phẩm nhóm Chúng em xin chân thành cảm ơn thầy Lê Thanh Trọng tận tâm hướng dẫn chúng em qua buổi học lớp Nếu lời hướng dẫn, bảo thầy chúng em nghĩ q trình hồn thiện báo cáo chúng em gặp nhiều vấn đề khó khăn Do kiến thức khả chúng em nhiều hạn chế, khơng tránh khỏi thiếu sót, yếu Chúng em mong nhận ý kiến đóng góp quý báu thầy để kiến thức chúng em hoàn thiện Sau cùng, chúng em xin kính chúc quý thầy cô khoa Công nghệ phần mềm thầy Lê Thanh Trọng thật dồi sức khỏe, niềm tin để tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức cho hệ mai sau Trân trọng MỤC LỤC MỤC LỤC i 1.1 Trình chạy nhạc Media Player ii 1.2 Các chức .ii PHÂN TÍCH VÀ THIẾT KẾ .iii 2.1 Phân tích chức iii 2.1.1 Initialize MusicPlayer iii 2.1.2 Artists iii 2.1.3 Album vii 2.1.4 Songs .viii 2.1.5 Tìm kiếm theo artist, album, tên hát x 2.1.6 Pause, Skip, Previous Songs xi 2.1.7 Playlist, Recently Played Playlist, Most Played Playlist xiii 2.1.8 Loop, shuffle, volume hát .xv 2.2 Thiết kế phần mềm xvi 2.2.1 Artists .xvi 2.2.2 Album .xviii 2.2.3 Songs xx 2.2.4 Tìm kiếm theo artist, album, tên hát xxi 2.2.5 Pause, Skip, Previous Songs xxii 2.2.6 Playlist, Recently Played Playlist, Most Played Playlist xxiii 2.2.7 Loop, shuffle, volume hát xxv 4.CÀI ĐẶT .xxvi 4.1 Nền tảng công nghệ xxvi KẾT LUẬN xxvi 5.1 Kết đạt .xxvi 5.2 Hạn chế .xxvi 5.3 Hướng phát triển .xxvi PHÂN CÔNG CÔNG VIỆC xxvii TÀI LIỆU THAM KHẢO .xxvii 1 GIỚI THIỆU 1.1 Trình chạy nhạc Media Player Trong thời đại ngày nay, âm nhạc thứ gần thiếu người, chí động vật Các ca sĩ, nhạc sĩ … ngày có nhiều hội dễ trình diễn sản phẩm họ Việc quản lí nhiều hát, nhiều ca khúc, album ca sĩ, nhạc sĩ trở nên cần thiết Người dùng quản lí cách thỏa mái dễ dàng tồn hát, album hay ca sĩ mà yêu thích Bật phát nhạc desktop offline tận hưởng sống Từ chúng tơi định cho phần mềm quản lí media player, quản lí theo album, hát, ca sĩ playlist Giúp người dùng dễ dàng thao tác, giao diện dễ sử dụng hiệu ứng sống động âm chất lượng 1.2 Các chức         Phát, dừng skip hát Quản lí hát dựa vào album, artist, songs Quản lí danh sách phát nhạc Phát nhạc theo playlist, lặp bài, suffle playlist nhạc Drag hát vào phần mềm Search theo hát, artists, album Dựng playlist nghe gần đây, playlist nghe nhiều Tự động tải hình ảnh album dựa vào tên album có sẵn 2 PHÂN TÍCH VÀ THIẾT KẾ 2.1 Phân tích chức 2.1.1 Initialize MusicPlayer Bước 1: Kiểm tra file XML có tồn tại, khơng thì khởi tạo dựa vào đường dẫn người dùng đưa vào Và xuất hát quản lí theo album, artist, songs, playlist Bước 2: checkLibraryXML()  Tìm đường dẫn đến file library.xml  Kiểm tra giá trị file folder thực library.xml có giống khơng để cập nhật  Cập nhật library(sử dụng util.XMLEditor)  Nếu đường dẫn file âm nhạc, yêu cầu người dùng import đường dẫn khác Bước 3: Nhập danh sách hát -> album -> artist, playlist vào class Library để quản lí Bước 4: Khởi tạo danh sách chơi để cập nhật hát Bước 5: Kiểm tra hát có tồn hình ảnh ca sĩ, album Nếu không, tự động download image từ cloud xuống Bước 6: Sau đưa liệu vào library class Khởi tạo giao diện fxml Main Controller để quản lí event 2.1.2 Artists 2.1.2.1 selectView(Event e) Khi người dùng click vào HBox Artists kiện selectView(Event e) gọi Hàm HBox eventSource = ((HBox)e.getSource()); Sẽ bắt kiện click vào HBox Artists tiến hành thêm CSS cho lớp Control trước Hàm loadView(eventSource.getId()); load SubView tương ứng với HBox Artists, tạo file Aritists.fxml tương ứng 2.1.2.2 VBox createCell(Artist artist) Tạo artist-cell dựa vào thông tin Title, Artist Image, artistImageProperty đối tượng artist Tạo VBox dựa vào thông tin hiển thị TableView 2.1.2.3 class Artist implements Comparable class Aritist gồm thuộc tính như: private String title; private ArrayList albums; private Image artistImage; private SimpleObjectProperty artistImageProperty; Tạo constructor cho class Aritist public Artist(String title, ArrayList albums) { this.title = title; this.albums = albums; this.artistImageProperty = new SimpleObjectProperty(getArtistImage()); } Trong aritistImageProperty gán giá trị getArtistImage(); public Image getArtistImage() { if (artistImage == null) { try { File file = new File(Resources.JAR + "/img/" + this.title + ".jpg"); artistImage = new Image(file.toURI().toURL().toString()); if (artistImage.isError()) { file.delete(); artistImage = new Image(Resources.IMG + "artistsIcon.png"); } } catch (Exception ex) { File file = new File(Resources.JAR + "/img/" + this.title + ".jpg"); file.delete(); artistImage = new Image(Resources.IMG + "artistsIcon.png"); } } return artistImage; } 2.1.2.4 Dùng API để download Artist Image public void downloadArtistImage() Nếu thư mục imgFolder khơng tồn chương trình tạo Thread gọi đến hàm downloadArtistImage để dowload AristImage Thread thread1 = new Thread(() -> { Library.getArtists().forEach(Artist::downloadArtistImage); }); 2.1.2.5 void showAllSongs(Artist artist, boolean fromMainController) Duyệt qua tất album artist, thêm tất hát album vào danh sách hát Thực xếp danh sách hát theo thứ tự alphabet Hiển thị danh sách hát vào khung tableView hát 2.1.2.6 public void play() Kiểm tra Album chọn đưa tất hát vào danh sách phát Ngược lại chưa có lựa chọn Album lấy tất hát tất album Artist Play nhạc thuộc tính MusicPlayer.isShuffleActive()==true nhạc play ngẫu nhiên, ngược lại play theo thứ tự alphabet 2.1.2.7 Animation Scroll danh sách Artist: Animation scrollAnimation = new Transition() { { setCycleDuration(Duration.millis(500)); } protected void interpolate(double frac) { double vValue = startVvalue + ((finalVvalue - startVvalue) * frac); artistListScrollPane.setVvalue(vValue); } }; Animation Load danh sách Artist private Animation albumLoadAnimation = new Transition() { { setCycleDuration(Duration.millis(250)); setInterpolator(Interpolator.EASE_BOTH); } protected void interpolate(double frac) { double curHeight = collapsedHeight + (expandedHeight collapsedHeight) * (frac); songTable.setTranslateY(expandedHeight - curHeight); songTable.setOpacity(frac); } }; Animation Unload danh sách Artist private Animation albumUnloadAnimation = new Transition() { { setCycleDuration(Duration.millis(250)); setInterpolator(Interpolator.EASE_BOTH); } protected void interpolate(double frac) { double curHeight = collapsedHeight + (expandedHeight collapsedHeight) * (1 - frac); songTable.setTranslateY(expandedHeight - curHeight); songTable.setOpacity(1 - frac); songTable.setMinHeight(1 - frac); songTable.setPrefHeight(1 - frac); } }; 2.1.3 Album 2.1.3.1 selectView(Event e) Khi người dùng click vào HBox Album kiện selectView(Event e) gọi Hàm HBox eventSource = ((HBox)e.getSource()); Sẽ bắt kiện click tiến hành thêm CSS cho lớp Control trước Hàm loadView(eventSource.getId()); load SubView tương ứng với HBox Albums, tạo file Albums.fxml tương ứng 2.1.3.2 VBox createCell(Album album, int index) Tạo ô album dựa vào thông tin Title, artwork đối tượng album Hiện thị thông tin trên TableView 2.1.3.3 Class Album package Model - Implement interface Comparable - Gồm thuộc tính private int id; private String title; } 2.1.7 Playlist, Recently Played Playlist, Most Played Playlist 2.1.7.1 Tạo Playlist Sự kiện click New Playlist private void newPlaylist()      Khởi tạo tạo Hbox Playlist có kiện kèm: Kéo hát album vào playlist Click vào album để truy cập vào Playlist layout Press Enter để truy cập Playlist layout Hiệu ứng hover vào HBox 2.1.7.1 Playing Playlist Danh sách hát lấy từ MusicPlayer.getNowPlayingList() hiển thị theo kiểu liệu Song public class NowPlayingController implements Initializable, SubView { @FXML private TableView tableView; @FXML private TableColumn playingColumn; @FXML private TableColumn titleColumn; @FXML private TableColumn artistColumn; @FXML private TableColumn albumColumn; @FXML private TableColumn lengthColumn; @FXML private TableColumn playsColumn; private Song selectedSong;  Khởi tạo tạo Hbox Playlist có kiện kèm:  Kéo hát album vào playlist 14  Click vào album để truy cập vào Playlist layout  Press Enter để truy cập Playlist layout  Hiệu ứng hover vào HBox 2.1.7.3 Recently Played, Most Played Playlist & another Playlist Hàm khởi tạo toàn playlist đổ liệu vào controller playlist private void initializePlaylists()      Khởi tạo tạo Hbox Playlist có kiện kèm: Kéo hát album vào playlist Click vào album để truy cập vào Playlist layout Press Enter để truy cập Playlist layout Hiệu ứng hover vào HBox 2.1.8 Loop, shuffle, volume hát 2.1.8.1 Lặp //Sự kiện click nút loop thêm css màu chuyển cờ loop MusicPlayer PseudoClass active = PseudoClass.getPseudoClass("active"); loopButton.setOnMouseClicked(x -> { sideBar.requestFocus(); MusicPlayer.toggleLoop(); loopButton.pseudoClassStateChanged(active, MusicPlayer.isLoopActive()); }); 2.1.8.2 Xáo trộn //Sự kiện click nút shuffle thêm css màu chuyển cờ shuffle MusicPlayer shuffleButton.setOnMouseClicked(x -> { sideBar.requestFocus(); MusicPlayer.toggleShuffle(); shuffleButton.pseudoClassStateChanged(active, 15 MusicPlayer.isShuffleActive()); }); 2.1.8.3 Volume Tạo VolumePopup private void createVolumePopup() Animation mở volumePopup popup.focusedProperty().addListener((x, wasFocused, isFocused) -> { if (wasFocused && !isFocused) { volumeHideAnimation.play(); } }); Xử lí hiệu ứng kết thúc volumeHideAnimation.setOnFinished(x -> popup.hide()); popup.show(); popup.hide(); volumePopup = popup; 2.2 Thiết kế phần mềm 16 2.2.1 Artists 2.1.1.1 Giao diện Artists 2.1.1.2 Giao diện Artist Main 17 STT Tên biến HboxArtist Kiểu biến customize từ Mô tả Load viewLoad Artist Pane lable subViewRo BroderPane Chứa listView để chức ot artistList albumList ListView ListView ArtistCell Hiện danh sách Artist Hiện danh sách Album tương TableView ứng với Artist Hiện danh sách hát songTable 2.2.2 Album STT Tên biến Loại controller Chức Khi người dung bấm vào HBox Album, Chọn xem theo album HBox layout bên phải hiển thị danh sách album albumImageView ImageView Khi người dung bấm 18 hình album, bên hiển thị chi tiết hát album, người dung bấm lần tắt thị chi tiết album STT Tên album Tên biến X Label Loại controller Album Controller Hiển thị tên album Chức Hiển thị Artwork Tên ca sĩ Tên album Label tên album Hiển thị tên Label ca sĩ Hiển thị tên album 19 titleColumn ControlPanelTableCell Tên hát lengthColumn ClippedTableCell Độ dài playsColumn ClippedTableCell hát Số lần chơi 10 playingColumn PlayingTableCell Cờ phát 20 2.2.3 Songs STT Tên biến letterBox Loại controller Hbox + Label Chức Hiển thị search theo playingColumn PlayingTableCell ký tự Cờ titleColumn ControlPanelTableCell phát Tên hát artistColumn ClippedTableCell Tên ca sỹ albumColumn ClippedTableCell Tên album lengthColumn ClippedTableCell Độ dài playsColumn ClippedTableCell hát Số lần chơi 21 2.2.4 Tìm kiếm theo artist, album, tên hát Sau nhập vào ô tìm kiếm 22 STT Tên biến searchBox Kiểu biến TextField Mơ Tả Khung tìm kiếm cho kết tìm kiếm theo thứ tự Artist, Khung chứa danh HBox sách tìm kiếm Tiêu đề mục tìm kiếm Tiêu đề kết tìm kiếm Artwork kết Album, Song Là bảng chứa kết tìm kiếm theo mục Label Hiện mục tìm kiếm (Artist, Label Album, Song) Tiêu đề kết tìm kiếm ImageView ứng với mục ArtWork kết tìm tìm kiếm kiếm, khơng có sử dụng hình mặc định 2.2.5 Pause, Skip, Previous Songs 2.2.5.1 Thiết kế giao diện Pause, Skip, Previous Songs STT Tên biến backButton Kiểu biến Pane chứa Mô Tả Quay lại hát trước playButton SVGPath Pane chứa playlist Tạm dừng/ tiếp tục skipButton SVGPath Pane chứa Play hát SVGPath playlist 23 2.2.6 Playlist, Recently Played Playlist, Most Played Playlist 2.2.6.1 Thiết kế giao diện tổng quan Playing STT Tên biến playingColumn Loại controller PlayingTableCell Chức Cờ titleColumn ControlPanelTableCell phát Tên hát artistColumn ClippedTableCell Tên ca sỹ albumColumn ClippedTableCell Tên album lengthColumn ClippedTableCell Độ dài ClippedTableCell hát Số lần chơi playsColumn 24 2.2.6.2 Thiết kế giao diện Playlist, Recently Played Playlist Most Played Playlist STT Tên biến playlistTitleLabel playButton deleteButton playingColumn Loại controller Label Chức Hiển thị tên Pane Pane PlayingTableCell album Phát playlist Xóa playlist Cờ titleColumn ControlPanelTableCell phát Tên hát artistColumn ClippedTableCell Tên ca sỹ albumColumn ClippedTableCell Tên album lengthColumn ClippedTableCell Độ dài hát playsColumn ClippedTableCell Số lần chơi 25 2.2.7 Loop, shuffle, volume hát 2.2.7.1 Thiết kế giao diện Loop, shuffle, volume hát STT Tên biến loopButton Kiểu biến Pane chứa Mô Tả Bật/tắt chức lặp lại shuffleButton SVGPath Pane chứa playlist Bật/tắt chức play ngẫu volumeButton SVGPath Pane chứa nhiên Tăng/giảm volume SVGPath 26 4.CÀI ĐẶT 4.1 Nền tảng công nghệ Phần mềm sử dụng: Eclipse, IntelliJ IDEA, Git Ngôn ngữ: Java Các thư viện sử dụng: thư viện JaudioTagger để quản lí data nhạc Jintellitype để đăng ký key media hệ thống KẾT LUẬN 5.1 Kết đạt + Hoàn thành tốt tất yêu cầu phần mềm nghe nhạc + Giao diện thân thiện người dung, nhiều thao tác tiện lợi + Phân chia công việc thành viên rõ ràng đạt hiệu tốt 5.2 Hạn chế + Chưa có chức đổi thư mục chứa nhạc + Giao diện chưa thật ấn tượng 5.3 Hướng phát triển + Chức nghe nhạc online, download nhạc + Chức thay đổi metadata hát chương trình + Thêm Equalizer giả lập khơng gian + Cải thiện giao diện đẹp đại 27 PHÂN CÔNG CÔNG VIỆC Tiến Thọ Thắng X X X X X X Thiết kế giao diện Các chức hình Chèn liệu nhạc xử lí X XML file Chức liên X quan đến Artist Chức liên quan đến Album Chức liên quan đến Song Quản lý Playlist Chức tìm X X X X kiếm Thanh quản lý hát X nghe Chức suffle, loop, thay đổi âm lượng Kiểm tra lỗi Viết báo cáo X X X X X X X TÀI LIỆU THAM KHẢO [1] Tài liệu học javafx https://o7planning.org/vi/10623/huong-dan-lap-trinh-javafx-cho-nguoimoi-bat-dau [2] Stackoverflow 28

Ngày đăng: 29/10/2018, 16:08

Từ khóa liên quan

Mục lục

  • MỤC LỤC

    • 1.1 Trình chạy nhạc Media Player

    • 1.2 Các chức năng

    • 2. PHÂN TÍCH VÀ THIẾT KẾ

      • 2.1 Phân tích chức năng

        • 2.1.1 Initialize MusicPlayer

        • 2.1.2 Artists

          • 2.1.2.1 selectView(Event e)

          • 2.1.2.2 VBox createCell(Artist artist)

          • 2.1.2.3 class Artist implements Comparable<Artist>

          • 2.1.2.4 Dùng API để download Artist Image

          • 2.1.2.5 void showAllSongs(Artist artist, boolean fromMainController)

          • 2.1.2.7 Animation

          • 2.1.3 Album

            • 2.1.3.1 selectView(Event e)

            • 2.1.3.2 VBox createCell(Album album, int index)

            • 2.1.3.3 Class Album trong package Model

            • 2.1.3.4 void downloadArtwork()

            • Tải artwork cho album từ internet theo tên ca sĩ và tên album sử dụng API audioscrobler.

            • 2.1.3.5 Animation void populateSongTable(VBox cell, Album selectedAlbum)

            • 2.1.4 Songs

              • 2.1.4.1 Song data

              • 2.1.4.1 SongsController

              • 2.2.4.3 Chơi bài hát được chọn

              • 2.1.4.4 Animation Scroll click leter

              • 2.1.5 Tìm kiếm theo artist, album, tên bài hát

                • 2.1.5.1 search( String searchText)

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

Tài liệu liên quan