一个简单的音乐播放器的java代码
import java.awt.*;import java.awt.eve nt.*;import java.io.*;import java.util.*;import javax.swi ng.*;import javax.media.bea n.p layerbea n.*;import java.i o.I OExce pti on;import javax.swi ng.JO ptio nPane;import java.awt.*;p ublic class lyt exte nds JFrame imp leme nts Runn able {p ublic Media Player soumd1;p rivate JButt on p laySo und, stopsound, tjia n,loopSound; p rivate JMe nultem jmiOpenj miSavejmiExitjmiAbout;p ublic JPanel jp 1, j p2, j p3, j p4;p ublic JList jl;p rivate JButt on last, n ext, stop;p ublic Vector vector, min gche ng;boolea n fo = false, geshi = false;JLabel jl1, jl2, sj1, sj2;JTextField jt1, jt2;int a = 0, b = 0, you = 1, mm = 0;p ublic lyt() {super("200842018java 音乐播放器”); soumd1 = new Media Player();Container c = getC ontentPan e();c.setLayout (new FlowLayout());min gche ng = new Vector();jp1 = new JPan el();c.add(j p1);JMe nuBar mb=new JMe nuBar();setJMe nuBar(mb);JMenu fileMenu=new JMenu(” 文件");mb.add(fileMe nu);JMenu helpMenu=new JMenu(” 帮助"); mb.add(hel pMenu); fileMenu.add(jmiOpen=new JMenultem(” 打开"));fileMenu.add(jmiSave=new JMenultem(” 播放"));helpMenu.add(jmiAbout=new JMenultem(” 关于"));JPanel jp2 = new JPan el();jp 2.setLayout (new FlowLayout());jp2.add(last = new JButton(” 后退"));jp2.add(playSound = new JButton(” 播放"));jp2.add(tjian = new JButton(” 添加"));jp2.add(next = new JButton("前进"));jp2.add(stopsound = new JButton(” 停止"));jp2.add(loopSound= new JButton(” 循环")); getCo ntentPan e().add(j p2, BorderLayout.SOUTH);jp2 = new JPan el(); jp 2.add( playSo un d); jp 2.add(st opsoun d); c.add(j p2);jp4 = new JPan el(); sj1 = new JLabel(); sj2 = new JLabel(); jp 4.add(sj1);jp 4.add(sj2);c.add(j p4);vector = new Vector(); jl = new JList( min gche ng); jl.setVisibleRowCount(4); jl.setFixedCellHeight(30); jl.setFixedCellWidth(265);jl.setSelectio nM ode(ListSelectio nM odel.SINGLE_SELECTION)c.add( new JScroll Pan e(jl));jp3 = new JPan el();jp 3.add(tjia n);c.add(j p3);try {Stri ng s = "d:\\music.txt";Object Inpu tStream input = new Object Inpu tStream( new FileI nputStream(s));lujin a1 = (lujin) inpu t.readObject();min gche ng = a1.b;vector = a1.a;jl.setListData( min gche ng);}catch (Exce pti on e) {System.out.printin("D盘没有保存音乐文件");}jmiOpen .addActio nListe ner(new Acti on Liste ner() { p ublic void actionP erformed(Acti onEvent eve nt) { JFileChooser fileChooser = newJFileChooser(); fileChooser•setFileSelectio nMode(JFileChooser.FILES_AND_DIRECTORIES);fileChooser.setCurre ntDirectory( new File(".")); fileChooser.setFileFilter( newjavax.swi ng.filechooser.FileFilter() {p ublic boolea n acce pt(File file) {String n ame = file.getName().toLowerCase(); retur n n ame.endsWith(".m p3")II file.isDirectory();p ublic String getDescri pti on() {return "音乐文件(*.mp3)";}});if (fileChooser.show Open Dialog(lyt.this)== JFileChooser.A PP ROVE_O PTION) {Stri ng fileName = fileChooser.getSelectedFile().getAbsolute Path(); vector.add(fileName); Strin gBuffer buffer = daoxu(fileName); min gche ng.add(buffer);}}});tjia n.addActio nListe ner(new Acti on Liste ner() {p ublic void actionP erformed(Act ionEvent event) {JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectio nMode(JFileChooser.FILES_AND_DIRECTORIES );fileChooser.setCurre ntDirectory( new File("."));fileChooser.setFileFilter( new javax.swi ng.filechooser.FileFilter() { p ublic boolea n acce pt(File file) { Stri ng n ame =file.getName().toLowerCase();retur n n ame.e ndsWith(".m p3")II file.isDirectory();P ublic String getDescri pti on() {return "音乐文件(*.mp3)";}});if (fileChooser.show Open Dialog(lyt.this)== JFileChooser.A PP ROVE_O PTION) {Stri ng fileName = fileChooser.getSelectedFile().getAbsolute Path(); vector.add(fileName); Strin gBuffer buffer = daoxu(fileName); min gche ng.add(buffer);}}});jmiSave.addActio nListe ner(new Acti on Liste ner() {p ublic void actionP erformed(Act ionEvent e) {if (jl.getSelectedI ndex() >= 0) {String yy = (Stri ng) vector.get(jl.getSelected In dex());File ff = new File(yy);if (ff.exists()) {if (yy.matches("[\\S\\s]*.m p3") ||yy.matches("[\\S\\s]*.m p3")) {if (soumd1 != n ull) {a = 0;b = 0; you = 0; soumd1.st op();}soumd1.setMediaLocati on ("file:/" +yy);fo = true;soumd1.start();geshi = true;try {Thread.slee p(500);}catch (Interrup tedExce pti on eee) { }}elseJOp tio nPan e.showMessageDialog( null,"无法播放");}elseJOp ti onPan e.showMessageDialog( null,"此歌曲已经存在");}elseJOptionPane.showMessageDialog(null,"请选择音乐文件"); }});loopSoun d.addAct ion Liste ner(new Action Liste ner() {p ublic void actionP erformed(Acti onEvent e) {if (jl.getSelectedI ndex() >= 0) {String yy = (Stri ng) vector.get(jl.getSelectedI ndex());File ff = new File(yy);if (ff.exists()) {if (yy.matches("[\\S\\s]*.m p3")|| yy.matches("[\\S\\s]*.M P3")) {if (soumdl != n ull) {a = 0;b = 0;you = 0;soumdi.st op();} soumdI.setMediaLocati on ("file:/" + yy);fo = true;soumd1.start();geshi=true;try {Thread.slee p(500);} catch (Interrup tedExce ptio n we) {}} elseJOp tio nPan e.showMessageDialog( null,"不支持此格式,无法播放");} elseJOp ti onPan e.showMessageDialog( null,"此歌曲文件已经存在");}elseJOptionPane.showMessageDialog(null,"请选择音乐文件");}});p laySo un d.addActi on Liste ner(new Action Liste ner() { public void actionP erformed(Act ionEvent e) { if(jl.getSelectedI ndex() >= 0) {String yy = (Stri ng) vector.get(jl.getSelectedI ndex());File ff = new File(yy);if (ff.exists()) {if (yy.matches("[\\S\\s]*.m p3") || yy.matches("[\\S\\s]*.m p3")) { if (soumd1 != n ull) {a = 0;b = 0;you = 0;soumd1.st op();}soumd1.setMediaLocati on ("file:/" + yy); fo = true;soumd1.start(); geshi = true;try {Thread.slee p(500);}catch (Interrup tedExce pti on eee) {}} elseJOp tio nPan e.showMessageDialog( null,"无法播放");}elseJOp tio nPan e.showMessageDialog( nu II,"此歌曲已经存在");}elseJOptionPane.showMessageDialog(null,"请选择音乐文件");}});stopsoun d.addActi on Liste ner(new Action Liste ner() { p ublic void actionP erformed(Act ionEvent e) { a = 0;b = 0;you = 0;mm = 0;geshi = false;fo = false;sj1.setText( null);sj2.setText( null);if (jl.getSelectedI ndex() >= 0)soumd1.st op();}});jl.addMouseListe ner(new MouseAda pter() {p ublic void mouse Pressed(MouseEve nt eve nt) { if (event.getClickCou nt() == 2) {if (jl.getSelectedI ndex() >= 0) {String yy = (Stri ng)vector.get(jl.getSelectedI ndex());File ff = new File(yy);if (ff.exists()) {if (yy.matches("[\\S\\s]*.m p3") ||yy.matches("[\\S\\s]*.m p3")) {if (soumdl != n ull) {a = 0;b = 0;you = 0;soumdi.st op();}soumdI.setMediaLocati on ("file:/" + yy); fo = true;soumd1.start();geshi = true;try {Thread.slee p(500);}catch (Interrup tedExce pti on e) {}}elseJOp tio nPan e.showMessageDialog( null."无法播放”);} elseJOp tio nPan e.showMessageDialog( null,"此歌曲已经存在");}}if (eve nt.isMetaDow n()) {if (jl.getSelectedI ndex() >= 0) { int a = jl.getSelected In dex();>=jt1.setText( min gche ng.get(jl.getSelectedl ndex()) + "" jt2.setText(vector.get(jl.getSelectedl ndex()) + "");}}}});addWi ndowListe ner(new Win dowAda pter() {p ublic void win dowClos in g(Wi ndowEve nt e) { String s = "d:\\music.txt";mmm(vector, min gche ng, s); System.exit(0);}});setSize(370, 270);setVisible(true);}p ublic void run() {while (true) {Date now = new Date();try {Thread.slee p(1000);}catch (Interrup tedExce pti on e) {}if (geshi) {you = (int) soumd1.getMediaTime().getSec on ds();mm = you % 60;if (you != 0)if (you % 60 == 0) {b++;}sj1.setText(b + ":" + mm);}}}p ublic Strin gBuffer daoxu(Stri ng fileName) {Stri ng mc ="";for (int i = fileName .len gth(); i >= 1; i--) {if (fileName.charAt(i - 1) == '\\') break;mc += fileName.charAt(i - 1);}Stri ngBuffer buffer = new Stri ngBuffer(mc);Stri ngBuffer mm = buffer.reverse(); return mm;}p ublic void mmm(Vector vector, Vector min gche ng, Stri ng lujin) { lujin a = new lujin( vector, min gche ng);try {ObjectOut pu tStream out put = newObjectOut putStream( new FileOut putStream(luji n));out pu t.writeObject(a);out pu t.flush();out pu t.close();}catch (Exce pti on e) {}}p ublic static void main( Stri ng agrs[]) {lyt s = new lyt();Thread t1 = new Thread(s);t1.start();s.setDefaultCloseO peratio n(JFrame.EXIT_ON_CLOSE);}class lujinimp leme nts Serializable {Vector a = new Vector();Vector b = new Vector。
java播放声音文件的方法
java播放声音文件的方法java播放声音文件的方法大家知道java播放声音文件吗?很多人讲要使用JFM,但是也有人懒得去安装,所以另寻他法。
下面是店铺为大家搜索整理的java播放声音文件的方法,希望能给大家带来帮助!如下:public void play(String Filename)//Filename是乐曲名称或说路径{try {URL url = new URL("file:" + Filename);AudioClip ac = Applet.newAudioClip(url);ac.play();//ac.stop();//用此函数可以停止乐曲播放} catch (Exception e) {System.out.println(e);}}当然,前提是导入3个包:import java.applet.Applet;import java.applet.AudioClip;import .URL;然而实践证明这个方法并不好用,播放的声音断断续续,听起来简直是一种折磨~(不晓得这是类库本身的原因还是我电脑的故障~)后来发现了一个好方法,是由/wenda/thread?tid=7f56d51cd8e46a29& clk=wttpcts中的”神之泪花“提供的。
public void play(String Filename){try{// 用输入流打开一音频文件InputStream in = new FileInputStream(Filename);//FIlename 是你加载的声音文件如(“game.wav”)// 从输入流中创建一个AudioStream对象AudioStream as = new AudioStream(in);AudioPlayer.player.start(as);//用静态成员player.start播放音乐//AudioPlayer.player.stop(as);//关闭音乐播放//如果要实现循环播放,则用下面的三句取代上面的“AudioPlayer.player.start(as);”这句/*AudioData data = as.getData();ContinuousAudioDataStream gg= new ContinuousAudioDataStream (data);AudioPlayer.player.start(gg);// Play audio.*///如果要用一个URL 做为声音流的'源(source),则用下面的代码所示替换输入流来创建声音流:/*AudioStream as = new AudioStream (url.openStream());*/} catch(FileNotFoundException e){System.out.print("FileNotFoundException ");} catch(IOException e){System.out.print("有错误!");}}而要使用这个方法,导入的包与上一方法不同:import sun.audio.*; //java提供的,经常被忽略吧~import java.io.*;使用这个方法在我电脑上播放,很流畅。
java 播放声音代码
import java.applet.*;import java.awt.*;import java.awt.event.*;import .*;public class Sound extends Appletimplements ActionListener {String onceFile = "file:/e:/myjava/eg0910/src/1.aif";String loopFile = "file:/e:/myjava/eg0910/src/1.mid";AudioClip onceClip;AudioClip loopClip;Button playOnce;Button stopOnce;Button startLoop;Button stopLoop;boolean looping = false;boolean playing = false;public void init() {try{onceClip= getAudioClip(new URL(onceFile));loopClip = getAudioClip(new URL(loopFile));}catch(MalformedURLException e){}playOnce = new Button("Play aif");stopOnce = new Button("Stop aif");stopOnce.setEnabled(false);playOnce.addActionListener(this);add(playOnce);stopOnce.addActionListener(this) ;add(stopOnce);startLoop = new Button("Loop midi");stopLoop = new Button("Stop Loop");stopLoop.setEnabled(false);startLoop.addActionListener(this);add(startLoop);stopLoop.addActionListener(this);add(stopLoop);}public void stop() {if (playing) {onceClip.stop(); //暂停播放}if (looping) {loopClip.stop(); //暂停循环播放}}public void start() {if (playing){onceClip.play(); //重新开始播放}if (looping) {loopClip.loop(); //重新开始循环播放}}public void actionPerformed(ActionEvent event) {Object source = event.getSource();//响应play Button事件if (source == playOnce) {if (onceClip != null) {playing = true;// Thread t = new Thread(new t1());// t.start();//播放音乐文件onceClip.loop();//play按钮变灰,stop按钮可用stopOnce.setEnabled(true);playOnce.setEnabled(false);showStatus("Playing sound " + onceFile + ".");} else {showStatus("Sound " + onceFile + " not loaded yet.");}return;}//响应stop Button事件if (source == stopOnce) {if (playing) {playing = false;//暂停播放onceClip.stop();//play按钮可用,stop按钮变灰playOnce.setEnabled(true);stopOnce.setEnabled(false);}showStatus("Stopped playing sound " + onceFile + ".");return;}//响应loop Button事件if (source == startLoop) {if (loopClip != null) {looping = true;//开始声音的循环播放loopClip.loop();//loop按钮可用,stop loop按钮变灰stopLoop.setEnabled(true);startLoop.setEnabled(false);showStatus("Playing sound " + loopFile + " continuously.");} else {showStatus("Sound " + loopFile + " not loaded yet.");}return;}//响应stop loop Button事件if (source == stopLoop) {if (looping) {looping = false;//停止声音的循环播放loopClip.stop();//loop按钮变灰,stop loop按钮可用startLoop.setEnabled(true);stopLoop.setEnabled(false);}showStatus("Stopped playing sound " + loopFile + ".");return;}}}。
网页中添加音乐播放器代码
网页中添加音乐播放器代码<embed controller="true" width="300" height="40" src="/lrc/1.wma" border="0" >(一)基本语法:embed src=url说明:embed可以用来插入各种多媒体,格式可以是Midi、Wav、AIFF、AU、MP3等等,Netscape及新版的IE 都支持。
url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例:<embed src="your.mid">(二)、属性设置:1、自动播放:语法:autostart=true、false说明:该属性规定音频或视频文件是否在下载完之后就自动播放。
true:音乐文件在下载完之后自动播放;false:音乐文件在下载完之后不自动播放。
示例:<embed src="your.mid" autostart=true><embed src="your.mid" autostart=false>2、循环播放:语法:loop=正整数、true、false说明:该属性规定音频或视频文件是否循环及循环次数。
属性值为正整数值时,音频或视频文件的循环次数与正整数值相同;属性值为true时,音频或视频文件循环;属性值为false时,音频或视频文件不循环。
示例:<embed src="your.mid" autostart=true loop=2><embed src="your.mid" autostart=true loop=true><embed src="your.mid" autostart=true loop=false>3、面板显示:语法:hidden=ture、flase说明:该属性规定控制面板是否显示,默认值为flase。
java实现音频文件播放功能
java实现⾳频⽂件播放功能本⽂实例为⼤家分享了java实现⾳频⽂件的播放功能的具体代码,供⼤家参考,具体内容如下实现思路1、⾸先获取⾳频⽂件的地址,然后通过IO流读取⾳频⽂件,加缓冲区,实现Player类的对象。
2、Player类主要⽤于播放器的初始化,以及通过它来实现⼀些⾳视频⽂件的播放,这个类需要⼿动去⽹上下载,然后添加路径到我们Eclipse的library中。
3、Player类有两种⽅法⽐较常⽤,play()⽅法和close()⽅法,前者⽤于启动⾳频⽂件,后者⽤于退出⾳频⽂件的播放,这两个⽅法我们在使⽤的时候需要注意,在整个⾳频播放的过程中,程序都会停留在play()⽅法中,类似于在读进度条,close()⽅法可以使得其退出播放,程序往下继续运⾏。
4、假设我们点击了开始按钮,那么程序就不会再去响应你的停⽌操作了,于是,我们可以通过多线程来实现这个启动和停⽌功能,让播放在⼀个线程⾥⾃⼰去执⾏。
5、那么循环呢?如何实现循环播放?答案是while循环,我们需要⼀个参数作为while的循环条件,类似于⼀个开关,只要为true,就⼀直循环播放。
6、我们在执⾏完⼀次播放后就不能再次对这个对象调⽤play()⽅法了,我们需要再次创建新的对象,那么我们要想关闭新的对象就必须让执⾏close()⽅法的对象是这个新的对象,我们每次新建相同名称的对象,player.close()执⾏后关闭的往往只能是最后的那个对象。
在启动和停⽌中我们看不出问题,但是当我们试图关闭在run⽅法⾥循环中的⾳频时,我们会发现停⽌不了!为什么?我们把对象传给线程类,close()⽅法依然可由此对象来执⾏,当他执⾏完play()⽅法后,我们new⼀个新的对象时,⼜开辟了⼀块新的内存空间存放这个对象的数据,再⽤原先的对象close()就不能到达效果了,即⽆法关闭这个⾳频。
解决办法:在每次new新对象后⽤set⽅法把对象传回去,我们可以理解为让close⽅法的调⽤者⼀直是这个新new的对象。
一个简单音乐播放器代码
一个简单音乐播放器代码package bofang;import java.io.IOException;import com.example.bofang.R;import android.content.Intent;import android.media.MediaPlayer;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Activity extends android.app.Activity{ private Button bt1;private Button bt2;private MediaPlayer player;//mediaplayer对象private boolean isplaying;//是否播放@Overrideprotected void onCreate(Bundle savedInstanceState) { // TODO自动生成的方法存根super.onCreate(savedInstanceState);setContentView(yout.activity);bt1=(Button)findViewById(R.id.bt1);bt2=(Button)findViewById(R.id.bt2);bt3.setOnClickListener(new OnClickListener() {bt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO自动生成的方法存根playOrpauseMusic();}});bt2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO自动生成的方法存根stopMusic();}});init();}private void playOrpauseMusic() {// TODO自动生成的方法存根isplaying=player.isPlaying();if(isplaying){player.pause();bt1.setText("播放");}else{player.start();bt1.setText("暂停");//setimageresource(r.drawable.play)设置更换图片资源位置}bt2.setEnabled(true);}private void stopMusic() {// TODO自动生成的方法存根player.stop();bt1.setText("播放");bt2.setEnabled(false);try{ player.prepare();//为下次播放准备}catch(IllegalStateException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}player.seekTo(0);//定位音乐起始位置}private void init(){player=MediaPlayer.create(this,R.raw.cmsj);bt2.setEnabled(false);} }。
java播放mp3oggapeflac音乐
java播放mp3oggapeflac音乐java播放mp3/ogg/ape/flac音乐博客分类:•游戏音乐好吧,又要说一句了,java真是无所不能。
用java sound api播放wav, aiff, au, snd文件想必大家都已经知道了,这些格式是jdk原生支持的。
本文将介绍如何播放mp3/ogg/ape/flac音乐。
其实都是批发来的,我只是搬运工Σ( ° △ °|||)︴1. 先上代码Java代码1.import java.io.File;2.import java.io.IOException;3.4.import javax.sound.sampled.AudioFormat;5.import javax.sound.sampled.AudioInputStream;6.import javax.sound.sampled.AudioSystem;7.import javax.sound.sampled.DataLine;8.import javax.sound.sampled.SourceDataLine;9.10.public class AudioFilePlayer {11.12.public static void main(String[] args) {13.final AudioFilePlayer player = new AudioFilePlayer ();14.player.play("D:/xiaomi.ogg");15.//player.play("D:/01 - 謎解きはディナーのあとで.mp3");16.//player.play("D:/周杰伦-青花瓷.APE");17.//player.play("D:/周杰伦 - 听妈妈的话.flac");18.}19.20.public void play(String filePath) {21.final File file = new File(filePath);22.23.try {24.final AudioInputStream in = AudioSystem.getAudioIn putStream(file);25.26.final AudioFormat outFormat = getOutFormat(in.getF ormat());27.final info = new (SourceDat aLine.class, outFormat);28.29.final SourceDataLine line = (SourceDataLine) AudioSys tem.getLine(info);30.31.if (line != null) {32.line.open(outFormat);33.line.start();34.stream(AudioSystem.getAudioInputStream(outFormat, in), line);35.line.drain();36.line.stop();37.}38.39.} catch (Exception e) {40.throw new IllegalStateException(e);41.}42.}43.44.private AudioFormat getOutFormat(AudioFormat inFo rmat) {45.final int ch = inFormat.getChannels();46.final float rate = inFormat.getSampleRate();47.return new AudioFormat(AudioFormat.Encoding.PCM_ SIGNED, rate, 16, ch, ch * 2, rate, false);48.}49.50.private void stream(AudioInputStream in, SourceDataL ine line)51.throws IOException {52.final byte[] buffer = new byte[65536];53.for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) {54.line.write(buffer, 0, n);55.}56.}57.}你没有看错,代码其实很简单,就是普通的java sound api,和原来播放wav, aiff, au, snd没什么两样。
网页音乐播放器代码
插音乐播放器<embed src=这里填写你要放的歌曲地址 width=216 height=39 autostart="true"loop="false" id=MediaPlayer name="MediaPlayer">一、文字标记基本代码如下:<P align=center><FONT color=#0066ff face=隶书 size=5>插入文字</FONT></P>align=center 表示字体居中,可选值为居右(right)居左(left)color=颜色代码face=字体常用字体为:宋体.黑体.楷体.仿宋.幻缘.新宋体.细明体等size=字体大小,这里的最大值为7 取值越大文字就越大1.字体变化 <font>..........</font>a.字体大小 <font size=#>..........</font> #=1~7;数字愈大字也愈大b.指定字型 <font face="字体名称">..........</font>c.文字颜色 <font color=#rrggbb>..........</font>rr:表红色(red)色码gg:表绿色(green)色码bb:表蓝色(blue)色码rrggbb也可用6位颜色代码数字2.粗体字 <b>..........</b>3 字体加粗<STRONG>..........</STRONG>和<b>标签差不多的效果4.换行(也称回车) <br>5.分段标记 <p>文字的对齐方向 <p align="#"> #号可为 left:表向左对齐(预设值) center:表向中对齐 right:表向右对齐 P.S.<p align="#">之后的文字都会以所设的对齐方式显示,直到出现另一个<p align="#">改变其对齐方向,遇到<hr>或<h#>标签时会自动设回预设的向左对齐。
Java实战音乐播放器
Java实战音乐播放器-播放音乐文件,包括基本的音频控制创建一个基本的音乐播放器是一个有趣而复杂的项目,它涉及到音频文件的处理、用户界面的设计以及音频控制功能的实现。
在这个实战博客中,我将向您展示如何使用Java来创建一个简单的音乐播放器。
我们将使用Java的Swing库来构建用户界面,以及Java的javax.sound.sampled库来处理音频文件和音频控制。
这个播放器将能够加载和播放本地音频文件,包括基本的音频控制功能,如播放、暂停、停止和音量调节。
步骤1:创建Java项目首先,创建一个新的Java项目,并添加Swing和javax.sound.sampled库的依赖。
您可以使用Eclipse、IntelliJ IDEA或任何其他Java集成开发环境来完成这些任务。
步骤2:创建用户界面在我们的音乐播放器中,我们需要一个用户界面来加载和控制音乐文件。
我们将使用Swing 来创建以下基本组件:文件选择器:用于选择要播放的音乐文件。
播放按钮:用于开始或继续播放音乐。
暂停按钮:用于暂停音乐的播放。
停止按钮:用于停止音乐的播放。
音量控制:用于调整音量。
下面是一个示例的用户界面代码:javaCopy codeimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class MusicPlayerGUI extends JFrame {private JButton playButton;private JButton pauseButton;private JButton stopButton;private JSlider volumeSlider;private JFileChooser fileChooser;public MusicPlayerGUI() {setTitle("音乐播放器");setSize(400, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new FlowLayout());fileChooser = new JFileChooser();playButton = new JButton("播放");pauseButton = new JButton("暂停");stopButton = new JButton("停止");volumeSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);add(fileChooser);add(playButton);add(pauseButton);add(stopButton);add(volumeSlider);playButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 实现播放音乐的逻辑}});pauseButton.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {// 实现暂停音乐的逻辑}});stopButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 实现停止音乐的逻辑}});volumeSlider.addChangeListener(new ChangeListener() { @Overridepublic void stateChanged(ChangeEvent e) {// 实现音量调节的逻辑}});}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new MusicPlayerGUI().setVisible(true);}});}}步骤3:音频处理和控制接下来,我们需要添加音频处理和控制的逻辑。
Android多媒体(Media)入门
Android 提供了MediaPlayer 和MediaRecorder 两个工具类,来帮助开发者操作音频和视频。
我们通过两个小例子来学习一下多媒体资源的使用。
一、简单音乐播放器1、新建一个项目Lesson28_Music , 主Activity的名字是MainMusic.java2、拷贝这几张图片到res/drawable目录下,并建立3个xml文件,拷贝love.mp3到res/raw文件中。
play.xml1 <?xml version="1.0" encoding="utf-8"?>2 <SELECTOR xmlns:android="/apk/res/android">3 <ITEM android:state_enabled="false" android:drawable="@drawable/play_disable" /> <!-- state_enabled=false -->4 <ITEM android:drawable="@drawable/play_50" /> <!-- default -->5 </SELECTOR>pause.xml1 <?xml version="1.0" encoding="utf-8"?>2 <SELECTOR xmlns:android="/apk/res/android">3 <ITEM android:state_enabled="false" android:drawable="@drawable/pause_disable" /> <!-- state_enabled=false -->4 <ITEM android:drawable="@drawable/pause_50" /> <!-- default -->5 </SELECTOR>stop.xml1 <?xml version="1.0" encoding="utf-8"?>2 <SELECTOR xmlns:android="/apk/res/android">3 <ITEM android:state_enabled="false" android:drawable="@drawable/stop_disable" /> <!-- state_enabled=false -->4 <ITEM android:drawable="@drawable/stop_50" /> <!-- default -->5 </SELECTOR>3、res/layout/main.xml 的内容如下:01 <?xml version="1.0" encoding="utf-8"?>02 <LINEARLAYOUT xmlns:android="/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">03 <TEXTVIEW android:layout_width="fill_parent" android:layout_height="wrap_content" android:textsize="25sp" android:text="简单音乐播放器" />04 </LINEARLAYOUT>05 <LINEARLAYOUT xmlns:android="/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">0607 <IMAGEBUTTON android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/play" android:background="@drawable/play" android:adjustviewbounds="true" android:layout_margin="4dp">08 </IMAGEBUTTON>0910 <IMAGEBUTTON android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pause" android:background="@drawable/pause" android:adjustviewbounds="true" android:layout_margin="4dp">11 </IMAGEBUTTON>1213 <IMAGEBUTTON android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/stop" android:background="@drawable/stop" android:adjustviewbounds="true" android:layout_margin="4dp">14 </IMAGEBUTTON>15 </LINEARLAYOUT>4、MainMusic.java的内容如下:001 package android.basic.lesson28; 002003 import java.io.IOException;004005 import android.app.Activity;006 import android.media.MediaPlayer;007 import android.media.MediaPlayer.OnCompletionListener; 008 import android.media.MediaPlayer.OnPreparedListener; 009 import android.os.Bundle;010 import android.view.View;011 import android.view.View.OnClickListener;012 import android.widget.ImageButton;013 import android.widget.Toast;014015 public class MainMusic extends Activity {016017 // 声明变量018 private ImageButton play, pause, stop;019 private MediaPlayer mPlayer;020021 /** Called when the activity is first created. */022 @Override023 public void onCreate(Bundle savedInstanceState) {024 super.onCreate(savedInstanceState);025 setContentView(yout.main);026027 // 定义UI组件028 play = (ImageButton) findViewById(R.id.play);029 pause = (ImageButton) findViewById(R.id.pause); 030 stop = (ImageButton) findViewById(R.id.stop);031032 // 按钮先全部失效033 play.setEnabled(false);034 pause.setEnabled(false);035 stop.setEnabled(false);036037 // 定义单击监听器038 OnClickListener ocl = new View.OnClickListener() { 039040 @Override041 public void onClick(View v) {042 switch (v.getId()) {043 case R.id.play:044 // 播放045 Toast.makeText(MainMusic.this, "点击播放", Toast.LENGTH_SHORT) 046 .show();047 play();048 break;049 case R.id.pause:050 // 暂停051 Toast.makeText(MainMusic.this, "暂停播放", Toast.LENGTH_SHORT) 052 .show();053 pause();054 break;055 case R.id.stop:056 // 停止057 Toast.makeText(MainMusic.this, "停止播放", Toast.LENGTH_SHORT) 058 .show();059 stop();060 break;061 }062 }063 };064065 // 绑定单击监听066 play.setOnClickListener(ocl);067 pause.setOnClickListener(ocl);068 stop.setOnClickListener(ocl);069070 // 初始化071 initMediaPlayer();072 }073074 // 初始化播放器075 private void initMediaPlayer() {076077 // 定义播放器078 mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.love);079080 // 定义资源准备好的监听器081 mPlayer.setOnPreparedListener(new OnPreparedListener() {082 @Override083 public void onPrepared(MediaPlayer mp) {084 // 资源准备好了再让播放器按钮有效085 Toast.makeText(MainMusic.this, "onPrepared", Toast.LENGTH_SHORT) 086 .show();087 play.setEnabled(true);088 }089 });090091 // 定义播放完成监听器092 mPlayer.setOnCompletionListener(new OnCompletionListener() {093094 @Override095 public void onCompletion(MediaPlayer mp) {096 Toast.makeText(MainMusic.this, "onCompletion",097 Toast.LENGTH_SHORT).show();098 stop();099 }100 });101 }102103 // 停止播放104 private void stop() {105 mPlayer.stop();106 pause.setEnabled(false);107 stop.setEnabled(false);108 try {109 mPlayer.prepare();110 mPlayer.seekTo(0);111 play.setEnabled(true);112 } catch (IllegalStateException e) {113 e.printStackTrace();114 } catch (IOException e) {115 e.printStackTrace();116 }117118 }119120 // 播放121 private void play() {122123 mPlayer.start();124 play.setEnabled(false); 125 pause.setEnabled(true); 126 stop.setEnabled(true); 127 }128129 // 暂停130 private void pause() {131 mPlayer.pause();132 play.setEnabled(true); 133 pause.setEnabled(false); 134 stop.setEnabled(true); 135 }136137 // Activity销毁前停止播放138 @Override139 protected void onDestroy() { 140 super.onDestroy();141 if (stop.isEnabled()) { 142 stop();143 }144145 }146147 }5、运行程序,查看效果二、简单视频播放器Android为视频播放提供了VideoView 和MediaController 两个现成的组件,让我们可以方便的实现MP4、3GP等视频的播放。
音乐播放器源代码
P align=center><TABLE borderColor=#4f3256 align=centerbackground=/zh_cn/home4u/sucai/gifanimation/line/0022.gifborder=1><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"> <P align=center><EMBED src=width=369 height=39type=audio/mpeg loop="-1" autostart="ture"volume="0"></P></TD></TR></TBODY></TABLE></P>autostart="true"中true或1表示自动播放,false或0表示手动播放loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器EnableContextMenu="0" 禁右键ShowStatusBar="1" (带显示文件播放信息)=======================================================隐藏(hidden=true)播放器(不循环)<EMBED src=音乐网址hidden=true type=audio/x-ms-wma AUTOSTART="1">-----------------------------------------------------------隐藏(hidden=true)播放器(循环)<EMBED src=音乐网址hidden=true type=audio/mpeg AUTOSTART="1" loop="-1"> ---------------------------------------------------------------黑色[style="FILTER: xray()"]循环[loop="-1"]播放器<EMBED style="FILTER: xray()" src=音乐网址width=360 height=30type=audio/mpeg volume="0" autostart="true" loop="-1">--------------------------------------------------------------------------------浅兰色循环(loop="-1")播放器<EMBED src=音乐网址width=300 height=45 type=audio/mpeg loop="-1"autostart="true" volume="0">--------------------------------------------------------------------------掩饰自动播放器<TABLE style="FILTER: Alpha(Opacity=100, FinishOpacity=0, Style=2, StartX=20, StartY=40, FinishX=0, FinishY=0)gray(); WIDTH: 200px; HEIGHT: 83px"><TBODY><TR><TD><EMBED src=音乐网址width=200 height=40 type=audio/mpeg panel="0" autostart="true" loop="true"></TD></TR></TBODY></TABLE>-------------------------------------连播放时选择曲目的播放器<EMBEDpluginspage=/windows/mediaplayer/download/default.as p width=400 height=172 type=application/x-mplay er2 FileName="音乐网址" SHOWCONTROLS="1" SHOWSTATUSBAR="1" SHOWDISPLAY="1" SHOWGOTOBAR="1" AUTOSTART="true" PlayCount="1">----------------------------------------------------------------------------------------------显示曲名的黑色带彩自动播放器<EMBED style="FILTER: invert()" src=音乐网址width=320 height=45type=audio/x-ms-wma ShowStatusBar="1" loop="true" autostart="true">-------------------------------------------------------------------------显示曲名的灰白色面板<EMBED style="FILTER: Gray()" src="链接地址" width=300 height=69type=application/x-mplayer2 loop="-1" showcontrols="1" ShowDisplay="0" ShowStatusBar="1" autostart="1"></EMBED>------------------------------------------灰白面板<embed style="FILTER: Gray()" src=链接地址width=300 height=45 loop="-1" autostart="true"></EMBED>---------------------------------------------------------------(带显示文件播放信息)<EMBED src="链接地址" width=300 height=69 type=application/x-mplay er2loop="-1" showcontrols="1" ShowDisplay="0" ShowStatusBar="1"autostart="1"></EMBED>-----------------------------------------------黑色带彩棕色面板<EMBED style="FILTER: invert()" src=链接地址width=300 height=45 loop="-1" autostart="true"></EMBED>---------------------------------------------------------------------浅紫播放器<TABLE borderColor=#4F3256background=/DownloadImg/2010/09/0718/5119955_3.jpg border=1><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=300 height=25 type=audio/mpeg loop="-1" autostart="false" volume="0"></P></TD></TR></TBODY></TABLE>----------------------------------------------------------------------------------------------粉色<TABLE borderColor=navybackground=/UploadFile/2005-9/200592522275884778.jpg border=0><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=300 height=45 type=audio/mpeg loop="-1" autostart="0" volume="0"></P></TD></TR></TBODY></TABLE>------------------------------------------------------------------------------------黄色闪光<TABLE style="BORDER-RIGHT: #000000 3px dashed; BORDER-TOP: #000000 3px dashed; BORDER-LEFT: #000000 3px dashed; BORDER-BOTTOM: #000000 3px dashed" cellSpacing=0 cellPadding=0 bgColor=#00000><TBODY><TR><TD><TABLE borderColor=navybackground=/s-helpSite/domName/nxm/20041114123131568.gi f border=0><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=400 height=35 type=audio/mpeg loop="-1" autostart="0" loop="-1"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>--------------------------------------------------------------------------------蓝色闪光<TABLE borderColor=#dee4fe cellSpacing=3 cellPadding=0background=/UploadFile/2004-12/2004123023101352.gif border=2><TBODY><TR><TD><TABLE align=center border=0><TBODY><TR><TD style="FILTER: alpha(opacity=60,style=3)"><P align=center><EMBED style="FILTER: Gray" src=音乐网址width=400 height=35 type=audio/mpeg volume="0" autostart="false" loop="-1"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-------------------------------------------------------------------------花边黑色<TABLE style="BORDER-RIGHT: #000000 3px dashed; BORDER-TOP: #000000 3px dashed; BORDER-LEFT: #000000 3px dashed; BORDER-BOTTOM: #000000 3px dashed" cellSpacing=0 cellPadding=0 bgColor=#00000><TBODY><TR><TD><TABLE borderColor=#000000 align=center border=1><TBODY><TR><TD><P align=center><EMBED style="FILTER: Xray" src=音乐网址width=400 height=35 type=audio/mpeg volume="0" autostart="false" loop="-0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-----------------------------------------------------------------------------------------------------粉色花边<TABLE style="BORDER-RIGHT: #ff69b4 3px dotted; BORDER-TOP: #ff69b4 3px dotted; BORDER-LEFT: #ff69b4 3px dotted; BORDER-BOTTOM: #ff69b4 3px dotted" cellSpacing=0 cellPadding=0 align=center bgColor=white><TBODY><TR><TD><TABLE borderColor=#ff69b4 align=center bgColor=#ffccf5 border=2><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"><P align=center><EMBED src=音乐网址width=300 height=25 type=audio/mpeg volume="0" autostart="false" loop="-0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-------------------------------------------------------------------------------------------禁右键播放器<EMBED style="BORDER-RIGHT: silver 1px solid; BORDER-TOP: silver 1px solid; BORDER-LEFT: silver 1px solid; BORDER-BOTTOM: silver 1px solid" src=音乐网址width=200 height=40 type=audio/x-mplayer2 console="video" showstatusbar="0" EnableContextMenu="0" volume="0" autostart="0" loop="-1">---------------------------------------------------------------------------------上下移动<MARQUEE style="LEFT: 230px; ; TOP: 300px" scrollAmount=1 scrollDelay=200 direction=up behavior=alternate width=300 height=400><br><MARQUEE scrollAmount=1 scrollDelay=100 behavior=alternate><br><TABLE style="FILTER: progid:DXImageTransform.Microsoft.Shadow(color:#7ec0ee ,direction:145,strengt h:20)" cellSpacing=0 cellPadding=0 border=1><br><TBODY><br><TR><br><TD><EMBED style="FILTER: gray()" src=音乐网址width=200 height=20type=audio/mpeg showstatusbar="1" volume="0" loop="-1" autostart="1"></TD></TR></TBODY></TABLE></MARQUEE></MARQUEE>-------------------------------------------------------------------(显示文件标签信息)蓝色<DIV><EMBED src="链接地址" loop="-1" width=300 height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true" autostart="true" animationatstart="true" transparentatstart="true"></EMBED></div>--------------------------------------------------(显示文件标签信息)灰白<DIV><EMBED style="FILTER: Gray()" src="链接地址" loop="-1" width=300height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>----------------------------------------------------(显示文件标签信息)黑彩<DIV><EMBED style="FILTER: invert()" src="链接地址" loop="-1" width=300 height=140 balance="true" showpositioncontrols="true" showtracker="true"showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>-----------------------------------------------------------(显示文件标签信息)黑<DIV><EMBED style="FILTER: xray()" src="链接地址" loop="-1" width=300height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>===================================================连放<EMBED style="FILTER: Gray()" src=音乐网址width=500 height=35type=audio/x-ms-wma controls="StatusBar,TACCtrl,ControlPanel" border="0" autostart="1" playcount="0" showtracker="1" volume="0"></EMBED>=========================================================图片播放器!<TABLE style="FILTER: alpha(opacity=100 Style=0 FinishOpacity=100)" borderColor=#000000 height=249 cellSpacing=0 cellPadding=0 width=314 background=/DownloadImg/2010/09/0718/5119955_4.gif border=0><TBODY><TR><TD width=314 height=180 cellpadding="0" cellspacing="0"></TD></TR><TR><TD align=left><P align=center><EMBED style="FILTER: alpha(opacity=100 Style=3 FinishOpacity=0)black(); style: " src=音乐网址width=310 height=28 type=video/x-ms-asf loop="-1" autostart="1" volume="0"></P></TD></TR></TBODY></TABLE>=================================================以上效果分见如下::为免各效果同时播放,以下autostart=0autostart="true"中true或1表示自动播放,false或0表示手动播放loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器EnableContextMenu="0" 禁右键ShowStatusBar="1" (带显示文件播放信息)=======================================================隐藏(hidden=true)播放器(不循环)src="/LIU/all_about_you.wma" hidden="true"type="audio/x-ms-wma" allowscriptaccess="never" autostart="0">-----------------------------------------------------------隐藏(hidden=true)播放器(循环)src="/LIU/all_about_you.wma" hidden="true"type="audio/mpeg" allowscriptaccess="never" autostart="0" loop="-1">---------------------------------------------------------------黑色[style="FILTER: xray()"]循环[loop="-1"]播放器style="FILTER: xray()" src="/LIU/all_about_you.wma" width="360" height="30" type="audio/mpeg" allowscriptaccess="never"volume="0" autostart="0" loop="-1">--------------------------------------------------------------------------------浅兰色循环(loop="-1")播放器src="/LIU/all_about_you.wma" width="300" heigh t="45" type="audio/mpeg" allowscriptaccess="never" loop="-1" autostart="0"volume="0">--------------------------------------------------------------------------掩饰自动播放器src="/LIU/all_about_you.wma"width="200" height="40" type="audio/mpeg"allowscriptaccess="never" panel="0" autostart="0"loop="true">-------------------------------------连播放时选择曲目的播放器pluginspage="/windows/mediaplayer/download/default.a sp" width="400" height="172" type="application/x-mplayer2"allowscriptaccess="never"filename="/LIU/all_about_you.wma" showcontrols="1" showstatusbar="1" showdisplay="1" showgotobar="1" autostart="0"playcount="1">----------------------------------------------------------------------------------------------显示曲名的黑色带彩自动播放器style="FILTER: invert()" src="/LIU/all_about_you.wma" width="320" height="45" type="audio/x-ms-wma" allowscriptaccess="never" showstatusbar="1" loop="0" autostart="0">-------------------------------------------------------------------------显示曲名的灰白色面板style="FILTER: Gray()" src="/LIU/all_about_you.wma" width="300" height="69" type="application/x-mplay er2" allowscriptaccess="never" loop="-1" showcontrols="1" showdisplay="0" showstatusbar="1" autostart="0"> ------------------------------------------灰白面板style="FILTER: Gray()" src="/LIU/all_about_you.wma" width="300" height="45" type="audio/x-ms-wma" allowscriptaccess="never"loop="-1" autostart="0">---------------------------------------------------------------(带显示文件播放信息)src="/LIU/all_about_you.wma" width="300" height="69" type="application/x-mplay er2" allowscriptaccess="never" loop="-1"showcontrols="1" showdisplay="0" showstatusbar="1" autostart="0">-----------------------------------------------黑色带彩棕色面板style="FILTER: invert()" src="/LIU/all_about_you.wma" width="300" height="45" type="audio/x-ms-wma" allowscriptaccess="never"loop="-1" autostart="0"><CENTER><TABLE style="BORDER-RIGHT: #f1dda1 2px ridge; BORDER-TOP: #bdb76b 2px ridge; BORDER-LEFT: #f1dda1 2px ridge; BORDER-BOTTOM: #bdb76b 2px ridge; BACKGROUND-COLOR: white" borderColor=#ffffff cellPadding=0width=300 align=centerbackground=/fileuploaddir/4B2686448.4.gifborder=0><TBODY><TR><TD width=300 height=20 cellPadding="0"cellSpacing="0"><TABLE align=center border=0><TBODY><TR><TDstyle="FILTER: alpha(opacity=60,style=3)"><P align=center><EMBED style="FILTER: invert(); WIDTH: 290px; HEIGHT: 28px" src=/Q/.Wma type=audio/x-ms-wma autostart="true"loop="-1"volume="0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER一、音乐播放器源代码(神采飞扬版)P align=center><TABLE borderColor=#4f3256 align=center background=http://tech.china.com/zh_cn/home4u/sucai/gifanimation/line/0022.gif border=1><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"><P align=center><EMBED src=width=369 height=39type=audio/mpeg loop="-1" autostart="ture" volume="0"></P></TD></TR> </TBODY></TABLE></P>二、具体操作步骤1、在“BLOG发表文章”网页里,也即是写文章的网页里,写好文字后,选中文字上方的“查看HTML源代码”项(选项前的方框内出现√则为选中),这时我们看见原来的文字成了汉字、英文字母和一些诸如<、/、=等符号组成的乱码。
