开发者社区> 问答> 正文

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();
    }


  }

"

展开
收起
montos 2020-06-04 21:11:09 13958 0
1 条回答
写回答
取消 提交回答
  • "

    异常信息呢,

    而且Android自带的播放器功能有限,有些格式不标准,所以会出现这种情况

    ######回复 @九离天 : 好的,谢谢您了######回复 @海洋清风 : 1 Android自带的还有Audio Track ;2 极端点你可以自己编译ffmpeg或者libav;3 省事点你可以用 vitamio,ijk,Exo,vlc 等等现成的开源项目,不过这些项目不只有音频播放。 异常信息可能不在你的App那个log显示,在所有的那个logcat里。######这个没有报异常,就是有时候会出现这样的情况,请问如果不用MediaPlayer,那我应该用什么呢?"
    2020-06-04 22:32:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载