62,614
社区成员
发帖
与我相关
我的任务
分享
class Shengyin {
AudioClip aau1;
public Shengyin(String string){
try {
URL cb1;
File f1 = new File(string);
cb1 = f1.toURL();
aau1 = Applet.newAudioClip(cb1);
aau1.loop();//循环播放 aau.loop() 单曲 aau.stop()停止播放
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
package org.mediaplayer.mp3.core;
import java.io.File;
import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
//播放音乐的线程类
public abstract class PlayApplication extends Application {
// 正在播放
public final static int STARTED = 1;
// 播放器未实例化
public final static int ISNULL = 0;
// 非播放状态
public final static int UNKNOWN = -1;
// 播放器
private MediaPlayer mediaPlayer;
// 音量
private double volume = 1D;
public volatile boolean continue_play = true;
/**
* 播放状态
*/
public int getPlayerState() {
if (null == mediaPlayer)
return ISNULL;
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING)
return STARTED;
return UNKNOWN;
}
/**
* 获取当前播放时间
*/
public double getCurrentTime() {
return mediaPlayer.getCurrentTime().toSeconds();
}
public void setCurrentTime(double seconds) {
}
/**
* 获取当前媒体的总时间
*/
public double getTotalTime() {
return mediaPlayer.getTotalDuration().toSeconds();
}
/**
* 完全停止播放
*/
public void stopplay() {
continue_play = false;
synchronized (playLock) {
playLock.notifyAll();
}
}
/**
* 下一曲
*/
public void nextplay() {
if (getPlayerState() == ISNULL) {
startplay();
return;
}
continue_play = true;
synchronized (playLock) {
playLock.notifyAll();
}
}
/**
* 暂停播放/恢复播放
*/
public int pauseplay() {
if (getPlayerState() == ISNULL) {
startplay();
return 1;
}
if (getPlayerState() == STARTED) {
mediaPlayer.pause();
return 0;
} else {
mediaPlayer.play();
return 1;
}
}
/**
* 设置声音增量
*/
public void setVolume(double f) {
volume = f;
mediaPlayer.setVolume(f);
}
public double getVolume() {
if (volume != mediaPlayer.getVolume())
volume = mediaPlayer.getVolume();
return volume;
}
public void play(Song song) {
try {
if (mediaPlayer != null)
mediaPlayer.stop();
File musicFile = song.getFile();
Media media = new Media(musicFile.toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setOnEndOfMedia(new Runnable() {
public void run() {
nextplay();
}
});
mediaPlayer.setVolume(volume);
mediaPlayer.play();
} catch (Exception e) {
nextplay();
}
}
/**
* 由子类实现如何播放下一曲,该方法必须调用play()方法以启动播放
*/
public abstract void playnext();
/**
* 启动播放环境,该方法中必须调用 startRunnable()方法启动播放线程
*/
public abstract void startplay();
public void startRunnable() {
continue_play = true;
new Thread(playRunnable).start();
}
/**
* 播放线程
*/
private Runnable playRunnable = new Runnable() {
public void run() {
while (continue_play) {
if (mediaPlayer != null) {
mediaPlayer.stop();
}
playnext();
try {
if (getPlayerState() == STARTED) {
synchronized (playLock) {
playLock.wait();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer = null;
}
}
};
/**
* 播放锁
*/
private Object playLock = new Object();
}
http://download.csdn.net/detail/akemi_homura/4940525