Home Foros Foro dudas Foro de Java Reproductor MP3 Java Respuesta a: Reproductor MP3 Java

Respuesta a: Reproductor MP3 Java

Home Foros Foro dudas Foro de Java Reproductor MP3 Java Respuesta a: Reproductor MP3 Java

#20580

Daniel
Participante

En concreto es recorrer el arrayList donde tengo las canciones que vienen de un directorio.

En mi lógica, añadido los elementos del arrayList a una ListView . Posteriormente, los muestro al usuario con  una ObservableList .

Por último comparo los que selecciona el usuario con el ArrayList y mando el nombre de la canción por parámetro a una función que también tiene por parámetro la ruta.

Luego simplemente sigue el curso de la función para miPlayer.Play().

————————————————————————————————————————————————————————————————————————————————

CÓDIGO:package application;

 

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.util.ArrayList;

import java.util.Iterator;

 

import javafx.application.Application;

import javafx.beans.InvalidationListener;

import javafx.beans.Observable;

import javafx.beans.value.ChangeListener;

import javafx.beans.value.ObservableValue;

import javafx.collections.ObservableList;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.stage.FileChooser;

import javafx.stage.Stage;

import m.menu;

import javafx.scene.Node;

import javafx.scene.Scene;

import javafx.scene.control.*;

import javafx.scene.image.Image;

import javafx.scene.image.ImageView;

import javafx.scene.input.KeyCode;

import javafx.scene.input.KeyEvent;

import javafx.scene.media.Media;

import javafx.scene.media.MediaPlayer;

import javafx.scene.shape.Circle;

import javafx.scene.text.Font;

import javafx.scene.layout.*;

import javafx.fxml.FXMLLoader;

import javafx.geometry.Insets;

import javafx.geometry.Pos;

 

public class Main extends Application {

@Override

public void start(Stage primaryStage) {

try {

// ABRE DIRECTORIO PARA ESCOGER TODAS LAS CANCIONES

File file = new File(Ruta);

File[] mis_archivos = file.listFiles();

for (File f : mis_archivos) {

// System.out.println(f);

miAudio = new File(f.getAbsolutePath());

// System.out.println(miAudio.getName());

miMedia = new Media(miAudio.toURI().toString());

 

array_Ruta.add(miAudio);

array_Nombre_Musica.add(miAudio.getName().toString());

miPlayer = new MediaPlayer(miMedia);

miPlayer.setAutoPlay(false);

 

}

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

// TITULO DE LA CANCIÓN

 

nombre_cancion = new Label();

 

nombre_cancion.getStyleClass().add(“Label_Titulo”);

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

/*

* CREACIÓN DE LABEL DEL TEXTAREA , LIST VIEW Y OBSERVABLELIST

*/

LTextArea = new Label(“CANCIONES”);

LTextArea.getStyleClass().add(“Label”);

 

Lista_Vi = new ListView<String>();

Lista_Vi.getStyleClass().add(“Lista”);

for (String t : array_Nombre_Musica) {

// System.out.println( t);

Lista_Vi.getItems().add(t);

 

}

 

Lista_Vi.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

 

// Tamaño de la lista en la app

Lista_Vi.setPrefHeight(100);

Lista_Vi.setPrefWidth(20);

Lista_Vi.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {

@Override

public void changed(ObservableValue observable, Object oldValue, Object newValue) {

menssage = “”;

list_Obser = Lista_Vi.getSelectionModel().getSelectedItems();

 

for (String i : list_Obser) {

menssage += i;

nombre_cancion.setText(i);

 

 

}

 

 

 

 

 

 

}

});

 

 

 

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

// MENU

menuBar = new MenuBar();

Abrir_Archivo = new Menu(“Archivo”);

 

 

// Menu menuEdiccion = new Menu(“Edicion”);

menuItemNuevo = new MenuItem(“Nuevo”);

 

Abrir_Archivo.getItems().addAll(menuItemNuevo);

menuItemNuevo.setOnAction(e -> respuesta(e, miPlayer));

menuBar.getMenus().addAll(Abrir_Archivo);

 

// IMAGEN

p = new Image(“file:/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/Logo_limpio.png”);

pho = new ImageView(p);

pho.setFitWidth(280);

pho.setPreserveRatio(true);

 

 

 

// BOTONES

adelantar= botones(adelantar, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/adelante.png”, miPlayer);

atrasar = botones(atrasar, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/atrasar.png”, miPlayer);

play = botones(play, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/Play.png”, miPlayer);

pause = botones(pause, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/pausa.png”, miPlayer);

stop = botones(stop, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/stop.png”, miPlayer);

apagar = botones(apagar, “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/apgar.png”, miPlayer);

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

/*

* BARRA DE VOLUME.

* Se crean los componentes necesarios para crear im Slider que será el

* encargado de modificar el volumen.

*

* Posteriormente se debe de evaluar la propiedad y quedar a la escucha. Con el

* método que nos brinda ChangeListener – como su nombre indica, se puede

* cambiar el actor de escucha-. Usaremos el método de la clase MediaPlayer para

* implementar el volumen que nos llega de evaluar las 3 posibilidades que le

* hemos dado.

*/

 

Label Volumen = new Label(“VOLUMEN”);

Volumen.getStyleClass().add(“Label”);

Slider vol = new Slider(0, 50, 100);

vol.getStyleClass().add(“Slider”);

vol.setValue(50);

vol.valueProperty().addListener(new ChangeListener<>() {

 

@Override

public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) {

// TODO Auto-generated method stub

miPlayer.setVolume(vol.getValue() * 0.01);

}

});

 

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

// ARQUITECTURA DEL SISTEMA

 

HBox vertical_1 = new HBox(20, pho);

vertical_1.setAlignment(Pos.CENTER);

 

HBox horrizontal_0 = new HBox(20, nombre_cancion);

horrizontal_0.setAlignment(Pos.CENTER);

 

HBox vertical_2 = new HBox(20, atrasar,play,adelantar, pause, stop, apagar);

vertical_2.setAlignment(Pos.CENTER);

 

HBox HORIZONTAL_VOLUMEN = new HBox(20, Volumen, vol);

HORIZONTAL_VOLUMEN.setAlignment(Pos.CENTER);

 

VBox vertical_Area = new VBox(20, LTextArea, Lista_Vi);

vertical_Area.setAlignment(Pos.CENTER);

 

VBox vertical = new VBox(20, menuBar, vertical_1, horrizontal_0, vertical_2, HORIZONTAL_VOLUMEN,

vertical_Area);

scene = new Scene(vertical, 550, 800);

 

scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm());

primaryStage.setScene(scene);

primaryStage.setTitle(“REPRODUCTOR AUDIO”);

primaryStage.show();

} catch (Exception e) {

e.printStackTrace();

}

}

 

public static void main(String[] args) {

launch(args);

}

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

//——————————————————————————————————————————————-

// MÉTODOS

private Button botones(Button Accion, String ruta_archivo, MediaPlayer miPlayer) {

String mensaje = “File:” + ruta_archivo;

Image img = new Image(mensaje);

ImageView view = new ImageView(img);

view.setFitHeight(25);

view.setPreserveRatio(true);

Accion = new Button();

Accion.setPrefSize(70, 50);

Accion.setGraphic(view);

if (ruta_archivo.equals(“/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/Play.png”))

Accion.setOnAction(e -> acciones(menssage,Ruta));

if (ruta_archivo.equals(“/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/stop.png”))

Accion.setOnAction(e ->  detener());

if (ruta_archivo.equals(“/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/pausa.png”))

Accion.setOnAction(e -> pause());

if (ruta_archivo.equals(“/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/apgar.png”))

Accion.setOnAction(e -> apagar());

if(ruta_archivo.equals(“/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/img/adelante.png”))

Accion.setOnAction(e -> prueba(menssage,Ruta));

 

miPlayer.setVolume(0.80);

 

return Accion;

 

}

 

private void respuesta(ActionEvent e, MediaPlayer miPlayer) {

MenuItem item = (MenuItem) e.getSource();

System.out.println(“Has pulsado el botón” + ” ” + item.getText());

 

if (item.getText().equals(“Nuevo”)) {

System.out.println();

 

System.exit(0);

}

 

}

private void acciones(String menssage,String Ruta) {

 

ruta_completa = Ruta+”/”+menssage;

//System.out.println(ruta_completa);

miAudio = new File(ruta_completa);

// System.out.println(miAudio.getName());

miMedia = new Media(miAudio.toURI().toString());

 

array_Ruta.add(miAudio);

array_Nombre_Musica.add(miAudio.getName().toString());

miPlayer = new MediaPlayer(miMedia);

miPlayer.play();

}

private void detener() {

miPlayer.stop();

}

private void pause() {

miPlayer.pause();

}

 

private void apagar() {

System.exit(0);

}

 

private void adelante(String menssage, String Ruta) {

posicion = 0;

control =0;

if (prox == false) {

// acciones(mensaje,Ruta);

for (String r : array_Nombre_Musica) {

if (r.contains(menssage)) {

posicion = array_Nombre_Musica.indexOf(r);

System.out.println(“La pocision del la cancion  ” + r + ” es ” + array_Nombre_Musica.indexOf(r));

control ++;

System.out.println(“Punto de control ” + control);

if (array_Nombre_Musica.indexOf(r) == posicion) {

posicion++;

System.out.println(“La pocision del la cancion nueva  es ” + posicion + ” ”

+ array_Nombre_Musica.get(posicion));

mensaje = array_Nombre_Musica.get(posicion);

nombre_cancion.setText(array_Nombre_Musica.get(posicion));

prox = true;

control ++;

System.out.println(“Punto de control ” + control);

//posicion = posicion +posicion;

 

if(prox == true) {

posicion = posicion +posicion;

 

System.out.println(“La pocision del la cancion nueva  es ” + posicion + ” ”

+ array_Nombre_Musica.get(posicion));

nombre_cancion.setText(array_Nombre_Musica.get(posicion));

 

}

 

}

}

acciones(mensaje, Ruta);

}

}

 

 

 

 

 

}

private void prueba(String menssage,String Ruta) {

miPlayer.stop();

adelante(menssage,Ruta);

 

 

 

}

 

 

 

private Image v;

private ImageView pho, pho2, I_play, I_pause, I_stop;

private Image p, p2;

private Button play, stop, pause,adelantar,atrasar,apagar;

private File miAudio, miAudio_2;

private Media miMedia, miMedia_2;

private MediaPlayer miPlayer, miPlayer_2, miPlayer_3, twis;

private ProgressBar Linea_cancion;

private InputStream stream;

private Image img;

private ImageView iv;

private String nom_cancion, menssage,ruta_completa,mensaje;

private Label nombre_cancion, LTextArea;

private MenuBar menuBar;

private Menu Abrir_Archivo, Cerrar;

private menu nuevo;

private MenuItem menuItemNuevo;

private Stage primaryStage;

private FileChooser archivo, archivo_2;

private File fila, fila_2, audio;

private int control,posicion,contador;

private Scene scene;

private TextArea Area;

private ListView<String> Lista_Vi;

private ObservableList<String> list_Obser;

private Logica uno;

private ArrayList array_formato = new ArrayList();

private ArrayList<String> array_Nombre_Musica = new ArrayList();

private ArrayList<File> array_Ruta = new ArrayList();

private final String Ruta = “/Volumes/NO NAME/JSP/FX_AUDIO_EJERCICIO/src/audio”;

private boolean prox = false;

 

}