Identificar stop do MediaPlayer (JavaFX) [RESOLVIDO]

1 resposta
A

Pessoal,

Fiz algo aqui que, na minha limitada concepção, deveria funcionar.

Fiz um player, chamado mediaPlayer, que toca um vídeo. Funcionou legal.

Agora, quero monitorar o status desse mediaPlayer, e aparecer uma mensagem quando o vídeo acaba.
No start, fiz isso:

playerInt pI = new playerInt();
pI.setPlayer(mediaPlayer);

Thread trd = new Thread(pI);
trd.start()

Simples, coloquei o objeto pI dentro de uma nova Thread, que disparei em seguida.

A classe playerInt também é simples:

public class playerInt implements Runnable 
{
	MediaPlayer mediaPlayer;

	public void setPlayer (MediaPlayer player)
	{
		mediaPlayer = player;
	}
	
    public void run() 
    {
		while(true)
		{
			MediaPlayer.Status stat = mediaPlayer.getStatus();
			if(stat == MediaPlayer.Status.STOPPED)
				System.out.println("Stop from thread");
			else
				System.out.println("RUN thread!");
		};
    }
}

O que aconteceu foi o seguinte, o status PLAYING e UNKNOWN apareceram legal, mas o STOPPED não funcionou, mesmo depois do vídeo encerrado.
Porque isso aconteceu?

Abraços mestres!

Ney

1 Resposta

A

Funcionou aqui, mas de uma forma diferente (muito mais simples e leve!)

A criação da thread, que era quatro linhas, agora virou isso:

playerInt pI = new playerInt(); mediaPlayer.setOnEndOfMedia(pI);

A classe playerInt, que tinha um monte de coisa, virou isso:

public class playerInt implements Runnable { public void run() { System.out.println("HANDLER!!!!"); } }

Para os iniciantes:
Quando acaba o arquivo que está sendo tocado, chama essa nova Thread, automaticamente.
Não precisa de loop monitorando o Media Player, só essa funçãozinha já resolve. Molinho!

Abraço

Ney

Criado 2 de janeiro de 2013
Ultima resposta 2 de jan. de 2013
Respostas 1
Participantes 1