Salve ragazzi, ho scritto un'applicazione in java me per un video player per cellulari ma mi ha un errore che non riesco a capire come risolvere, mi potete aiutare??
I sorgenti sono i seguenti:

Il main:

import java.io.IOException;

import javax.microedition.lcdui.Display;
import javax.microedition.media.MediaException;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeExcepti on;

public class VideoDemo extends MIDlet implements Runnable
{
private Display display = null;

public VideoDemo() { display = Display.getDisplay(this); }

protected void startApp() throws MIDletStateChangeException { new Thread(this).start(); }
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
protected void pauseApp() {}

public void run()
{
PlayerCanvas player;
try
{
player = new PlayerCanvas();
display.setCurrent(player);
player.start();
}
catch (IOException e) { e.printStackTrace(); }
catch (MediaException e) { e.printStackTrace(); }
}
}


e l'oggetto PlayerCanvas:


import java.io.IOException;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.TimeBase;

import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.VolumeControl;

public class PlayerCanvas extends Canvas implements Player
{
public Player player = null;

private static final String FILE_URL = "http://www.isfperugia.org/bistecca.mpg";
private static final int VOLUME_START = 50;
private static final String STOP_LABEL = "STOP";
private static final String PLAY_LABEL = "PLAY";
private static final String PAUSE_LABEL = "PAUSE";

private VideoControl vc = null;
private VolumeControl volCont = null;
private String playerState = STOP_LABEL;

public PlayerCanvas() throws IOException, MediaException { buildPlayer(); }
private void buildPlayer() throws IOException, MediaException
{
player = Manager.createPlayer(FILE_URL);
player.realize();
if ((vc = (VideoControl) player.getControl("VideoControl")) != null)
{
vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
vc.setDisplayLocation((getWidth() - vc.getSourceWidth())/2, (getHeight() - vc.getSourceHeight())/2);
vc.setVisible(true);
}
if ((volCont = (VolumeControl) player.getControl("VolumeControl")) != null) volCont.setLevel(VOLUME_START);
}

protected void keyPressed(int key)
{
super.keyPressed(key);
if ((getGameAction(key)==Canvas.DOWN) && (volCont.getLevel() > 0)) volCont.setLevel(volCont.getLevel() - 10);
else if ((getGameAction(key)==Canvas.UP) && (volCont.getLevel() < 80)) volCont.setLevel(volCont.getLevel() + 10);
else if ((getGameAction(key) == Canvas.RIGHT) && (playerState == PAUSE_LABEL))
{
try { start(); }
catch (MediaException e) { e.printStackTrace(); }
}
else if (playerState == STOP_LABEL)
{
try
{
buildPlayer();
start();
}
catch (IOException e) { e.printStackTrace(); }
catch (MediaException e) { e.printStackTrace(); }
}
else if ((getGameAction(key) == Canvas.LEFT) && (playerState == PLAY_LABEL))
{
try { stop(); }
catch (MediaException e) { e.printStackTrace(); }
}
else if (playerState == PAUSE_LABEL) close();
repaint();
}

protected void paint(Graphics g)
{
g.setColor(0,0,255);
g.fillRect(0, 0, getWidth(), getHeight());

// Disegno indicatore volume con quadrati bianchi
g.setColor(255, 255, 255);
for (int k = 0; k < (volCont.getLevel()/10); k++) g.fillRect((3*k)*5, 5, 5, 5);

// Riporto stato del lettore video
g.drawString(playerState, getWidth()/2, getHeight() - 10, Graphics.BASELINE | Graphics.HCENTER);
}

public void addPlayerListener(PlayerListener arg0) { }
public void close() { }
public void deallocate() { }
public String getContentType() { return null; }
public long getDuration() { return 0; }
public long getMediaTime() { return 0; }
public int getState() { return 0; }
public TimeBase getTimeBase() { return null; }
public void prefetch() throws MediaException { }
public void realize() throws MediaException { }
public void removePlayerListener(PlayerListener arg0) { }
public void setLoopCount(int arg0) { }
public long setMediaTime(long arg0) throws MediaException { return 0; }
public void setTimeBase(TimeBase arg0) throws MediaException { }
public void start() throws MediaException { }
public void stop() throws MediaException { }
public Control getControl(String arg0) { return null; }
public Control[] getControls() { return null; }
}


l'errore che riporta è il seguente Warning:


To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.


che si verifica appena provo a mettere il player in play

Qual'è il problema?[COLOR=blue][COLOR=blue]