Get album, artist, title,
/*
* Copyright (c) 2011, Pro JavaFX Authors
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of JFXtras nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* AudioPlayer2.java - Playing audio files in JavaFX 2.0.
*
*/
//package projavafx.audioplayer2;
import java.net.URL;
import javafx.application.Application;
import javafx.collections.MapChangeListener;
import javafx.collections.MapChangeListener.Change;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.effect.Reflection;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
/**
*
* @author dean
*/
public class Main extends Application {
private Media media;
private MediaPlayer mediaPlayer;
private Label artist;
private Label album;
private Label title;
private Label year;
private ImageView albumCover;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
createControls();
createMedia();
final Scene scene = new Scene(createGridPane(), 800, 400);
// final URL stylesheet = getClass().getResource("media.css");
// scene.getStylesheets().add(stylesheet.toString());
primaryStage.setScene(scene);
primaryStage.setTitle("Audio Player 2");
primaryStage.show();
}
private GridPane createGridPane() {
final GridPane gp = new GridPane();
gp.setPadding(new Insets(10));
gp.setHgap(20);
//gp.add(albumCover, 0, 0, 1, GridPane.REMAINING);
gp.add(title, 1, 0);
gp.add(artist, 1, 1);
gp.add(album, 1, 2);
gp.add(year, 1, 3);
final ColumnConstraints c0 = new ColumnConstraints();
final ColumnConstraints c1 = new ColumnConstraints();
c1.setHgrow(Priority.ALWAYS);
gp.getColumnConstraints().addAll(c0, c1);
final RowConstraints r0 = new RowConstraints();
r0.setValignment(VPos.TOP);
gp.getRowConstraints().addAll(r0, r0, r0, r0);
return gp;
}
private void createControls() {
artist = new Label();
artist.setId("artist");
album = new Label();
album.setId("album");
title = new Label();
title.setId("title");
year = new Label();
year.setId("year");
final Reflection reflection = new Reflection();
reflection.setFraction(0.2);
// final URL url = getClass().getResource("resources/defaultAlbum.png");
// final Image image = new Image(url.toString());
// albumCover = new ImageView(image);
// albumCover.setFitWidth(240);
// albumCover.setPreserveRatio(true);
// albumCover.setSmooth(true);
// albumCover.setEffect(reflection);
}
private void createMedia() {
try {
media = new Media("http://traffic.libsyn.com/dickwall/JavaPosse373.mp3");
media.getMetadata().addListener(new MapChangeListener<String, Object>() {
@Override
public void onChanged(Change<? extends String, ? extends Object> ch) {
if (ch.wasAdded()) {
handleMetadata(ch.getKey(), ch.getValueAdded());
}
}
});
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setOnError(new Runnable() {
@Override
public void run() {
final String errorMessage = media.getError().getMessage();
// Handle errors during playback
System.out.println("MediaPlayer Error: " + errorMessage);
}
});
mediaPlayer.play();
} catch (RuntimeException re) {
// Handle construction errors
System.out.println("Caught Exception: " + re.getMessage());
}
}
private void handleMetadata(String key, Object value) {
if (key.equals("album")) {
album.setText(value.toString());
} else if (key.equals("artist")) {
artist.setText(value.toString());
} if (key.equals("title")) {
title.setText(value.toString());
} if (key.equals("year")) {
year.setText(value.toString());
} if (key.equals("image")) {
albumCover.setImage((Image)value);
}
}
}
Related examples in the same category