# einfacher mp3 player



## Rockfreak (13. Dez 2010)

Hi,
ich hoffe mal, dass ich hier richtig bin.
Ich muss für die Uni ein "kleines" JavaProjekt machen und ich hab mir einen MP3 Player rausgesucht.
Das Grundlayout hab ich auch schon und der "Eject"Button geht auch schon. Ich hab auch eine Player Demo aber ich bekomme die einfach nicht eingebunden. Hab auch schon andere FileChooser aus BÜchern probiert aber ausser Fehlermeldungen hat es nichts gebracht.
Ich programmiere mit Eclipse Build id: 20090920-1017 auf eiben Mac.

Hier die Klasse mit der ich das Fenster "mache"

```
import javax.swing.*; 
import java.applet.*; 
import java.awt.*;
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.File; 

import javax.media.ControllerEvent; 
import javax.media.ControllerListener; 
import javax.media.Manager; 
import javax.media.Player; 
import javax.media.RealizeCompleteEvent; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 


public class newWindow extends JFrame  
{
	protected static final long serialVersionUID = 1;
	protected ImageIcon play = new ImageIcon(newWindow.class.getResource("play.png"));
	protected ImageIcon stop = new ImageIcon(newWindow.class.getResource("stop.png"));
	protected ImageIcon pause = new ImageIcon(newWindow.class.getResource("pause.png"));
	protected ImageIcon eject = new ImageIcon(newWindow.class.getResource("eject.png"));
	private JButton buttonplay = new JButton (play);
	private JButton buttonstop = new JButton (stop);
	private JButton buttonpause = new JButton (pause);
	private JButton buttoneject = new JButton (eject);
	
	// private JPanel panel;
	
      public newWindow()                                                                    
     	{
    	  		 super("Fenster");                                                           
                 setSize(700,200);                            		// Fenster Größe
             	 setLocation(300,300);                                                    
             	 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	// Schließe Fenster und Programm beim beenden 
             	 setLayout(null);
             	
             	 int buttonx=100;
             	 int buttony=110;
             	 int buttonw=48;
             	 int buttonh=48;
             	 
               	 buttonstop.setBounds(200, buttony, buttonw, buttonh);
            	 buttonstop.setBorder(null);
             	 buttoneject.setBounds(50, buttony, buttonw, buttonh);
            	 buttoneject.setBorder(null);
             	 buttonplay.setBounds(buttonx, buttony, buttonw, buttonh);
             	 buttonplay.setBorder(null);
             	 buttonpause.setBounds(150, buttony, buttonw, buttonh);
            	 buttonpause.setBorder(null);
            	 
            	 add(buttonstop);
             	 add(buttoneject);
            	 buttoneject.setActionCommand("Öffnen");
             	 add(buttonplay);
             	 buttonplay.setActionCommand("Start");
             	 add(buttonpause);
             	 
             	
             	 // Menü-Leiste
             	 MenuBar mb = new MenuBar();	
           	            
             	 // Ein Menü
	             Menu m1 = new Menu("Datei");
	           	 mb.add(m1);

	           	 // Menüeinträge
	           	 MenuItem oeff = new MenuItem("Öffnen");
	           	 MenuItem schl = new MenuItem("Schließen");
	           	 
	           	 // Menue Action
	           	 MenueSchliessenService menueSchliessen = new MenueSchliessenService(this);
	           	 schl.addActionListener(menueSchliessen);
	           	 // Datai auswählen
	           	 OeffnenDialogClass odc = new OeffnenDialogClass();
	    		 oeff.addActionListener(odc);
	    		 // Datei abspielen
	           	 // MediaPlayerDemo mpd = new MediaPlayerDemo();
	           	 // start.addActionListener(mpd);
	    		 
	           	 setMenuBar(mb);
	           	 m1.add(schl);  
	           	 m1.add(oeff); 
	           	 
	           	 // Actionlistener für die Buttons 	 
	           	 buttoneject.addActionListener(odc);
	           	 // buttonplay.addActionListener(mpd);
	           	       	      	 
     	}
      
}
```

Hier der FileChooser

```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;

import javax.swing.JFileChooser;

public class OeffnenDialogClass implements ActionListener
{
	public void actionPerformed(ActionEvent ae)
	{
		String befehl = ae.getActionCommand();
		if (befehl.equals("Öffnen"))
		{
			final JFileChooser chooser = new JFileChooser("Verzeichnis wählen"); 
	        chooser.setDialogType(JFileChooser.OPEN_DIALOG); 
	        chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
	        final File file = new File("/home/usr"); 

	        chooser.setCurrentDirectory(file); 

	        chooser.addPropertyChangeListener(new PropertyChangeListener()
	        { 
	            public void propertyChange(PropertyChangeEvent e) 
	            { 
	                if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) 
	                        || e.getPropertyName().equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY))
	                { 
	                    final File g = (File) e.getNewValue(); 
	                } 
	            } 
	        }); 

	        chooser.setVisible(true); 
	        final int result = chooser.showOpenDialog(null); 

	        if (result == JFileChooser.APPROVE_OPTION) 
	        { 
	            File inputVerzFile = chooser.getSelectedFile(); 
	            String inputVerzStr = inputVerzFile.getPath(); 
	            System.out.println("Eingabepfad:" + inputVerzStr); 
	        } 
	        System.out.println("Abbruch"); 
	        chooser.setVisible(false);
		}
		}
}
```
Und die PlayerDemo

```
import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.File; 

import javax.media.ControllerEvent; 
import javax.media.ControllerListener; 
import javax.media.Manager; 
import javax.media.Player; 
import javax.media.RealizeCompleteEvent; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class MediaPlayerDemo extends JFrame 
{ 
    private Player player; 

    private File file; 

    public MediaPlayerDemo()
    { 
        super("Demonstrating the Java Media Player"); 

        JButton openFile = new JButton("Open file to play"); 
        openFile.addActionListener(new ActionListener() 
        { 
            public void actionPerformed(ActionEvent e) 
            { 
                openFile(); 
                createPlayer(); 
            } 
        }); 
        getContentPane().add(openFile, BorderLayout.NORTH); 

        setSize(300, 300); 
        show(); 
    } 

    private void openFile() 
    { 
        JFileChooser fileChooser = new JFileChooser(); 

        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
        int result = fileChooser.showOpenDialog(this); 

        // user clicked Cancel button on dialog 
        if (result == JFileChooser.CANCEL_OPTION) 
            file = null; 
        else 
            file = fileChooser.getSelectedFile(); 
    } 

    private void createPlayer()
    { 
        if (file == null) 
            return; 

        removePreviousPlayer(); 

        try { 
            // create a new player and add listener 
            player = Manager.createPlayer(file.toURL()); 
            player.addControllerListener(new EventHandler()); 
            player.start(); // start player 
        } catch (Exception e) 
        { 
            JOptionPane.showMessageDialog(this, "Invalid file or location", 
                    "Error loading file", JOptionPane.ERROR_MESSAGE); 
        } 
    } 

    private void removePreviousPlayer() 
    { 
        if (player == null) 
            return; 

        player.close(); 

        Component visual = player.getVisualComponent(); 
        Component control = player.getControlPanelComponent(); 

        Container c = getContentPane(); 

        if (visual != null) 
            c.remove(visual); 

        if (control != null) 
            c.remove(control); 
    } 

    public static void main(String args[]) 
    { 
        MediaPlayerDemo app = new MediaPlayerDemo(); 

        app.addWindowListener(new WindowAdapter() 
        { 
            public void windowClosing(WindowEvent e)
            { 
                System.exit(0); 
            } 
        }); 
    } 

    // inner class to handler events from media player 
    private class EventHandler implements ControllerListener 
    { 
        public void controllerUpdate(ControllerEvent e) 
        { 
            if (e instanceof RealizeCompleteEvent) 
            { 
                Container c = getContentPane(); 
                c.setBackground(new Color(255, 255, 204)); 

                // load Visual and Control components if they exist 
                Component visualComponent = player.getVisualComponent(); 

                if (visualComponent != null) 
                    c.add(visualComponent, BorderLayout.CENTER); 
                c.setBackground(new Color(255, 255, 204)); 
                Component controlsComponent = player.getControlPanelComponent(); 

                if (controlsComponent != null) 
                    c.add(controlsComponent, BorderLayout.SOUTH); 

                c.doLayout(); 
            } 
        } 
    } 
}
```

Ich hoffe, das ist jetzt nicht zuviel Code..
Danke für Tipps


----------



## Sonecc (13. Dez 2010)

Ich geb ma nur grundlegende Hinweise:
Wenns für die Uni ist, dann such dir aus, welche Sprache du verwendest. Sowas wie chooser und Oeffnen in einer Klasse ist suboptimal. In der Regel wird Englisch verwendet.
Desweiteren werden Klassennamen groß geschrieben.


----------



## VfL_Freak (13. Dez 2010)

Moin,



> aber ausser Fehlermeldungen hat es nichts gebracht


aha - und welche wären das ?

Wo genau hast Du denn welches Problem?

Gruß
Klaus


----------



## Rockfreak (13. Dez 2010)

Ja ok das mit der Großschreibung bei den Klassen war ja schon mal was 
Die durchdachte Arbeitsweise Denglish muss ich mir noch an bzw abgewöhnen.

Mein Problem ist, dass ich den einfachen Player nicht implementiert bekomme.
Würde da gern ne eigene Klasse haben die ich dann einbinde und dann auf den Playbutton legen möchte.


----------



## Rockfreak (14. Dez 2010)

so, der Player an sich funktioniert soweit.
Mir fehlen noch die Pause funktion und ein paar nette features wie: ID tag auslesen und anzeigen, die Zeit angeben (Spieldauer),  Lautstärke und Playliste.
Bin für Tipps oder Tutorial Empfehlungen echt dankbar...


----------



## AlexSpritze (14. Dez 2010)

Rockfreak hat gesagt.:


> ID tag auslesen und anzeigen, die Zeit angeben (Spieldauer)



Dafür würde ich dir eine Bibliothek empfehlen, die das Auslesen dieser Information für dich übernimmt. Bevor du selber die Bytes aus der MP3 interpretierst, was aufwändig und fehleranfällig sein kann.


----------



## Rockfreak (14. Dez 2010)

hab da nun auch hier in der suche etliches gefunden aber meist ging es um konvertierung, ok das ist dann eventuell der nächste Schritt.
Aber ich komme mit dem Bibliotheken nicht zurecht. Ich muss die doch erst bei mir "installieren" oder wie ist das?


----------



## AlexSpritze (17. Dez 2010)

Naja, du packst die Bibliotheken (irgendwelche jars) in ein Verzeichnis deiner Wahl und müsstest dann die Projekteigenschaften in Eclipse bearbeiten. Dort kannst du die jars eintragen und schon sollte dein Projekt diese nutzen können. (Benutze selber kein E. aber sollte nicht so schwer sein )

Dann schaust du noch auf die Seite der API, dort wird es sicher ein kleines How-To oder Tutorial geben, dass dir die ersten Schritte damit zeigt.


----------



## Rockfreak (20. Dez 2010)

Ja ok vielen Dank. Das mit den Bibliotheken hab ich soweit hinbekommen.
Der Player funktioniert soweit auch schon.
Was mir fehlt ist eben, die Titellänge und wenn möglich eben die ID Tags die auch gern nur mit schrift ausgeben werden sollen. Die Lösungen hier sind sehr umfangreich und meist auch ID Editoren aber das ist ja meilenweit an meinen Ansprüchen vorbei.


----------



## AlexSpritze (22. Dez 2010)

Also ich hatte mal eine ID3-Lib, die hat neben diesen Informationen ID3 auch die Titellänge, Frequenzangabe und sowas auslesen lassen. Auch wenn du nur Titellänge und ein paar ID3-Tags brauchst, würde sich die Benutzung einer Lib anbieten, wozu alles nochmal selber machen?

Der mp3Reader oder jd3Lib hat nur 159 kByte, das scheint recht überschaubar. Irgendwie so dann:


```
File yourFile = new File("path/to/file.mp3");
MP3File mp3FileObject = new MP3File(yourFile);
Id3v1Tag id31tag = mp3FileObject.getID3v1();
System.out.println("Now playing: "+id31tag.getArtist()+" – "+id31tag.getTitle());
```


----------



## Rockfreak (26. Dez 2010)

Hi, das sieht genau so aus wie ich mir das vorstelle. 
Aber mein Problem beginnt leider bei den Basics. Da wir bei unserem Prof leider nichts lernen, ja ich hab hier die lustigen Sachen im Forum drüber gelesen, weiß ich weder wie ich die lib einfüge noch wie ich dann mit den 20 Klassen umgehen soll.
Ich nutze einen Mac und Eclipse. Nur mal so. Sorry wenn ich mich zu dumm anstelle aber ich geb mir echt Mühe


----------



## CroniD (27. Dez 2010)

MP3 SPI for Java Sound MP3s abspielen und ID-Tags lesen. Auf der Seite findest du auch folgendes: jlGui - BasicPlayer - JavaSound API Mit der API kannst du sehr einfach einen Player bauen (was die Audio-Bearbeitung angeht, GUI musst du selbst bauen). Beispiele sind im Code enthalten. 

In Eclipse, Jars einbinden:
Rechts-Klick auf das Projekt, Eigenschaften auswählen, im neuen Dialog den Punkt "Java Build Path" auswählen, bei dem Tabreiter "Libraries" kannst du dann die Jars einbinden.


----------



## Rockfreak (5. Jan 2011)

Also es klappt immer besser, vielen Dank schon mal für die Antworten.
Ich bekomme nun den Artist, den Sondtitel und das Album genannt aber was mir immer noch fehlt ist die Songlänge. Da hab ich auch nichts in der Beschreibung gesehen.
Bei ((ID3v1) id31tag).getAlbum() wenn bei .get was anderes suche findet er es nicht.


----------



## CroniD (6. Jan 2011)

Zeig mal bisschen mehr Quellcode und sag welche Libs du verwendest. Sind ja nun paar mehr hier in dem Thread genannt worden. 

Aber generell würde ich nach irgendwas suchen was "lenght" heißt. Normalerweise wird die Länge als ID3-Tag in einer MP3 hinterlegt.


----------



## Rockfreak (8. Jan 2011)

Also das ist der Code den ich verwende um die ID3Tags auszulesen.
Ich nutze die jid3lib-0.3, dort gibt es nichts mit length() oder so. Nur Size und das ist dann die Bit-Zahl


```
fileNameArray = new String[selectedFile.length];
	            for( int i=0; i<=selectedFile.length-1; i++)
            	{
            		System.out.println(selectedFile[i].getName());		// get.Name zeigt nur den Namen und nicht den Pfad an
            		fileNameArray[i] = selectedFile[i].getName();
            		
            		MP3File mp3FileObject = null;
    				try {
    					mp3FileObject = new MP3File(selectedFile[x]);
    				} catch (TagException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    		        AbstractMP3Tag id31tag = mp3FileObject.getID3v1Tag();
    		        System.out.println("Now playing: "+((ID3v1) id31tag).getArtist()+" – "+((ID3v1) id31tag).getTitle()+" - "+((ID3v1) id31tag).getAlbum());
            	}	            
	        }
```


----------



## AlexSpritze (8. Jan 2011)

Du musst dir von der MP3File bzw. dem ID3-Tag den TLEn Frame besorgen. Da steht zumindest die Songlänge in ms drin, siehe hier.


----------



## Rockfreak (8. Jan 2011)

Ich hab das gefunden und auch nach Beispielen gegoogelt und gebingt aber ich kann damit nichts anfangen. Also was es macht ist mir bewusst aber nicht wie ich es anwenden kann.


----------



## AlexSpritze (8. Jan 2011)

Okeh, ich habe jetzt noch mal in meinem Projekt geschaut. Um die Songlänge zu ermitteln nutze ich folgenden Code der Tritonus Bibliothek:


```
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import org.tritonus.share.sampled.TAudioFormat;
import org.tritonus.share.sampled.file.TAudioFileFormat;

// ...
        File mp3File = ...
        AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(mp3File);
        AudioFormat baseFormat = baseFileFormat.getFormat();

        Map<String, Object> TAFFprop = ((TAudioFileFormat) baseFileFormat).properties();

        playingTime = (Long) (TAFFprop.get("duration"));
```


----------



## CroniD (8. Jan 2011)

AlexSpritze hat gesagt.:


> Du musst dir von der MP3File bzw. dem ID3-Tag den TLEn Frame besorgen. Da steht zumindest die Songlänge in ms drin, siehe hier.


Mit der aktuellen Version von jid3lib kann er bei vielen meiner MP3 Dateien die Länge nicht auslesen, obwohl die Länge als Tag hinterlegt ist. Na ja ...

Also ich habe mir auch mal die Mühe gemacht und ein kleines Beispiel angefertigt, was auf der MP3 SPI von javazoom basiert. Ist nur fix dahin programmiert, nicht sehr optimal, aber daran kannst du sehen wie du ein Tag auslesen kannst und falls das "duratation" nicht verfügbar ist, wie du mittels einem Loop die Länge ermitteln kannst (das braucht aber einige Sekunden). Hoffe das hilft dir weiter. 

Ach ja, um es auszuführen brauchst du MP3SPI 1.9.5 (MP3 SPI for Java - Sources), JLayer 1.0.1 (Java MP3 Player) und tritonus_share.jar (Tritonus: Plug-ins) in deinem Classpath.

```
import java.io.File;
import java.util.Map;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

import org.tritonus.share.sampled.TAudioFormat;
import org.tritonus.share.sampled.file.TAudioFileFormat;

public class Mp3IDtest {

	public static void play(File mp3File) throws Exception {
		AudioInputStream in = AudioSystem.getAudioInputStream(mp3File);
		AudioFormat baseFormat = in.getFormat();
		AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
				baseFormat.getSampleRate(),
				16,
				baseFormat.getChannels(),
				baseFormat.getChannels() * 2,
				baseFormat.getSampleRate(),
				false);
		AudioInputStream din = AudioSystem.getAudioInputStream(decodedFormat, in);
		byte[] data = new byte[4096];
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
		SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
		line.open(decodedFormat);
		if (line != null) {
			line.start();
			int nBytesRead = 0;
			while (nBytesRead != -1) {
				nBytesRead = din.read(data, 0, data.length);
				if (nBytesRead != -1) {
					line.write(data, 0, nBytesRead);
				}
			}
			line.drain();
			line.stop();
			line.close();
			din.close();
		}
		in.close();
	}
	
	/**
	 * Für eine Liste aller möglichen Properties siehe:
	 * [url=http://www.javazoom.net/mp3spi/docs/doc1.9.4/javazoom/spi/mpeg/sampled/file/MpegAudioFileFormat.html]MpegAudioFileFormat[/url]
	 * [url=http://www.javazoom.net/mp3spi/docs/doc1.9.4/javazoom/spi/mpeg/sampled/file/MpegAudioFormat.html]MpegAudioFormat[/url]
	 * 
	 * @param mp3File
	 * @param propertie
	 * @return das propertie Object oder null, falls es nicht vorhanden ist
	 */
	public static Object getFilePropertie(File mp3File, String propertie) {
		Object propValue = null;
		try {
			AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(mp3File);
			if (baseFileFormat instanceof TAudioFileFormat) {
				Map<?, ?> properties = ((TAudioFileFormat)baseFileFormat).properties();
				propValue = properties.get(propertie);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (propValue == null) {
			try {
				AudioFormat baseFormat = AudioSystem.getAudioFileFormat(mp3File).getFormat();
				if (baseFormat instanceof TAudioFormat) {
					Map<?, ?> properties = ((TAudioFormat)baseFormat).properties();
					propValue = properties.get(propertie);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return propValue;
	}
	
	public static long getDurationByLoop(File mp3File) throws Exception {
		AudioInputStream in = AudioSystem.getAudioInputStream(mp3File);
		AudioFormat baseFormat = in.getFormat();
		AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
				baseFormat.getSampleRate(),
				16,
				baseFormat.getChannels(),
				baseFormat.getChannels() * 2,
				baseFormat.getSampleRate(),
				false);
		AudioInputStream din = AudioSystem.getAudioInputStream(decodedFormat, in);
		byte[] data = new byte[4096];
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
		SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
		line.open(decodedFormat);
		float result = 0f;
		if (line != null) {
			int nBytesRead = 0;
			while (nBytesRead != -1) {
				nBytesRead = din.read(data, 0, data.length);
				if (nBytesRead != -1) {
					result += nBytesRead / (decodedFormat.getSampleRate() * decodedFormat.getFrameSize());
				}
			}
			line.drain();
			line.stop();
			line.close();
			din.close();
		}
		in.close();
		result = result * 1000 * 1000;
		return (long) result;
	}
	
	public static File[] showFileDialog() {
		JFileChooser fc = new JFileChooser();
		fc.setFileFilter(new FileNameExtensionFilter("MP3 Datei", "mp3"));
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fc.setMultiSelectionEnabled(true);
		int state = fc.showOpenDialog(null);
		if (state != JFileChooser.APPROVE_OPTION) {
			System.out.println("Aktion abgebrochen.");
			System.exit(0);
		}
		return fc.getSelectedFiles();
	}
	
	public static String getFormatedTime(long duration) {
		long sec, min;
		min = duration / 1000 / 1000 / 60;
		duration = duration - min * 60 * 1000 * 1000;
		sec = duration / 1000 / 1000;
		return (min < 10 ? "0"+min : min)+":"+(sec < 10 ? "0"+sec : sec);
	}
	
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}
		File[] selectedFile = showFileDialog();
		for (int i = 0; i < selectedFile.length; i++) {
			System.out.println(selectedFile[i].getName());
			try {
				Long tlen = (Long) getFilePropertie(selectedFile[i], "duration"); // in Mikrosekunden!
				if (tlen == null) {
					// vielleicht ist 'duration' nicht vorhanden, dann loope die mp3 datei
					tlen = getDurationByLoop(selectedFile[i]); // in Mikrosekunden!
				}
				System.out.println("Now playing");
				System.out.println("Artist: "+getFilePropertie(selectedFile[i], "author"));
				System.out.println("Title: "+getFilePropertie(selectedFile[i], "title"));
				System.out.println("Album: "+getFilePropertie(selectedFile[i], "album"));
				System.out.println("Länge: "+getFormatedTime(tlen));
//				play(selectedFile[i]);
			} catch (Exception e) {
				// in dem Code Block koennen mehrere Exceptions auftreten, daher fangen wir nur
				// die oberklasse ab
				e.printStackTrace();
			}
		}               
	}
}
```


----------

