Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Media Player: Inicio llamado en estado 4 error (-38,0)

Este es el código que estoy usando para buscar un nombre de archivo (.mp3) dinámicamente de alguna otra clase como estoy teniendo muchos archivos mp3 en mi carpeta de activos:

playAudioButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FileName audio=new FileName(); String audioName=audio.getAudioName(count).toString(); if(audioName=="NO Audio") { Toast.makeText(getApplicationContext(), "No Audio for this page", Toast.LENGTH_SHORT).show(); } else { try { afd=getAssets().openFd(audioName + ".mp3"); mp = new MediaPlayer(); mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); mp.prepareAsync(); mp.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); } 

Log Cat:

 03-20 11:21:28.726: E/SpannableStringBuilder(4418): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 03-20 11:21:28.726: E/SpannableStringBuilder(4418): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 03-20 11:22:24.968: D/libEGL(4579): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so 03-20 11:22:24.976: D/libEGL(4579): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so 03-20 11:22:24.984: D/libEGL(4579): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 03-20 11:22:25.070: D/OpenGLRenderer(4579): Enabling debug mode 0 03-20 11:22:38.773: E/MediaPlayer(4579): start called in state 4 03-20 11:22:38.773: E/MediaPlayer(4579): error (-38, 0) 03-20 11:22:38.773: E/MediaPlayer(4579): Error (-38,0) 

Puntos a tener en cuenta: 1. He comprobado los subprocesos similares en el desbordamiento de la pila la respuesta está usando prepareAsync () 2. He utilizado prepareAsync ()

Gracias por adelantado.

  • Android mediaplyer seekTo inside onPrepared
  • MediaPlayer.setDataSource () y prepare () no funciona - android
  • Mediaplayer actualización de progreso a seekbar no suave?
  • ¿Cómo hacer una aplicación móvil DLNA android?
  • Android reproducir archivos de recursos desde el almacenamiento interno provoca que MediaPlayer.prepare dé IOException
  • Buffer de flujo de audio
  • ¿Por qué MediaPlayer muestra tanto el registro de Verbose en android?
  • Android MediaPlayer - cómo jugar en el STREAM_ALARM?
  • 2 Solutions collect form web for “Android Media Player: Inicio llamado en estado 4 error (-38,0)”

    También puede usar el método onPrepared() para llamar al método start de forma que start() se llame después de preparar MediaPlayer .

     mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub mp.start(); } }); 

    En lugar de utilizar este método preparedSync/prepare de MediaPlayer , sólo puede pasar la ruta del archivo convirtiendo en URI a MediaPlayer.create()

     MediaPlayer mediaPlayer = MediaPlayer.create(context, URI.parse("file://"+filePath)); 

    esto lo preparará y comenzará a jugar a sí mismo

    O de otra manera es use onPrepareListener() de MediaPlayer y luego de esto en preparada iniciar la reproducción

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.