JavaFXで簡単な音楽再生プログラムを作成中です。指定されたディレクトリ内のMP3ファイルを1曲ずつ順番に流すというものです。以下がソースです。
// List型の変数musicListにディレクトリ内のmp3ファイルのパス名を入れていきます。
List<String> musicList = new ArrayList<String>();
File dir = new File("/home/hogehoge/ミュージック/album1/");
File[] list = dir.listFiles();
for (int i=0; i<list.length; i++) {
if(list[i].getName().contains(".mp3")) {
musicList.add(list[i].toString());
}
}
// for文でmusicList内の曲を順番に全部流したいですが、次から次に曲が流れてしまいます。
for(Iterator it = musicList.iterator(); it.hasNext();) {
Media m = new Media(new File(it.next().toString()).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(m);
mediaPlayer.play();
System.out.println(mediaPlayer.getStopTime().toSeconds());
//System.out.println(it.next());
}
どうもご回答ありがとうございます。
MediaPlayerの挙動っていうか、このプログラムだと1曲が終わる前に次々と曲を読み込んでしまうっていうことなんです。
プログラムの方で1曲が終わってから次の曲を再生するみたいにかければいいんですが、その方法がわからなくて。。。
ご回答どうもありがとうございました。
No.2ベストアンサー
- 回答日時:
検索すれば出てくるものだなぁ.
どうもありがとうございました。私が検索してもヒットしませんでした。。紹介していただいたURLの2番目に私のと全く同じ目的のプログラムがありました(^^;
試行錯誤をして無事できました。以下が該当部分のソースです。
for (int i=0; i<mediaPlayers.size(); i++) {
MediaPlayer currentPlayer = mediaPlayers.get(i); // メディアプレーヤーズ配列変数のi番目を現在のプレーヤーとする
MediaPlayer nextPlayer = mediaPlayers.get((i+1) % mediaPlayers.size()); // 次の変数をnextプレーヤーとする
currentPlayer.setOnEndOfMedia(new Runnable() { // 現在のプレーヤーの終了シグナル時に現在のプレーヤーを終了させ(こうしないと終了しない)
@Override public void run() { // 次の曲をスタートするように設定する
currentPlayer.stop(); // 以上で曲の設定終わり
nextPlayer.play();
}
});
}
mediaPlayers.get(0).play(); // 曲をスタートする
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- VPN 何これ 1 2022/04/19 01:32
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
【Eclipse】パッケージ・エクス...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
JADで*.jarごとデコンパイルす...
-
「削除するか、クラスパスの正...
-
Eclipseで、クラスを新規作成す...
-
Java ファイルへの保存(書き込...
-
【Eclipse】逆コンパイルでエラ...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
EclipseでHTTP404エラーが出る。
-
Jarコマンドでマニフェストファ...
-
java クラスファイルとソースコ...
-
EclipseでのJSP・Servlet開発に...
-
jarファイルの解凍ができない
-
「メイン・マニフェスト属性が...
-
jdbcドライバのjarファイルにク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
earファイルを展開する方法
-
【Eclipse】パッケージ・エクス...
-
JADで*.jarごとデコンパイルす...
-
プログラム実行の際に、「ソー...
-
jdbcドライバのjarファイルにク...
-
「削除するか、クラスパスの正...
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
コンパイルした後 java (class...
-
【Eclipse】逆コンパイルでエラ...
-
Javaアプリケーションのアイコ...
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
おすすめ情報
Tacosanへの補足ではなく回答者の方全員への補足を書かせていただきます。
https://totomo.net/785.htmの下の方にJMFを使ったメディアプレイヤーのサンプルが載ってまして、
「こうしないと、次々に新しいファイルを再生してしまい、何重奏にもなってしまいます。
PlayMusic pm = new PlayMusic();
String tmps = "c:\\mousugunerujikan.wav";
pm.play( tmps );
do{}while( pm.flug );
pm.flug = true;
tmps = "c:\\mousugunerujikan2.wav";
pm.play( tmps ); 」
↑とあります。
JavaFXでやりたいのですが、検索してもOracleのドキュメントを見ても中々情報が載っていません。