开发者社区> 问答> 正文

时会出现只播放了一部分就停止了,这是什么原因啊?:报错 

android MediaPlayer 播放音频文件的时候,有

android MediaPlayer 播放音频文件的时候,有时会出现只播放了一部分就停止了,这是什么原因啊?
下面是播放方法,水平不高,写的不太好,各位见谅。
/**    * 播放的方法    * @param path    */   public synchronized void play(final String path)   {

    try     {

      if (mediaPlayer == null)       {         mediaPlayer = new MediaPlayer();       }         mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);       mediaPlayer.setDataSource(path);       mediaPlayer.prepare();       mediaPlayer.start();       mediaPlayer.setVolume(0.5f, 0.5f);       // 设为播放状态       // isPlaying = true;

      //更改按钮的北京颜色       tv.setBackgroundColor(Application.get().getResources().getColor(R.color.main_title));       // tv.setText("播放中...");

      // 播放完毕之后的回掉函数       mediaPlayer.setOnCompletionListener(new OnCompletionListener()       {         @Override         public void onCompletion(MediaPlayer arg0)         {           // 这里在调用play()可以实现单曲循环           // isPlaying = false;

          mediaPlayer.release();           mediaPlayer = null;

          ContextConstant.voideInfoView = null;           ContextConstant.player = null;

          tv.setBackgroundColor(Application.get().getResources().getColor(R.color.voice_state_normal_bg));

          ContextConstant.PLAYER_ORDERID = null;

          if (ContextConstant.VIV != null)           {             ContextConstant.VIV.setVoicePlayingBg();           }

          ContextConstant.VIV = null;

          ToolVoiceList.autoPlay();

        }       });

      mediaPlayer.setOnErrorListener(new OnErrorListener()       {

        @Override         public boolean onError(MediaPlayer mp, int what, int extra)         {           isPlaying = false;           ToolShow.showShort("播放错误:错误类型:" + what + "错误码:" + extra);

          tv.setBackgroundColor(Application.get().getResources().getColor(R.color.voice_state_normal_bg));           // tv.setText("播放语音");

          return false;         }       });

    } catch (Exception e)     {       e.printStackTrace();     }

  }

展开
收起
kun坤 2020-06-04 21:10:02 621 0
1 条回答
写回答
取消 提交回答
  • 异常信息呢,
    而且Android自带的播放器功能有限,有些格式不标准,所以会出现这种情况 ######回复 @九离天 : 好的,谢谢您了######回复 @海洋清风 : 1 Android自带的还有Audio Track ;2 极端点你可以自己编译ffmpeg或者libav;3 省事点你可以用 vitamio,ijk,Exo,vlc 等等现成的开源项目,不过这些项目不只有音频播放。 异常信息可能不在你的App那个log显示,在所有的那个logcat里。######这个没有报异常,就是有时候会出现这样的情况,请问如果不用MediaPlayer,那我应该用什么呢?

    2020-06-08 10:43:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Flash Player最新安全特性分析 及绕过思路 立即下载
Flash Player最新安全特性分析及绕过思路 立即下载
面向失败设计 立即下载