当前位置:文档之家› 音乐播放器基本设计(附源码)

音乐播放器基本设计(附源码)

音乐播放器基本设计(附源码)
音乐播放器基本设计(附源码)

音乐播放器(附源码)

只要将源码中所有的类都复制到自己定义的项目里就对的,

数据库设计:

歌曲类型表:类型编号、类型名称

歌曲信息表:歌曲编号、歌曲名、歌手、作曲、文件位置、类型编号播放器界面:

(一)主界面

(二)添加歌曲界面

(三)添加歌曲类型

(四)查找

功能描述:

1.播放:双击播放列表中的歌曲进行播放,播放时会将该歌曲的信息显示的右边的歌曲信

息面板中,同时会匹配歌词,把相应的歌词显示在右边的歌词面板中。

2.停止:在歌曲列表下方有一个小按钮,当歌曲正在播放时,显示的是可停止的按钮,点

击则停止当前播放的歌曲。

3.添加歌曲类:在播放列表中单击右键,选择添加歌曲类型则弹出一个添加歌曲类型的会

话框,在会话框中填上正确的信息(歌曲类型编号不能重复)后提交,则弹出“添加成功”的消息提示,否则弹出“添加失败”的相关信息。

4.添加歌曲:选中歌曲类型后,单击右键选择添加歌曲或者点击左下角的添加按钮则弹

出一个添加歌曲信息的会话框,填入歌曲信息(歌名不能重复)后点击提交则进行添加,添加成功则更新了歌曲列表,否则弹出相应的提示框,如:

5.删除歌曲:选中歌曲后,单击右键选择删除歌曲或者点击左下角的删除则弹出确认框:

,选择“是”则删除,否则无操作。

6.删除歌曲类型:选中要删除的歌曲类型,单击右键删除歌曲类型,则弹出确认框,选中

“是”则删除,否则无操作。

7.查找:点击左下角的查找,会弹出一个输入框,输入歌名的一部分(包含歌名)进行查

找,查找到的歌曲会显示在输入框上方,点击查找到的歌曲进行播放

注:添加歌曲类型时,类型编号和名称都不能为空,

添加歌曲时,歌曲名不能为空,歌曲地址不能为空(否则播放时会是无效路径),若为空,会弹出相应的提示信息

类的描述:

具体的每个类中的方法的作用见源代码中的注释

1.主界面:PlayerFrame.java

package cn.xtu.catqq.view.player;

/**

* 音乐播放器V1.0主界面

*

*/

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Insets;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

import java.util.Vector;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JPopupMenu;

import javax.swing.JScrollPane;

import javax.swing.JSlider;

import javax.swing.JSplitPane;

import javax.swing.JTextField;

import javax.swing.JTree;

import javax.swing.SwingConstants;

import javax.swing.border.LineBorder;

import javax.swing.border.TitledBorder;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.DefaultTreeModel;

import cn.xtu.catqq.control.playerlistener.PlayerActionListener; import cn.xtu.catqq.control.playerlistener.PlayerDocumentListener; import cn.xtu.catqq.control.playerlistener.PlayerMouseListener; import cn.xtu.catqq.model.player.SongInfoDao;

import cn.xtu.catqq.model.player.impl.SongInfoDaoImpl;

import cn.xtu.catqq.util.FontUtil;

import cn.xtu.catqq.util.InitialFrameStyle;

import cn.xtu.catqq.util.MyTreeUI;

public class PlayerFrame extends JFrame {

/*

* songInfoPanel:歌曲信息面板(右边)

* playerPanel:播放进度条面板

* sliderPanel:播放的进度条

* songWordsPanel:歌词面板

* queryPanel:查询面板

*/

private JPanel leftPanel, rightPanel, songInfoPanel, sliderPanel, songWordsPanel, queryPanel;

/*

* songLrc:用来存放歌词

*/

private Vector songLrc = new Vector();

/*

* 定义几个图片

*/

private Icon playIcon = new ImageIcon("img\\播放.png");

private Icon stopIcon = new ImageIcon("img\\停止.png");

private JSlider slider;

private JLabel songWordsLabel1, songWordsLabel2, songWordsLabel3, songWordsLabel4, songWordsLabel5;

/*

* btnAddSong:添加歌曲按钮btnDelSong:删除歌曲按钮querySongInfo:根据歌曲名查询歌曲信息按钮

*/

private JButton btnAddSong, btnDelSong, btnQuerySong, btnPlay;

private List btnList = new ArrayList();

private PlayerMouseListener pmLis;

private Thread mouseThread;

/*

* treeModel:用来构建JTree

*/

private DefaultTreeModel treeModel;

private JTree tree;

private JScrollPane scrollPanel, queryScrollPanel;

/*

* txtQuery:用来输入歌曲名的文本框txtSongName:用来显示歌曲名的文本框txtSonger:用来显示歌手的文本框

* txtMS:用来显示作曲者txtSongType:显示歌曲类型txtSongLoc:显示歌曲地址

*/

private JTextField txtQuery, txtSongName, txtSonger, txtMS, txtSongType,

txtSongLoc;

private JPopupMenu popMenu, findPopMenu;

private JMenuItem miAddSong, miAddSongType, miDelSong, miDelSongType;

private Insets insets = new Insets(0, 0, 0, 0);

public PlayerFrame() {

this.setTitle("音乐播放器V1.0");

InitialFrameStyle.setFrameStyle(this, 800, 600);

initialComponent();

createPopedMunu();

createFindPopMenu();

registerListener();

this.validate();

}

// 初始化面板组件

private void initialComponent() {

JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

splitPane.setDividerLocation(200);

splitPane.setDividerSize(2);

leftPanel = new JPanel(null);

JPanel northPanel = new JPanel(null);

JLabel lab = new JLabel(new ImageIcon("img\\播放器左上.png"));

InitialFrameStyle.putComponentByNull(northPanel, lab, 0, 0, 200, 100);

InitialFrameStyle.putComponentByNull(leftPanel, northPanel, 0, 0, 200, 100);

// 查询面板

queryScrollPanel = new JScrollPane();

queryScrollPanel.setVisible(false);

queryPanel = new JPanel();

queryScrollPanel.setViewportView(queryPanel);

InitialFrameStyle.putComponentByNull(leftPanel, queryScrollPanel, 0, 405, 200, 100);

// 初始化左边的滑动面板

scrollPanel = new JScrollPane();

initialScrollPane();

InitialFrameStyle.putComponentByNull(leftPanel, scrollPanel, 0, 100,

200, 410);

// 滑动条面板

sliderPanel = new JPanel(null);

sliderPanel.setBackground(new Color(1, 141, 255));

btnPlay = new JButton(playIcon);

btnPlay.setActionCommand("stop");

btnPlay.setMargin(insets);

InitialFrameStyle.putComponentByNull(sliderPanel, btnPlay, 3, 5, 15, 15);

slider = new JSlider(0, 100, 0);

slider.setBackground(new Color(1, 141, 255));

InitialFrameStyle.putComponentByNull(sliderPanel, slider, 20, 5, 180, 15);

InitialFrameStyle.putComponentByNull(leftPanel, sliderPanel, 0, 506, 200, 20);

// 左边下面的面板

JPanel southPanel = new JPanel(null);

southPanel.setBackground(new Color(1, 141, 255));

southPanel.setBounds(0, 527, 200, 45);

initLeftSouthPanel(southPanel);

leftPanel.add(southPanel);

splitPane.setLeftComponent(leftPanel);

rightPanel = new JPanel(null);

JLabel label = new JLabel("音乐信息");

label.setFont(FontUtil.setFont(60));

label.setForeground(Color.ORANGE);

InitialFrameStyle.putComponentByNull(rightPanel, label, 150, 50, 300,

50);

initialRightPanel();

JLabel backGround = new JLabel(new ImageIcon("img\\音乐播放器背景.jpg"));

backGround.setBounds(0, 0, 600, 600);

rightPanel.add(backGround);

splitPane.setRightComponent(rightPanel);

this.add(splitPane);

}

// 初始化右边的面板

private void initialRightPanel() {

// 歌曲信息面板

songInfoPanel = new JPanel();

songInfoPanel.setBorder(new TitledBorder(new LineBorder(Color.ORANGE), "歌曲信息"));

initialSongInfoPanel();

// 歌词面板

initialSongWordsPanel();

InitialFrameStyle.putComponentByNull(rightPanel, songInfoPanel, 30,

120, 520, 160);

InitialFrameStyle.putComponentByNull(rightPanel, songWordsPanel, 30,

300, 520, 220);

}

// 初始化歌曲信息面板

private void initialSongInfoPanel() {

songInfoPanel.setLayout(null);

songInfoPanel.setBackground(Color.WHITE);

JLabel lblSongName = new JLabel("歌曲名:");

JLabel lblSonger = new JLabel("歌手:");

JLabel lblMS = new JLabel("作曲:");

JLabel lblSongType = new JLabel("类型:");

JLabel lblSongLoc = new JLabel("位置:");

Font font = FontUtil.setFont(14);

lblSongName.setFont(font);

lblSonger.setFont(font);

lblMS.setFont(font);

lblSongType.setFont(font);

lblSongLoc.setFont(font);

txtSongName = new JTextField(15);

txtSongName.setBorder(new LineBorder(null, 0));

txtSongName.setBackground(new Color(255,255,255));

txtSongName.setEditable(false);

txtSonger = new JTextField(15);

txtSonger.setBorder(new LineBorder(null, 0));

txtSonger.setBackground(new Color(255,255,255));

txtSonger.setEditable(false);

txtMS = new JTextField(15);

txtMS.setBorder(new LineBorder(null, 0));

txtMS.setBackground(new Color(255,255,255));

txtMS.setEditable(false);

txtSongType = new JTextField(15);

txtSongType.setBorder(new LineBorder(null, 0));

txtSongType.setBackground(new Color(255,255,255));

txtSongType.setEditable(false);

txtSongLoc = new JTextField(15);

txtSongLoc.setBorder(new LineBorder(null, 0));

txtSongLoc.setBackground(new Color(255,255,255));

txtSongLoc.setEditable(false);

InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongName, 80,

40, 50, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, lblSonger, 300, 40, 50, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, lblMS, 80, 70, 50,

25);

InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongType, 300, 70, 50, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongLoc, 80,

100, 50, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongName, 135, 40, 150, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, txtSonger, 355, 40, 150, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, txtMS, 135, 70,

150, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongType, 355, 70, 150, 25);

InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongLoc, 135,

100, 370, 25);

}

// 初始化歌词面板

private void initialSongWordsPanel() {

songWordsPanel = new JPanel(new GridLayout(5, 1));

songWordsPanel.setBorder(new TitledBorder(new LineBorder(Color.ORANGE,

1), "歌词"));

songWordsLabel1 = new JLabel();

songWordsLabel1.setHorizontalAlignment(SwingConstants.CENTER);

songWordsLabel1.setFont(FontUtil.setFont(14));

songWordsLabel1.setForeground(new Color(38, 99, 224));

songWordsLabel2 = new JLabel();

songWordsLabel2.setHorizontalAlignment(SwingConstants.CENTER);

songWordsLabel2.setFont(FontUtil.setFont(18));

songWordsLabel2.setForeground(new Color(38, 99, 224));

songWordsLabel3 = new JLabel();

songWordsLabel3.setHorizontalAlignment(SwingConstants.CENTER);

songWordsLabel3.setFont(FontUtil.setFont(22));

songWordsLabel3.setForeground(Color.MAGENTA);

songWordsLabel4 = new JLabel();

songWordsLabel4.setHorizontalAlignment(SwingConstants.CENTER);

songWordsLabel4.setFont(FontUtil.setFont(18));

songWordsLabel4.setForeground(new Color(38, 99, 224));

songWordsLabel5 = new JLabel();

songWordsLabel5.setHorizontalAlignment(SwingConstants.CENTER);

songWordsLabel5.setFont(FontUtil.setFont(14));

songWordsLabel5.setForeground(new Color(38, 99, 224));

songWordsPanel.add(songWordsLabel1);

songWordsPanel.add(songWordsLabel2);

songWordsPanel.add(songWordsLabel3);

songWordsPanel.add(songWordsLabel4);

songWordsPanel.add(songWordsLabel5);

}

// 初始化左边滚动面板存放JTree

private void initialScrollPane() {

DefaultMutableTreeNode root = new DefaultMutableTreeNode("所有音乐");

treeModel = new DefaultTreeModel(root);

SongInfoDao infoDao = new SongInfoDaoImpl();

List songTypes = infoDao.findSongList();

for (int i = 0; i < songTypes.size(); i++) {

StringBuffer sb = new StringBuffer();

Object[] tempSongTypes = songTypes.get(i);

sb.append(tempSongTypes[0]);

sb.append(":");

sb.append(tempSongTypes[1]);

DefaultMutableTreeNode typeName = new DefaultMutableTreeNode(sb .toString());

treeModel.insertNodeInto(typeName, root, root.getChildCount());

BigDecimal tempTypeId = (BigDecimal) tempSongTypes[0];

int typeId = tempTypeId.intValue();

List songNames = infoDao.findSongName(typeId);

for (int j = 0; j < songNames.size(); j++) {

String songName = (String) songNames.get(j)[0];

DefaultMutableTreeNode music1 = new DefaultMutableTreeNode(

songName);

treeModel.insertNodeInto(music1, typeName, typeName

.getChildCount());

}

}

tree = new JTree(treeModel);

tree.setUI(new MyTreeUI());

//设置是否显示根节点的操作

tree.setShowsRootHandles(false);

tree.setRootVisible(false);

tree.setOpaque(true);

//设置单击次数

tree.setToggleClickCount(1);

//调用树的渲染器

InitialFrameStyle.InitialTree(tree, "img\\歌曲.png");

scrollPanel.setViewportView(tree);

}

private void createPopedMunu() {

popMenu = new JPopupMenu();

// 初始化菜单项

miAddSong = new JMenuItem("添加歌曲(A)");

miAddSongType = new JMenuItem("添加歌曲类型(B)");

miDelSong = new JMenuItem("删除歌曲(C)");

miDelSongType = new JMenuItem("删除歌曲类型(D)");

// 为每个菜单项设置别名

miAddSong.setActionCommand("addSongInfo");

miAddSongType.setActionCommand("addSongType");

miDelSong.setActionCommand("delSong");

miDelSongType.setActionCommand("delSongType");

// 设置右键属性的字体和字号

Font font = FontUtil.setFont(12);

miAddSong.setFont(font);

miAddSongType.setFont(font);

miDelSong.setFont(font);

miDelSongType.setFont(font);

// 为右键属性添加快捷键

miAddSong.setMnemonic('A');

miAddSongType.setMnemonic('B');

miDelSong.setMnemonic('C');

miDelSongType.setMnemonic('D');

// 将菜单项添加到弹出菜单中

popMenu.add(miAddSong);

popMenu.add(miAddSongType);

popMenu.add(miDelSong);

popMenu.add(miDelSongType);

}

// 初始化左边面板的南部(三个按钮)

private void initLeftSouthPanel(JPanel southPanel) {

btnAddSong = new JButton("添加", new ImageIcon("img\\添加.png"));

btnAddSong.setBackground(new Color(1, 141, 255));

btnAddSong.setBorder(new LineBorder(null, 0));

btnAddSong.setActionCommand("addSongInfo");

btnAddSong.setFont(FontUtil.setFont(12));

btnAddSong.setMargin(insets);

btnDelSong = new JButton("删除", new ImageIcon("img\\删除.png"));

btnDelSong.setBackground(new Color(1, 141, 255));

btnDelSong.setBorder(new LineBorder(null, 0));

btnDelSong.setActionCommand("delSong");

btnDelSong.setMargin(insets);

btnDelSong.setFont(FontUtil.setFont(12));

btnQuerySong = new JButton("查找", new ImageIcon("img\\查找.png"));

btnQuerySong.setBackground(new Color(1, 141, 255));

btnQuerySong.setBorder(new LineBorder(null, 0));

btnQuerySong.setActionCommand("querySong");

btnQuerySong.setMargin(insets);

btnQuerySong.setFont(FontUtil.setFont(12));

InitialFrameStyle.putComponentByNull(southPanel, btnAddSong, 5, 8, 60,

25);

InitialFrameStyle.putComponentByNull(southPanel, btnDelSong, 70, 8, 60,

25);

InitialFrameStyle.putComponentByNull(southPanel, btnQuerySong, 135, 8, 60, 25);

}

// 构建查找的弹出菜单

private void createFindPopMenu() {

findPopMenu = new JPopupMenu();

findPopMenu.setLayout(new BorderLayout());

txtQuery = new JTextField(17);

findPopMenu.add(txtQuery);

}

// 注册监听器

private void registerListener() {

pmLis = new PlayerMouseListener(this);

mouseThread = new Thread(pmLis, "鼠标");

mouseThread.start();

tree.addMouseListener(pmLis);

PlayerActionListener paLis = new PlayerActionListener(this);

btnAddSong.addActionListener(paLis);

btnDelSong.addActionListener(paLis);

btnQuerySong.addActionListener(paLis);

miAddSong.addActionListener(paLis);

miAddSongType.addActionListener(paLis);

miDelSong.addActionListener(paLis);

miDelSongType.addActionListener(paLis);

btnPlay.addActionListener(paLis);

PlayerDocumentListener docLis = new PlayerDocumentListener(this);

txtQuery.getDocument().addDocumentListener(docLis);

}

public JTextField getTxtQuery() {

return txtQuery;

}

public JPopupMenu getFindPopMenu() {

return findPopMenu;

}

public DefaultTreeModel getTreeModel() {

return treeModel;

}

public JTree getTree() {

return tree;

}

public JButton getBtnAddSong() {

return btnAddSong;

}

public JButton getBtnDelSong() {

return btnDelSong;

}

public JTextField getTxtSongName() {

return txtSongName;

}

public JTextField getTxtSonger() {

return txtSonger;

}

public JTextField getTxtMS() {

return txtMS;

}

public JTextField getTxtSongType() {

return txtSongType;

}

public JTextField getTxtSongLoc() {

return txtSongLoc;

}

public void setTreeModel(DefaultTreeModel treeModel) { this.treeModel = treeModel;

}

public JPanel getSongInfoPanel() {

return songInfoPanel;

}

public JPopupMenu getPopMenu() {

return popMenu;

}

public Vector getSongLrc() {

return songLrc;

}

public JSlider getSlider() {

return slider;

}

public Icon getPlayIcon() {

return playIcon;

}

public JButton getBtnPlay() {

return btnPlay;

}

public void setBtnPlay(JButton btnPlay) { this.btnPlay = btnPlay;

}

public Icon getStopIcon() {

return stopIcon;

}

public JLabel getSongWordsLabel1() { return songWordsLabel1;

}

public JLabel getSongWordsLabel2() { return songWordsLabel2;

}

public JLabel getSongWordsLabel3() { return songWordsLabel3;

}

public JLabel getSongWordsLabel4() { return songWordsLabel4;

}

public JLabel getSongWordsLabel5() { return songWordsLabel5;

}

public JPanel getQueryPanel() {

return queryPanel;

}

public JScrollPane getQueryScrollPanel() { return queryScrollPanel;

}

public List getBtnList() {

return btnList;

}

public PlayerMouseListener getPmLis() { return pmLis;

}

public Thread getMouseThread() {

return mouseThread;

}

public static void main(String[] args) {

new PlayerFrame().setVisible(true);

}

}

2.添加歌曲信息

package cn.xtu.catqq.view.player;

import java.awt.Color;

import java.awt.Insets;

import java.util.List;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JTextField;

import cn.xtu.catqq.control.playerlistener.AddSongInfoActionListener;

import cn.xtu.catqq.model.player.SongInfoDao;

import cn.xtu.catqq.model.player.impl.SongInfoDaoImpl;

import cn.xtu.catqq.util.FontUtil;

import cn.xtu.catqq.util.InitialFrameStyle;

public class AddSongInfoDialog extends JDialog {

/*

* txtSongName:歌曲名

* txtSonger:歌手

* txtMS:作曲

* txtSongLoc:文件位置

*/

private JTextField txtSongName,txtSonger,txtMs,txtSongLoc;

//歌曲类型下拉框

private JComboBox boxSongType;

/*

* btnBrowse:浏览文件

* btnConfirm:确认提交按钮

* btnCancel:取消按钮

*/

private JButton btnBrowse,btnConfirm,btnCancel;

//用来存储歌曲信息(歌曲编号, 歌曲名, 歌手, 作曲, 歌曲类型, 文件位置) private List songInfo;

public AddSongInfoDialog(List songInfo){

InitialFrameStyle.setDialogStyle(this, "添加歌曲信息", 500, 400);

this.setLayout(null);

initialComponent();

registerListener();

this.songInfo = songInfo;

}

//初始化给会话框的组件

private void initialComponent(){

JLabel labTitle = new JLabel("歌曲信息");

labTitle.setForeground(Color.ORANGE);

labTitle.setFont(FontUtil.setFont(40));

InitialFrameStyle.putComponentByNull(this, labTitle, 170, 30, 200, 50);

JLabel lblSongName = new JLabel("歌名:");

JLabel lblSonger = new JLabel("歌手:");

JLabel lblMS = new JLabel("作曲:");

JLabel lblSongType = new JLabel("类型:");

JLabel lblSongLoc = new JLabel("位置:");

InitialFrameStyle.putComponentByNull(this, lblSongName, 140, 100, 50, 25);

InitialFrameStyle.putComponentByNull(this, lblSonger, 140, 140, 50, 25);

InitialFrameStyle.putComponentByNull(this, lblMS, 140, 180, 50, 25);

InitialFrameStyle.putComponentByNull(this, lblSongType, 140, 220, 50, 25);

InitialFrameStyle.putComponentByNull(this, lblSongLoc, 140, 260, 50, 25);

txtSongName=new JTextField(15);

txtSonger=new JTextField(15);

txtMs=new JTextField(15);

SongInfoDao infoDao = new SongInfoDaoImpl();

List songTypes = infoDao.findSongList();

int len = songTypes.size();

Object[] types = new Object[len];

for(int i=0; i

StringBuffer sb = new StringBuffer();

Object[] tempSongTypes=songTypes.get(i);

sb.append(tempSongTypes[0]);

sb.append(":");

sb.append(tempSongTypes[1]);

types[i] = sb.toString();

}

boxSongType = new JComboBox(types);

txtSongLoc=new JTextField(15);

InitialFrameStyle.putComponentByNull(this, txtSongName, 200, 100, 150, 22);

InitialFrameStyle.putComponentByNull(this, txtSonger, 200, 140, 150, 22);

InitialFrameStyle.putComponentByNull(this, txtMs, 200, 180, 150, 22);

InitialFrameStyle.putComponentByNull(this, boxSongType, 200, 220, 150, 22);

InitialFrameStyle.putComponentByNull(this, txtSongLoc, 200, 260, 150, 22);

Insets insets = new Insets(0,0,0,0);

btnBrowse=new JButton("浏览文件");

btnBrowse.setActionCommand("browse");

btnBrowse.setMargin(insets);

btnConfirm=new JButton(new ImageIcon("img\\submit1.png"));

btnConfirm.setActionCommand("confirm");

btnConfirm.setMargin(insets);

btnCancel = new JButton(new ImageIcon("img\\cancel1.png"));

btnCancel.setActionCommand("cancel");

btnCancel.setMargin(insets);

InitialFrameStyle.putComponentByNull(this, btnBrowse, 355, 260, 60, 20);

InitialFrameStyle.putComponentByNull(this, btnConfirm, 150, 300, 80, 35);

InitialFrameStyle.putComponentByNull(this, btnCancel, 250, 300, 80, 35);

JLabel backGround = new JLabel(new ImageIcon("img\\添加歌曲背景.jpg"));

InitialFrameStyle.putComponentByNull(this, backGround, 0, 0, 500, 400); }

//注册监听器

private void registerListener(){

AddSongInfoActionListener asiaLis = new AddSongInfoActionListener(this);

btnBrowse.addActionListener(asiaLis);

btnConfirm.addActionListener(asiaLis);

btnCancel.addActionListener(asiaLis);

}

public JTextField getTxtSongName() {

return txtSongName;

}

public void setTxtSongName(JTextField txtSongName) {

this.txtSongName = txtSongName;

}

public JTextField getTxtSonger() {

return txtSonger;

}

public void setTxtSonger(JTextField txtSonger) {

this.txtSonger = txtSonger;

}

public JTextField getTxtMs() {

return txtMs;

}

public void setTxtMs(JTextField txtMs) {

this.txtMs = txtMs;

}

public JTextField getTxtSongLoc() {

return txtSongLoc;

}

public void setTxtSongLoc(JTextField txtSongLoc) {

this.txtSongLoc = txtSongLoc;

}

public JComboBox getBoxSongType() {

return boxSongType;

}

public void setBoxSongType(JComboBox boxSongType) { this.boxSongType = boxSongType;

}

public List getSongInfo() {

return songInfo;

}

public void setSongInfo(List songInfo) {

this.songInfo = songInfo;

}

/**

* @param args

*/

public static void main(String[] args) {

new AddSongInfoDialog(null).setVisible(true);

}

}

3.添加歌曲类型:

package cn.xtu.catqq.view.player;

/**

* 添加歌曲类型的会话框

*/

import java.awt.Color;

音乐播放器的详细设计

音乐播放器详细设计 1.引言 随着社会的快速发展,现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,音乐成了我们生活工作中的一个重要的部分。而3G时代的到来,手机移动应用越来越普遍。此文档就是为了能更好地设计出一个基于android系统的音乐播放器而编写的。 1.1 编写目的 为软件的开发者能更好的理解和明确软件开发的详细过程,安排项目与进度、组织软件开发与测试,撰写本文档。本文档供项目组成员,软件开发人员参考。1.2项目背景 本项目由李雪梅、杨挺等人提出,由本组成员联合开发,实现播放现今流行的音乐MP3等文本格式。 该软件是基于Android系统的音乐播放软件,并能够与其他音乐播放软件兼容。 1.3 参考资料 [1] 重庆大学出版社《软件工程》“软件计划与可行性分析” [2] 靳岩、姚尚明人民邮电出版社《Android开发入门与实践》 [3] 可行性分析 [4] 《音乐播放器需求分析书》 [5] 《音乐播放器总体设计说明书》 1.4项目开发计划 实施计划:

阶段名称负责人 需求分析杨挺、李雪梅 总体设计李雪梅、杨挺 详细设计李雪梅、杨挺 软件测试李雪梅、杨挺 在技术方面,编程知识比较缺乏,对有些与项目相关的软件 不熟悉,需进行人员的技术培训(自学为主),技术难点是数据库的构架和软件功能的设计。 2. 总体设计 2.1 项目目的 本项目的目的是开发一个可以播放主流的音乐文本格式的播放器。设计的主要实现功能是播放MP3等格式的音乐文件,并且能控制播放,暂停,停止,音量控制,选择上一曲,选择下一曲,更改皮肤,歌曲列表文件的管理操作,在线播放,读取 存储卡播放等多种播放控制,界面简明,操作简单。 软件系统检测到错误行为时,报告错误,并提示处理操作。 2.2 软件运行环境 硬件:Android操作系统手机 系统软件:Android 2.2 -- 4.0版本 支撑软件:Eclipse 7.5 、ADT 1.5 2.3 需求概述

音乐播放器程序源代码及注释

音乐播放器程序源代码及注释: #include #define uchar unsigned char #define uint unsigned int sbit duan=P2^6; sbit key1=P3^2;//按key1可切换花样 sbit key2=P3^3;//按key2可切换歌曲 sbit fm=P2^4;//蜂鸣器连续的IO口 sbit P30=P3^0;//矩阵键盘的一列 uchar code huayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花样1 uchar code huayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7, 0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花样2 uchar code huayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0, 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; char code huayang4[]={ 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0}; uchar count1;//花样标志 uchar count2;//歌曲标志 uchar timeh,timel,i; //编程规则:字节高位是简谱,低位是持续时间, //代表多少个十六分音符 //1-7代表中央C调,8-E代表高八度,0代表停顿

音乐播放器的设计与实现

德州学院信息管理学院 课程设计报告实习名称课程设计2 设计题目Android音乐播放器的设计与实现实习时间 专业班级12级计算机科学与技术 指导老师刘想 教学单位(盖章) 小组成员分工情况: 学号姓名分工 3018 周生明音乐播放的设计与实现1052曹法瑞 1040 张正奎 1055 李元华 2049 王山 二〇一五年六月三十日

目录 摘要 ................................................................................................................ 错误!未定义书签。 1 引言 ............................................................................................................ 错误!未定义书签。 2 可行性分析................................................................................................. 错误!未定义书签。 2.1 技术可行性...................................................................................... 错误!未定义书签。 2.2 经济可行性...................................................................................... 错误!未定义书签。 2.3 管理可行性...................................................................................... 错误!未定义书签。 2.4 可行性分析结论.............................................................................. 错误!未定义书签。 3 系统需求分析............................................................................................. 错误!未定义书签。 3.1 功能分析.......................................................................................... 错误!未定义书签。 3.2 数据流程分析.................................................................................. 错误!未定义书签。 4 系统功能设计............................................................................................. 错误!未定义书签。 4.1 播放器功能结构.............................................................................. 错误!未定义书签。 4.1.1 播放器主界面功能模块....................................................... 错误!未定义书签。 4.1.2 播放器菜单功能模块........................................................... 错误!未定义书签。 4.2 播放器功能流程.............................................................................. 错误!未定义书签。 5 系统实现..................................................................................................... 错误!未定义书签。 5.1 播放器主界面功能列表.................................................................. 错误!未定义书签。 5.2 播放器基本功能的实现.................................................................. 错误!未定义书签。 5.3 播放列表的实现.............................................................................. 错误!未定义书签。 6 软件测试与验证......................................................................................... 错误!未定义书签。 6.1 软件测试的目的.............................................................................. 错误!未定义书签。 6.2 软件测试的方法.............................................................................. 错误!未定义书签。 6.3 软件测试环境.................................................................................. 错误!未定义书签。 6.3.1 android模拟器 ...................................................................... 错误!未定义书签。 6.3.2 真机测试............................................................................... 错误!未定义书签。 6.4 软件测试流程与结果评估.............................................................. 错误!未定义书签。 6.4.1 测试流程............................................................................... 错误!未定义书签。 6.4.2 结果评估............................................................................... 错误!未定义书签。

嵌入式MP3播放器的设计

嵌入式MP3播放器的设计 1 系统概述 本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。 MP3播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。 2 系统硬件设计方案 本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。系统硬件框架如图5所示。 VS1003 STM32 图5 系统硬件框架图 2.1 存储模块设计 SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。SD卡支持两种总线方式: SD方式与SPI方式。其中SD 方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。可用不同的初始化方式使SD卡工作于SD方式或SPI方式。 在本设计中,音频数据MP3文件是以SD卡为载体。所以在电路设计中必须含有读取SD卡模块。该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。 PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通

Java音乐播放器源代码即结果显示

简单的音乐播放器一、程序代码: import java.io.File; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.FileDialog; import java.awt.Frame; import java.awt.GridLayout; import https://www.doczj.com/doc/1e8058351.html,bel; import java.awt.List; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; public class Example extends Frame { private static final long serialVersionUID = 1L; boolean isStop = true;// 控制播放线程 boolean hasStop = true;// 播放线程状态

基于51单片机的音乐播放器设计

题目:音乐播放器 课程设计(论文)任务书

摘要 随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。 单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。 本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显

音乐播放器设计文档

生产实习报告 题目:音乐播放器 学生姓名:张凡 学号: 201220220123 班级: 1222201 专业:数字媒体技术 指导教师:张金 2015年08 月08日

目录 一、引言 (3) 1.1 项目背景 (3) 1.2 项目研究的目的 (4) 1.3 安卓简介 (4) 二.功能分析 (5) 2.1 功能需求分析 (5) 2.2 系统性能需求 (6) 2.3 运行环境需求 (6) 三.程序详细设计 (6) 3.1 主界面的设计 (6) 3.2 播放界面设计 (11) 3.3 其他功能 (14) 四.调试与运行 (18) 4.1 调试 (18) 4.2 运行结果 (19) 五.总结 (21)

一、引言 1.1 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,symbian,Windows mobile,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?答案是:肯定的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。 随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

音乐播放器代码大全

音乐播放器代码大全 autostart="true"中true或1表示自动播放,false或0表示手动播放 loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器 EnableContextMenu="0" 禁右键 ShowStatusBar="1" (带显示文件播放信息) 1隐藏播放器(不循环) 代码: 2.隐藏播放器(循环播放) 代码: 3.黑色皮肤播放器 代码: 4.淡蓝色播放器 代码:

5.迷幻播放器 代码:

6.带菜单的播放器 代码: 7.深黄色带菜单播放器 代码: 8.灰色播放器 代码:

音乐播放器的设计与实现毕业论文

音乐播放器的设计与实 现毕业论文 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

毕业设计说明书 学生姓名学号 学院计算机科学与技术学院 专业计算机科学与技术(软件工程) 题目音乐播放器的设计与实现 指导教师 (姓名)(专业技术职称/ 学位) 年月 摘要:随着生活水平的提高,娱乐已成为非常主流的话题,人们不仅需要通过音乐陶冶情操,而且越来越多的人倾向于使用音乐、视频等娱乐和放松自己,这大大促进了媒体软件的发展.本文旨在介绍研究常用数字音频编码和解码的相关知识,并结合VS2008编写多功能音乐播放器,了解音乐播放器功能的实现,掌握开发音乐播放器所需的相关知识,采用了面向对象软件工程方法,其开发主要包括应用程序界面设计和后台代码运行两个方面,实现了多功能音乐播放器在计算机上的应用,可以在很大程度上满足用户的需求.该系统主要具备:音乐播放控制、音乐文件控制、音量控制、下载控制、歌词控制、进度控制、音乐剪辑等功能模块。 关键字:音乐播放器,音频编码格式,TechSmith Screen Capture Codec,FFmpeg ,C#,Visual Studio 2008 Abstract:With the improvement of standards of living, entertainment has become very mainstream topics, it is required not only by music, edifying, and as more and more people tend to use music, video and other entertainment and relax, which greatly promoted the development

安卓音乐播放器开发,含源代码

基于an droid平台的音乐播放器开发 实验报告 学生姓名:_______ 温从林 _________________ 学号: ___________________________________ 班级:计自1201 _____________ 第一章引言 1.1项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Win dowsmobile,symbia n,以及谷歌的An droid操作系统,其中占有开放源代码优势的An droid系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌An droid系统就能做到。本文的音乐播放器就是基于谷歌An droid手机平台的播放器。 An droid :是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于An droid平台的。 1.2编写目的 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3 Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。

本项目是一款基于An droid手机平台的音乐播放器,使An droid手机拥有个性的 多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练An droid的技术和其它在市场上的特点。 1.3开发环境 Eclipse、An droid SDK 320 第二章系统需求分析 2.1功能需求(用例图分析) 根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述: 2.1.1播放器的用例图 假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作, 启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下 图2.1 播放器基本用例图 2.1.2用例分析

基于STM32 MP3播放器设计分析

基于STM32 MP3播放器设计 学院:XXXXXXXXXXX 专业班机:XXXXXXXX 姓名XXXXX 学号:XXXXXXXX

1.1 本课题的提出及意义 MP3音频播放器的最合理工作速度为30Mips,而一个典型的视频媒体播放器的理想速度则为175Mips,所以提高MP3的工作速度,以及改善MP3的音质是最关键的,也是亟待解决的问题。 MP3是一种典型的嵌入式设备,而现在市场上比较常见的是闪存式MP3。由于闪存式MP3的容量限制,使它存储歌曲数目较少,在功能上也很难实现多样化[1]。而硬盘式MP3的多功能及大容量,也必将受到不少消费者的喜爱。 MP3播放器一般分成3个部分:CPU、MP3硬件解码器存储器。其中可以将前两部分集成在一起,即带MP3硬件解码器的CPU;或将后两部分集成在一起,即集成硬件解码、D/A转换及音频输入。存储器可以是Flash存储器或硬盘[2]。通过用MP3编码技术,可以得到大约12:1压缩的有损音乐信号。 1.2 研究现状 MP3全称是MPEG Layer 3,狭义的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式。自韩国世韩(Seahan)公司1998年推出世界上第一台MP3随身听以来, MP3播放器以其小巧的外形,不错的近乎于CD的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题[3]。在市场消费刺激下,各大公司纷纷推出了自己的mp3播放器产品,IC供应商提供了众多的MP3解码芯片及其解决方案。除了Micronas方案(MAS3507+DAC3550),还有台湾创品方案(T33510,T33520)、美国SigmaTel方案(STMP3400)和TI的DA-250解决方案。这使mp3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔[4]。 2 硬件设计 2.1整体方案 综述

基于android的在线音乐播放器的设计与实现开题报告

本科生毕业设计(论文)开题报告 论文题目:基于android的在线音乐播放器的设计与实现 学院:软件学院 专业:计算机科学与技术 学生姓名: 学生班级: 学生学号: 指导教师:

基于android的在线音乐播放器的设计与实现 一、课题的研究目的和意义 现如今社会生活节奏日益加快,人们在忙碌的生活中欣赏音乐是最好的舒缓压力的方式之一。随着移动设备的日益完善,我们大家都已经有了在手机上听自己喜欢歌曲的习惯,以往的做法是用数据线或者蓝牙等无线设备将PC上的歌曲复制几首到手机当中,反反复复的听,等到听厌了以后,再次装一些歌曲进去,如此反复,非常的麻烦。因此,如果在我们的手机上能实现在线听歌,这将会带来极大的方便。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,是手机显得更生动灵活化,与人们更为方便,让手机主人随时随地处于音乐的旋律之中。本设计实现的重要功能是播放Mp3格式的音乐文件,并且能够控制音乐的播放,暂停,显示歌手信息,歌曲专辑等功能。本项目还可以使人们生活更加多样化,也使设计者更加熟悉Android的技术和其它在市场上的特点。 二、国内外发展状况 1. 目前中国拥有世界上最大的手机用户群,Android在中国的前景十分广阔,首先是有成熟的消费者,Android社区是分红或,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,保过中国移动、中国联通、中心通讯、华为通讯、联想等大企业,同时还不仅仅局限于手机,国内厂家也陆续退出了采用Android系统的MID产品,比较著名的包括由Rock chip和蓝魔推出的同时具备高清播放和智能系统的音乐汇W7和2010年推出的原道N5,我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Android系统的应用范围。 2. 国外Android市场正在如日中天的扩展,根据市场调研机构NPDGroup最近发布的一份报告称,今年第一季度基于Android操作系统的智能手机在美国智能手机总销售量中所占比例达到28%,超越苹果iPhone。2012年另一家市场研究公司comScore发布报告称,第三季度三星和Android操作系统仍在美国移动市场上占据主导地位。报告显示,在对3万多名美国移动用户进行调查后发现,谷歌Android平台第三季度仍在美国市场上占据主导地位,所占份额为52.5%,比第二季度增长近1个

在线音乐播放系统详细设计

<在线音乐播放系统> 详细设计说明书 作者: 完成日期: 签收人: 签收日期: 修改情况记录:

1 引言 1.1 编写目的 为软件开发人员在编码的过程中有所依据和参考。 面向人员:程序开发人员 1.2 背景 说明: a.待开发的软件系统的名称:在线音乐播放系统 b.列出本项目的任务提出者:北软老师 c.开发者:邓凯 d.用户:广大互联网用户 e.将运行该项软件的单位:web服务器 1.3 定义 OMS :Online music system,在线音乐播放系统。 1.4 参考资料 列出要用到的参考资料,如: a.本项目的经核准的计划任务书或合同、上级机关的批文; b.在线音乐播放系统概要设计.doc; c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。 2 程序系统的结构 本程序主要采用四层结构,如下所示: 图1 系统结构示意图

3 程序(标识符)设计说明 3.1 在线音乐网络爬虫设计说明: 资源的数量和质量将决定了系统的商业价值,为了获取更多的网络媒体资源,为系统设计了一款针对互联网上音乐资源的网络爬虫。 3.1.1爬虫的原理: 网络爬虫是一个自动提取网页的程序,它为搜索引擎从Internet网上下载网页,是搜索引擎的重要组成。 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1)对抓取目标的描述或定义; (2)对网页或数据的分析与过滤; (3)对URL的搜索策略。 3.1.2在线音乐播放系统爬虫的设计: 与通用爬虫不同,在线音乐播放系统爬虫只针对https://www.doczj.com/doc/1e8058351.html,音乐频道 https://www.doczj.com/doc/1e8058351.html,音乐频道,针对MP3格式的资源。 3.1.3爬虫的流程图:

音乐播放器的设计与实现

第一章绪论 1.1背景 随着电子技术的飞速发展,嵌入式设备在各领域的应用越来越广泛,复杂度也越来越高,对其他开发方法也提出了更多的要求和更大的挑战。在嵌入式设备系统开发过程中需要将软件应用与操作系统编译连接成一个整体,然后下载到目标机上运行,所以,嵌入式设备的开发过程是一个复杂的过程。 3作为高质量音乐压缩标准,给音频产业带来了具大的冲击。3技术使音乐数据压缩比率大,回放质量高。如格式的音乐数据压缩成3格式,音效相差无己,但大小至少可压缩12倍。由于3音乐的较小数据量和近乎完美的播放效果使其在网络上传输得以实现。1995年,3格式的音乐文件刚在网络上传播时,主要用等播放软件进行播放,使3音乐无法脱离计算机进行播放,给音乐欣赏带来了不便。近几年以来,随着3播放器的出现及其技术的发展,人们对3播放器的要求越来越高,制造商在3播放器的选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。本设计主要是利用技术设计一款新型的3播放器。 9是公司的16/32位处理器,是适用于普通设备的一种高性价比的微控制器。本设计采用的是三星公司推出的9芯片S3C2440,具有低价格、低功耗、高性能、超小体积等特点主要适用于中高端场合,目前在嵌入式系统中正得到日益广泛的应用。S3C2440主频高达400M,片上集成了丰富的资源:如()总线与控制器,为与数模转换器()的连接提供了一种理想的解决方案。 3播放器的设计比较复杂且对处理器的要求较高,因而3播放器必须仔细设计以降低成本。本设计是在9平台上设计、实现一个3播放器。 第二章系统总体方案 2.1 系统功能 本设计提出了一种基于嵌入式处理器硬件平台的3播放器设计方法。此播放器采用体系结构中的9作为系统控制器,利用外围设备通用串行接口下载3歌曲,用存贮3文件。主要对3做了各个方面的功能分析,对硬件设计、软件设计、软件实现、系统编译等方面做了介绍。系统的主要部分是音频编码与解码,这是系统设计的核心。3播放器设计的突出问题就是硬件控制和软件控制,另外还有硬盘控制、键盘控制、液晶显示,这些控制都是基于一块芯片。基于9的3播放器设计的软件体系结构采用分层模式,它包括软件层、硬件层、驱动层、操作系统层、及3播放器应用层。主要实现歌曲的播放。 2.2 设计指标 1、3工作电压为具有3.3V左右,电流250,具有音频解码和播放功能。 2、通过接口与大容量外部存储设备进行数据传输,能实现网络播放与下载、触摸屏输入功能。

51单片机蜂鸣器播放音乐代码

/*生日快乐歌曲*/ #include <> #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}; uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); } void PlayMusic() { uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG 为拍子长度 for(j=0;j // 这是单片机音乐代码生成器生成的代码 #define uchar unsigned char sbit beepIO=P1^5; // 输出为可以修改成其它 IO 口uchar m,n;

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书 课程设计名称:软件综合课程设计 课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院

电子信息工程专业课程设计任务书 正文: 目录 引言 (5) 一、设计程序的目的与要求 (6)

目的 (6) 要求 (6) 二、方案实现与调试 (6) 总体设计 (6) 1、实现功能 (6) 2、功能模块图 (7) 详细设计 (7) 1、界面布局 (7) 2、各模块功能设计 (8) 2.1处理“打开”按钮 (9) 2.2处理“播放”按钮 (9) 2.3处理“暂停”按钮 (9) 2.4处理“停止”按钮 (9) 2.5处理“音量”按钮 (10) 2.6处理“退出”按钮 (10) 3 操作步骤 (10) 三、课程设计分析与总结 (11) 分析 (11) 总结 (11) 附录 (13) 关键程序清单 (13)

参考文献 (20) 引言 MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC 的基本知识而设计的。 1.1 MFC简介 MFC是Visual C++是核心。MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard 向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。这些函数,必须通过类定义对象才能使用[1]。 1.2 MCI简介 MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不

音乐播放器设计文档

题目:心灵音乐播放器学号: 姓名: 学院:信息工程学院 专业班级: 指导教师: 设计时间:2012年4月至2012年5月

目录 第一章引言 (3) 1.1 项目背景 (3) 2.2 编写目的 (3) 第二章系统开发 (4) 2.1 功能需求(用例图分析) (4) 2.1.1 播放器的基本控制需求 (4) 2.1.2 播放清单列表管理需求 (5) 2.1.3 播放友好性需求 (6) 2.1.4 播放扩展卡需求 (6) 2.1.5 功能需求(时序图)分析................................................... 错误!未定义书签。 2.2 系统结构图和流程图 (6) 2.2.1 音乐播放器的系统流程图 (6) 2.2.2 系统功能表(表2.1)和系统功能结构图(图2.5.2) (7) 2.3 详细设计 (8) 2.3.1 文档结构 (8) 2.3.2 类结构 (9) 2.4 初步设计界面图 (10) 2.4.1 在线列表 (11) 2.4.2 下载器界面 (11) 2.4.3 播放器界面 (12) 2.4.4 音乐设置界面 (13) 2.4.5 默认本地音乐文件夹界面 (14) 2.4.6 单击某条记录弹出对话框 (15)

摘要 Android是一个开源系统技术,它底层是基于Linux操作系统,本音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面截图以及主要功能运行流程图,还对开发过程中遇到的问题和解决方法进行了详细的讨论。该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示、在线播放、音乐下载等功能于一体,性能良好,在Android系统中能独立运行。MP3的全名是MPEG Audio Layer-3,是一种声音文件的压缩格式,由于本播放器只限于应用层的探讨,所以对具体的压缩算法不作深究 关键词:Android;开源系统;Linux;音乐播放器 第一章引言 1.1 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同种类,现在市场上主要有三个手机操作系统——Windows Mobile,Symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上又有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的音乐播放器。 2.2 编写目的 现金社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,可以播放本地的MP3音乐,也可以播放在线的MP3音乐。本设计所实现的主要功能是播放MP3音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件管理操作等多种播放控制功能,界面简明,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使本人更加熟练Android的技术和它在市场上的特点。

文本预览
相关文档 最新文档