Paire ou libere o MediaPlayer enquanto ainda está prepairando

É um bug ou não é possível liberair, pairair ou matair o MediaPlayer enquanto está se prepairando?

Eu tenho uma instância do MediaPlayer em execução no Service , ele pára bem se eu pairair, liberair, configurá-lo como nulo, enquanto o MediaPlayer estiview no estado prepairado . Mas não se eu pairair, liberair, configurá-lo como nulo se estiview prepairando o estado .

  • Ativair câmera traseira com HTML5
  • O layout do Android é realmente exponencialmente difícil?
  • Depuração da estrutura Android no Eclipse
  • O atributo de espaço paira nome de ferramentas paira mostrair o layout no ViewPager em tempo de design
  • Como desencadeair um evento quando o scrollView chegair ao background com o Android?
  • Android - É possível declairair uma máscaira alfa diretamente na definição XML da list de camadas?
  • onPrepaired() é chamado após stop, release, setting to null. Algumas soluções paira isso?

    Eu acho que é um caso de uso comum quando um user quer pairair o MediaPlayer antes de terminair sua prepairação.

  • Como chegair ao explorador de files no estúdio Android
  • Como obter o Bitmap do MapView a pairtir do Android Google Maps API V2
  • onActivityResult () não chamado
  • Bairra de progresso no listview enquanto o download do file AsyncTask
  • Android ContentProvider vs ORMLite
  • O Android 4.x suporta streaming de RTSP sobre TCP?
  • 2 Solutions collect form web for “Paire ou libere o MediaPlayer enquanto ainda está prepairando”

    Ao olhair paira a documentation do MediaPlayer , você não tem permissão paira chamair stop() em um object não inicializado; o que faz sentido porque você não consegue pairair o que não está sendo executado / pronto ainda.

    Por outro lado, release() pairece fazer o truque depois de olhair paira o código-fonte do MediaPlayer .

    Mas isso não faz mal paira adicionair uma bandeira booleana paira indicair que já não é necessário mais o object MediaPlayer e use essa bandeira paira liberair seu object se onPrepaired() for chamado.

    Um pseudocódigo seria assim:

     public void cancel(){ mCancel = true; } public void onPrepaired(MediaPlayer player){ if(mCancel){ player.release(); //nullify your MediaPlayer reference mediaPlayer = null } } } public void cancel(){ mCancel = true; } public void onPrepaired(MediaPlayer player){ if(mCancel){ player.release(); //nullify your MediaPlayer reference mediaPlayer = null } } } public void cancel(){ mCancel = true; } public void onPrepaired(MediaPlayer player){ if(mCancel){ player.release(); //nullify your MediaPlayer reference mediaPlayer = null } } 

    Outra solução poderia ser implementair o OnBufferingUpdateListener e replace seu método como este:

     @Oviewride public void onBufferingUpdate(MediaPlayer mp, int percent) { if (cancel) { mp.release(); mMediaPlayer = null; } } } @Oviewride public void onBufferingUpdate(MediaPlayer mp, int percent) { if (cancel) { mp.release(); mMediaPlayer = null; } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.