मैं बनाया है एक संगीत खिलाड़ी का उपयोग कर JavaFX. हालांकि, मैं करने में सक्षम नहीं हूँ समझने के लिए कैसे मैं पता कर सकते हैं की अवधि के एक गीत मैं हूँ वर्तमान में खेल रहा है ।
संपादित करें: मैं जोड़ा गया है निम्नलिखित लाइनों के लिए अपने कोड और अब गीत अवधि दिखाई दे रहा है. हालांकि, मैं खेलने के लिए जब अगले गीत, गीत अवधि दिखाई नहीं देता है । यहाँ लाइनों है कि मैं करने के लिए जोड़ा गया कोड:
mediaPlayer.currentTimeProperty().addListener(new TimeListener());
TimeListener = new ChangeListener<Duration>()
{
@Override public void changed(ObservableValue<? extends Duration> o, Duration oldVal, Duration newVal)
{
//now newVal is of Duration class
}
};
}
public class TimeListener implements ChangeListener {
public void changed(ObservableValue o, Object oldVal, Object newVal) {
//Update time display with MediaPlayer's current time:
playTime.setText(newVal.toString());
}
}
यहाँ है मेरे कोड बनाने के लिए संगीत प्लेयर:
public class MusicController implements Initializable
{
@FXML
private ImageView trackLogo;
@FXML
private Button next, previous, pause, play, reset;
@FXML
private Slider VolumeSlider;
@FXML
private AnchorPane Panel;
@FXML
private Label playTime, appTitle, songTitle;
@FXML
private ProgressBar songProgressBar;
@FXML
private Media media;
private MediaPlayer mediaPlayer;
private File directory;
private File [] files;
private ArrayList<File> songs;
private int songNumber;
private Timer timer;
private TimerTask task;
private boolean running;
private ChangeListener<Duration> TimeListener;
@Override
public void initialize(URL url, ResourceBundle rb)
{
songs = new ArrayList<File>();
directory = new File("music");
files = directory.listFiles();
if(files!=null)
{
for(File file : files)
{
songs.add(file);
System.out.println(file);
}
}
media = new Media(songs.get(songNumber).toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.currentTimeProperty().addListener(new TimeListener());
songTitle.setText(songs.get(songNumber).getName());
VolumeSlider.valueProperty().addListener(new ChangeListener<Number>()
{
public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2)
{
mediaPlayer.setVolume(VolumeSlider.getValue() * 0.01);
}
});
TimeListener = new ChangeListener<Duration>()
{
@Override public void changed(ObservableValue<? extends Duration> o, Duration oldVal, Duration newVal)
{
//now newVal is of Duration class
}
};
}
public class TimeListener implements ChangeListener {
public void changed(ObservableValue o, Object oldVal, Object newVal) {
//Update time display with MediaPlayer's current time:
playTime.setText(newVal.toString());
}
}
public void playMedia()
{
beginTimer();
mediaPlayer.setVolume(VolumeSlider.getValue() * 0.01);
mediaPlayer.play();
}
public void pauseMedia()
{
cancelTimer();
mediaPlayer.pause();
}
public void resetMedia()
{
songProgressBar.setProgress(0);
mediaPlayer.seek(Duration.seconds(0));
}
public void previousMedia()
{
if (songNumber > 0)
{
songNumber--;
mediaPlayer.stop();
if(running)
{
cancelTimer();
}
media = new Media(songs.get(songNumber).toURI().toString());
mediaPlayer = new MediaPlayer(media);
songTitle.setText(songs.get(songNumber).getName());
playMedia();
}
else
{
songNumber = songs.size() - 1;
mediaPlayer.stop();
if(running)
{
cancelTimer();
}
media = new Media(songs.get(songNumber).toURI().toString());
mediaPlayer = new MediaPlayer(media);
songTitle.setText(songs.get(songNumber).getName());
playMedia();
}
}
public void nextMedia()
{
if (songNumber < songs.size() - 1)
{
songNumber++;
mediaPlayer.stop();
if(running)
{
cancelTimer();
}
media = new Media(songs.get(songNumber).toURI().toString());
mediaPlayer = new MediaPlayer(media);
songTitle.setText(songs.get(songNumber).getName());
playMedia();
}
else
{
songNumber = 0;
mediaPlayer.stop();
if(running)
{
cancelTimer();
}
media = new Media(songs.get(songNumber).toURI().toString());
mediaPlayer = new MediaPlayer(media);
songTitle.setText(songs.get(songNumber).getName());
playMedia();
}
}
public void beginTimer()
{
timer = new Timer();
task = new TimerTask()
{
public void run()
{
running = true;
double current = mediaPlayer.getCurrentTime().toSeconds();
double end = media.getDuration().toSeconds();
System.out.println(current/end);
songProgressBar.setProgress(current/end);
if (current/end ==1)
{
cancelTimer();
}
}
};
timer.scheduleAtFixedRate(task, 0, 1000);
}
public void cancelTimer()
{
running = false;
timer.cancel();
}
}
मैं पढ़ने की कोशिश की है Oracle दस्तावेज़ (https://docs.oracle.com/javase/8/javafx/media-tutorial/playercontrol.htm) और इस यूट्यूब वीडियो (https://www.youtube.com/watch?v=-D2OIekCKes) बनाने के लिए एक संगीत खिलाड़ी है ।
और मैं आभारी होंगे किसी भी मदद के लिए. अग्रिम में धन्यवाद!