【问题标题】:Media Player working only in debug mode媒体播放器仅在调试模式下工作
【发布时间】:2015-11-16 09:58:53
【问题描述】:

我正在使用 MediaPlayer 播放 .WAV 格式的音频文件。当我调试应用程序时,我可以播放文件,但是当我运行应用程序时,文件没有播放。

对此有一个similar issue,但没有提供解决方案。

下面是我正在使用的代码

MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(mContext, fileUri);// uri of the audio file
mMediaPlayer.prepare();
mMediaPlayer.setOnCompletionListener(this);    
mMediaPlayer.start();// to start the playback of the audio file

此代码仅在调试模式下工作,而在正常模式下不工作。

谢谢

【问题讨论】:

  • 您需要在onPreparedListener() of MediaPlayer 中添加mMediaPlayer.start();
  • 你在MediaPlayer准备好之前就开始了。
  • 最好使用mMediaPlayer.prepareAsync(); 而不是mMediaPlayer.prepare();
  • @activesince93 感谢您的回复。我想在按钮单击时播放音频文件,所以我不能使用 mMediaPlayer.start();在 onPreparedListener() 中。在准备之前我不会启动媒体播放器。
  • @ravi,你解决了这个问题吗?如果是,请分享正确答案,以便其他人得到帮助来解决同样的问题。

标签: android


【解决方案1】:

这就是我要说的:

btn_next.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

        try {
            mp.reset();
            mp.setDataSource(url.toString());
            mp.setOnErrorListener(this);
            mp.setOnPreparedListener(this);
            mp.setOnCompletionListener(this);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            Log.e(TAG, "SecurityException");
        } catch (IllegalStateException e) {
            Log.e(TAG, "IllegalStateException");
        } catch (IOException e) {
            Log.e(TAG, "IOException");
        }
        mp.prepareAsync();
    }
});

现在,override 方法 onPrepared()

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

如果您遇到任何问题,请在下方评论。

【讨论】:

  • 这不起作用。有没有其他方法可以在运行模式下播放声音?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
相关资源
最近更新 更多