「Java/swing/サンプル/MP3プレイヤーサンプル(JLayer,BasicPlayer)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
&ref(BasicPlayerでMP3再生.png)
* サンプルダウンロード
ソース:&ref(BasicPlayerSample.java)
実行可能形式:&ref(BasicPlayerSample.zip)
* サンプルソース BasicPlayerSample.java
#highlight(java){{
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.io.File;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import javazoom.jlgui.basicplayer.BasicController;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;
// JMF MP3 Plugin
// http://www.oracle.com/technetwork/java/javase/download-137625.html
public class BasicPlayerSample extends JFrame {
// ベーシックプレイヤー
BasicPlayer player;
// Swing用変数、定数
// ボタン用テキスト 停止
final static String STOP = "Stop";
// ボタン用テキスト 再生
final static String PLAY = "Play";
// ボタン用テキスト 一時停止
final static String PAUSE = "Pause";
// タイトル
final static String TITLE = "BasicPlayerでmp3再生";
final static String FILE_NAME = "ファイル名:";
// 再生ボタン
JButton bPlay;
// 曲名ラベル
JLabel label;
public static void main(String[] args) {
new BasicPlayerSample();
}
// コンストラクタ
public BasicPlayerSample() {
setTitle(TITLE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(200, 100, 300, 100);
setLayout(new FlowLayout());
// ドロップターゲット設定
new DropTarget(this, DnDConstants.ACTION_COPY,
new MyDropTargetListener());
// ラベル設置
label = new JLabel(" mp3ファイルをドロップしてください。");
label.setPreferredSize(new Dimension(getWidth() - 10, 20));
add(label);
add(getHr(2000, 0));
// 再生、停止ボタン設置
bPlay = new JButton(PLAY);
bPlay.addActionListener(new bPlayAction());
JButton bStop = new JButton(STOP);
bStop.addActionListener(new bStopAction());
add(bPlay);
add(bStop);
// BasicPlayerのインスタンス作成
player = new BasicPlayer();
setVisible(true);
addComponentListener(new ComponentAdapter() {
// ウィンドウサイズが変化したらラベルのサイズ変更
@Override
public void componentResized(ComponentEvent e) {
label.setPreferredSize(new Dimension(getWidth() - 10, 20));
}
});
}
// 水平線
public JSeparator getHr(int width, int hight) {
JSeparator sp = new JSeparator(JSeparator.HORIZONTAL);
sp.setPreferredSize(new Dimension(width, hight));
return sp;
}
// 再生ボタンのアクションクラス
class bPlayAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
int status = player.getStatus();
if (status == BasicPlayer.PAUSED) {
// 一時停止の場合、一時停止を解除します
resume();
} else if (status == BasicPlayer.STOPPED) {
// 停止中の場合、再生開始します
play();
} else if (status == BasicPlayer.PLAYING) {
// 再生中の場合、一時停止します
pause();
}
} catch (Exception ex) {
// 握りつぶす
}
}
}
// 停止ボタンのアクションクラス
class bStopAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
stop();
} catch (Exception ex) {
// 握りつぶす
}
}
}
// 一時停止
private void pause() throws BasicPlayerException {
// playMode = PLAY_MODE_PAUSE;
player.pause();
bPlay.setText(PLAY);
}
// 一時停止解除
private void resume() throws BasicPlayerException {
player.resume();
bPlay.setText(PLAY);
}
// 再生
private void play() throws BasicPlayerException {
player.play();
bPlay.setText(PAUSE);
}
// 停止
private void stop() throws BasicPlayerException {
player.stop();
bPlay.setText(PLAY);
}
// 開く
private void open(File file) throws BasicPlayerException {
// ラベル設定
label.setText(FILE_NAME + file.getName());
// 取得したファイルを開く
player.open(file);
play(); // 再生
}
// ドロップターゲットリスナー
// ドロップされたファイルを受け取り、最初のファイルだけを再生します
class MyDropTargetListener extends DropTargetAdapter {
@Override
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
boolean b = false;
try {
if (dtde.getTransferable().isDataFlavorSupported(
DataFlavor.javaFileListFlavor)) {
b = true;
List<File> list = (List<File>) dtde.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
// 最初のファイルだけ取得
File file = list.get(0);
open(file);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dtde.dropComplete(b);
}
}
}
}
}}
* 解説
特に難しい事もなく、ダウンロードしたBasicPlayerのzipに入っていた「BasicPlayerSample」を真似してちょいちょいと書いたら簡単にできてしまいました。
自力でマルチスレッドする必要もなく、BasicPlayerのインスタンスを作成して、mp3ファイルオープンして、playメソッドを呼ぶだけ。
stop()で停止、pause()で一時停止、resume()で再開、簡単にmp3が再生できます。
&ref(BasicPlayerでMP3再生.png)
* サンプルダウンロード
ソース:&ref(BasicPlayerSample.java)
実行可能形式:&ref(BasicPlayerSample.zip)
* サンプルソース BasicPlayerSample.java
#highlight(java){{
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.io.File;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import javazoom.jlgui.basicplayer.BasicController;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;
// JMF MP3 Plugin
// http://www.oracle.com/technetwork/java/javase/download-137625.html
public class BasicPlayerSample extends JFrame {
// ベーシックプレイヤー
BasicPlayer player;
// Swing用変数、定数
// ボタン用テキスト 停止
final static String STOP = "Stop";
// ボタン用テキスト 再生
final static String PLAY = "Play";
// ボタン用テキスト 一時停止
final static String PAUSE = "Pause";
// タイトル
final static String TITLE = "BasicPlayerでmp3再生";
final static String FILE_NAME = "ファイル名:";
// 再生ボタン
JButton bPlay;
// 曲名ラベル
JLabel label;
public static void main(String[] args) {
new BasicPlayerSample();
}
// コンストラクタ
public BasicPlayerSample() {
setTitle(TITLE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(200, 100, 300, 100);
setLayout(new FlowLayout());
// ドロップターゲット設定
new DropTarget(this, DnDConstants.ACTION_COPY,
new MyDropTargetListener());
// ラベル設置
label = new JLabel(" mp3ファイルをドロップしてください。");
label.setPreferredSize(new Dimension(getWidth() - 10, 20));
add(label);
add(getHr(2000, 0));
// 再生、停止ボタン設置
bPlay = new JButton(PLAY);
bPlay.addActionListener(new bPlayAction());
JButton bStop = new JButton(STOP);
bStop.addActionListener(new bStopAction());
add(bPlay);
add(bStop);
// BasicPlayerのインスタンス作成
player = new BasicPlayer();
setVisible(true);
addComponentListener(new ComponentAdapter() {
// ウィンドウサイズが変化したらラベルのサイズ変更
@Override
public void componentResized(ComponentEvent e) {
label.setPreferredSize(new Dimension(getWidth() - 10, 20));
}
});
}
// 水平線
public JSeparator getHr(int width, int hight) {
JSeparator sp = new JSeparator(JSeparator.HORIZONTAL);
sp.setPreferredSize(new Dimension(width, hight));
return sp;
}
// 再生ボタンのアクションクラス
class bPlayAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
int status = player.getStatus();
if (status == BasicPlayer.PAUSED) {
// 一時停止の場合、一時停止を解除します
resume();
} else if (status == BasicPlayer.STOPPED) {
// 停止中の場合、再生開始します
play();
} else if (status == BasicPlayer.PLAYING) {
// 再生中の場合、一時停止します
pause();
}
} catch (Exception ex) {
// 握りつぶす
}
}
}
// 停止ボタンのアクションクラス
class bStopAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
stop();
} catch (Exception ex) {
// 握りつぶす
}
}
}
// 一時停止
private void pause() throws BasicPlayerException {
// playMode = PLAY_MODE_PAUSE;
player.pause();
bPlay.setText(PLAY);
}
// 一時停止解除
private void resume() throws BasicPlayerException {
player.resume();
bPlay.setText(PLAY);
}
// 再生
private void play() throws BasicPlayerException {
player.play();
bPlay.setText(PAUSE);
}
// 停止
private void stop() throws BasicPlayerException {
player.stop();
bPlay.setText(PLAY);
}
// 開く
private void open(File file) throws BasicPlayerException {
// ラベル設定
label.setText(FILE_NAME + file.getName());
// 取得したファイルを開く
player.open(file);
play(); // 再生
}
// ドロップターゲットリスナー
// ドロップされたファイルを受け取り、最初のファイルだけを再生します
class MyDropTargetListener extends DropTargetAdapter {
@Override
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
boolean b = false;
try {
if (dtde.getTransferable().isDataFlavorSupported(
DataFlavor.javaFileListFlavor)) {
b = true;
List<File> list = (List<File>) dtde.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
// 最初のファイルだけ取得
File file = list.get(0);
open(file);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dtde.dropComplete(b);
}
}
}
}
}}
* 解説
特に難しい事もなく、ダウンロードしたBasicPlayerのzipに入っていた「BasicPlayerSample」を真似してちょいちょいと書いたら簡単にできてしまいました。
自力でマルチスレッドする必要もなく、BasicPlayerのインスタンスを作成して、mp3ファイルオープンして、playメソッドを呼ぶだけ。
stop()で停止、pause()で一時停止、resume()で再開、簡単にmp3が再生できます。
* コメント
#pcomment(reply)