alguien sabe como usar el setMediaTime de la clase Player???

Victor Morales Rosales
11 de Noviembre del 2011
hola a todos, estoy programando un metronomo para celular con el java wireless toolkit, usando la libreria Player, y necesito iniciar un archivo wav desde un tiempo determinado. Buscando en la red supe que para eso existe el metodo setMediaTime, pero al llamar al metodo y pasarle un valor long el programa no reproduce ningun sonido, en otra pagina vi q le pasaban un parametro tipo Time pero al compilar no reconoce esa clase. aqui dejo las dos formas que he intentado hacerlo sin ningun resultado:

beat.setMediaTime(50000)
beat.setMediaTime(new Time(50))

espero q alguno de ustedes me pueda ayudar.
saludos

David Carrero
12 de Agosto del 2026

Player.setMediaTime(long) existe y es el método correcto, no necesitas ninguna clase Time (esa referencia que encontraste probablemente es de otra API, no de MIDP/MMAPI). El parámetro es un long en microsegundos, no milisegundos, ese es un primer punto donde mucha gente se equivoca al calcular el valor.

Pero el motivo más habitual de que «no suene nada» al llamar a setMediaTime es el estado del Player en el momento de la llamada. Solo puedes hacer seek de forma fiable cuando el Player está en estado PREFETCHED o STARTED, nunca en REALIZED a secas ni antes. Si lo llamas demasiado pronto, muchas implementaciones no lanzan excepción, simplemente ignoran la llamada en silencio, y es justo el comportamiento que describes.

El orden correcto sería:

player.realize();
player.prefetch();
player.setMediaTime(2_000_000L); // 2 segundos, en microsegundos
player.start();

Además, setMediaTime devuelve el tiempo real al que se posicionó (puede no ser exacto si el formato no permite seek fino, como algunos WAV comprimidos), así que conviene capturar el valor de retorno para comprobar que el seek realmente se aplicó donde esperabas, en vez de asumirlo.

David