Java ME Exception beim Abspielen von Musik

stevey

Aktives Mitglied
Hey Leute,
da der eingebaute Mp3 Player auf meinem Handy (Samsung S5230) keine Möglichkeit bietet, meine Lieder in einer zufälligen Reihenfolge abzuspielen, hab ich mir gedacht, dass ich das ja selbst machen könnt. Es klappt soweit auch ganz gut, nur leider wird in manchen Fällen folgende Exception ausgeworfen :"unable to realize - buffering fail". Dies geschiet bei ganz normalen mp3-Liedern, die der eingebaute Mp3 Player problemlos abspielen kann. Ich konnte noch keine Gesetzmäßigkeit feststellen, aber habe so die Vermutung, dass es hautsächlich bei größeren Dateien (>5mb) passiert. Hier ist mal das bisschen Code:

Java:
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Random;
import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.file.FileSystemRegistry;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.media.*;
import javax.microedition.midlet.*;

public class RandomMusicPlayer extends MIDlet implements PlayerListener{
	Display display;
	Form form;
	Vector fileNames;
	Player player;
	
	public RandomMusicPlayer() {
		display = Display.getDisplay(this);
		form = new Form("Random Music Player");
		fileNames = new Vector();
		
		try {
			FileConnection fc = (FileConnection)Connector.open("file:///Mmc/Sounds/MyMusik/");
			Enumeration enumeration = fc.list("*", true);
			while(enumeration.hasMoreElements()) {
				fileNames.addElement(enumeration.nextElement().toString());
			}
			int rnd = new Random().nextInt(fileNames.size());
			form.append("Random: "+rnd+"\n");
			form.append("Title: "+fileNames.elementAt(rnd)+"\n");
			InputStream is = Connector.openInputStream("file:///Mmc/Sounds/MyMusik/"+fileNames.elementAt(rnd));
			player = Manager.createPlayer(is, "audio/mp3");
			player.addPlayerListener(this);
			player.start();
		} catch (Exception e) {
			form.append("Exception: "+e.getMessage());
		}
	}

	protected void startApp() throws MIDletStateChangeException {
		display.setCurrent(form);
	}
	
	protected void pauseApp() {
		// TODO Auto-generated method stub
		
	}
	
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		
	}

	public void playerUpdate(Player p, String s, Object o) {
		if(s.equals(PlayerListener.END_OF_MEDIA)) {
			try {
				int rnd = new Random().nextInt(fileNames.size());
				form.append("Random: "+rnd+"\n");
				form.append("Title: "+fileNames.elementAt(rnd)+"\n");
				InputStream is = Connector.openInputStream("file:///Mmc/Sounds/MyMusik/"+fileNames.elementAt(rnd));
				player = Manager.createPlayer(is, "audio/mp3");
				player.addPlayerListener(this);
				player.start();
			} catch (Exception e) {
				form.append("Exception: "+e.getMessage());
			}
		}
	}

}

ich hoffe ihr könnt mir genauer sagen, woran es liegt und vor allem wie ichs beheben kann.
danke, euer stevey
 
sry für den Doppelpost, aber ich würde das Thema hier gerne nochmal aufgreifen, da es momentan wieder "wichtig" wäre.

danke, euer stevey
 
Ich würde mir mal den Dateinamen anschauen. Falls dieser Leerzeichen oder Sonderzeichen beinhaltet ggf. mal mit einem schönen Namen testen. ?!?
 
also, der aufruf von player.prefetch() und player.realize() bringt nichts und bei den Dateinamen ist mir auch nichts Besonderes aufgefallen, sie beinhalten zwar alles mögliche(Leerzeichen, eckige Klammern...) allerdings kann er diese einwandfrei abspielen...

trotzdem danke für eure Hilfe 🙂
 

Zurück
Oben