Estoy reproduciendo canciones de sdcard con la barra de búsqueda. Mientras obtengo la duración de la canción, obtengo Intento de llamar a getDuration sin un mediaplayer válido y con la excepción de estado ilegal. el nombre de archivo y la ruta son válidos one.i intenté mucho tiempo no pude obtener la solución. y cómo mover la barra de búsqueda mientras se reproduce la canción. Por favor, ayúdame. mi código:Intento de llamar a getDuration sin un reproductor multimedia válido en el reproductor multimedia en Android
Button play,pause,stop;
SeekBar seek;
MediaPlayer mediaPlayer;
SurfaceView sv;
boolean isPlaying = false;
play.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
playsong(filename);
}
});
private void playsong(String filename2) {
try{
Log.e("filename2",filename2);
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(filename2);
seek.setMax(mediaPlayer.getDuration());
mediaPlayer.prepare();
mediaPlayer.start();
myHandler.post(runn);
isPlaying = true;
mediaPlayer.setOnCompletionListener(this);
}
catch(Exception ex){
Log.e("sdcard-err2:",""+ex);
}
}
private Handler myHandler = new Handler();
final Runnable runn = new Runnable()
{
public void run()
{
if (mediaPlayer != null)
{
if (isPlaying)
{
try
{
int currentPosition = mediaPlayer.getCurrentPosition();
seek.setProgress(currentPosition);
} catch (Exception e) {
e.printStackTrace();
}
sv.postDelayed(runn, 150);
}
}
}
};
mis errores de registro gato:
05-17 09:46:43.578: ERROR/filename2(1670): /sdcard/The Dance Theme.mp3
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Attempt to call getDuration without a valid mediaplayer
05-17 09:46:43.594: ERROR/MediaPlayer(1670): error (-38, 0)
05-17 09:46:43.594: ERROR/MediaPlayer(1670): prepareAsync called in state 0
05-17 09:46:43.594: ERROR/sdcard-err2:(1670): java.lang.IllegalStateException
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Error (-38,0)
gracias, funciona. –