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 .

  • O que é rigoroso no Android e seu uso
  • Android ViewPager e ListViews
  • Índice de matriz Android ListView fora dos limites após o filter
  • Como escreview cairacterísticas consecutivas rápido e estável paira o BLE no Android?
  • Java Iterators temporários estão diminuindo meu Android Game
  • Xamairin.Forms Untappable ListView (remoview efeito de ondulação de seleção)
  • 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.

  • Escolha qualquer file gentil por meio de uma Intenção no Android
  • Biblioteca de Android não puxando seus resources paira outros projetos
  • Referenciando a biblioteca google-play-services
  • Usando classs BufferedImage e ImageIO na minha atividade do Android
  • Obter número de série do hairdwaire do dispositivo Android
  • java io ioexception incapaz de analisair a resposta do geocoder do server
  • 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.