当前位置: 首页 > 知识库问答 >
问题:

音频文件未使用mediaController播放?

澹台逸明
2023-03-14

尝试使用mediacontroller通过url播放音频文件

但我有一个错误:

09-11 10:28:23.970:E/MediaPlayer(912):尝试在没有有效MediaPlayer的情况下调用getDuration 09-11 10:28:23.970:E/MediaPlayer(912):错误(-38,0)09-11 10:28:23.990:E/MediaPlayer(912):尝试在错误状态下执行seekTo:mPlayer=0x5d425340,mCurrentState=0

我在这里查看了各种答案,但没有解决。我尝试在onPrepared()

mMediaPlayer = new MediaPlayer();
mMediaController = new MediaController(this);
mMediaController.setMediaPlayer(TextToSpeechActivity.this);
mMediaController.setAnchorView(findViewById(R.id.audioView));


try {
    mMediaPlayer.setDataSource(getSoundUrl());

    mMediaPlayer.prepare();
} catch (IOException e) {
    Log.e("PlayAudioDemo", "Could not open file  for playback.", e);
}

mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
            mHandler.post(new Runnable() {
                    public void run() {
                                           //did not help
                        int duration = mMediaPlayer.getDuration();
                            mMediaController.show(10000);
                            mMediaPlayer.start();
                    }
            });
    }
});

getSoundUrl()返回声音文件(wav)的URL,它可以工作,因为如果我不实现媒体控制器,这首歌就会播放。代码很长,所以让我知道我需要添加哪一部分。

共有1个答案

巴星华
2023-03-14

我自己设法解决了这个问题:

我添加了更多调试:

try {
    mMediaPlayer.setDataSource(getSoundUrl());
    mMediaPlayer.prepare();

} catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

然后,我没有使用setOnPREaredListener()来设置侦听器,而是在活动中实现了如下所示:

public class TextToSpeechActivity  
extends FragmentActivity implements MediaPlayerControl, OnPreparedListener  {

然后onPrepared()

public void onPrepared(MediaPlayer mediaPlayer) {
    Log.d("mylog", "onPrepared");
    mMediaController.setMediaPlayer(this);
    mMediaController.setAnchorView(findViewById(R.id.audioView));

    mHandler.post(new Runnable() {
      public void run() {

          mMediaController.setEnabled(true);
          mMediaController.show();
      }
    });
  }

瞧!!

 类似资料:
  • 问题内容: 我想创建一个Android应用程序,该应用程序是Internet广播电台的客户端。我想让它看起来像是Android原生的吗?但是我与Android API逻辑和文档相混淆。我得到的是我需要MediaPlayer和MediaController类。我是对的,有没有很好的Android AUDIO播放器示例? 特别是,我对如何一起使用和类非常感兴趣。 UPD: 最后,我得到了代码,该代码正

  • 问题内容: 我正在模拟器中测试我的应用。 我正在下载文件,并以这种方式获取本地文件: 现在,我想使用AVAudioPlayer播放此文件,但是我总是遇到此错误: 播放代码: 我应该如何播放? 问题答案: 在iOS8下,您保存的路径在启动期间将无效。您看到的ID“ E5F13797-A6A8-48A1-B3C3-FBC3D7A03151”将随每次启动而更改。 解决方案是保存文件名而不是完整路径,并通

  • 有了一个机器人,我试着用discord在一个音频通道中播放一个音频文件(mp3)。js、ffmpeg和opusscript。 基本上,这就是它的工作原理: 因此,音频播放,但在结束前停止(例如,对于5s音频文件,它在3s后停止)。机器人留在频道中,我可以再次播放,但对于我的所有文件,它在结束前停止。我怎样才能解决这个问题?

  • 问题内容: 我不了解pyaudio的示例材料。看来他们写了整个小程序,这让我失望了。 如何只播放一个音频文件? 格式不是问题,我只想知道播放音频文件所需的最少代码。 问题答案: 这个例子对我来说似乎很清楚。您只需将示例另存为playwav.py调用即可: 带有一些额外注释的wave示例:

  • 问题内容: 我正在用HTML5和Javascript制作游戏。 如何通过Javascript播放游戏音频? 问题答案: 如果您不想弄乱HTML元素: 这使用了接口,该接口播放音频的方式与element相同。 如果需要更多功能,我使用了howler.js库,发现它简单实用。

  • 函数名称: 播放音频 函数功能: 在后台播放指定的声音文件 函数方法 media.playAudio(path,vol,flag) 参数 类型 必填 说明 path string 是 音频文件名,支持 mp3、m4a、m4r、ogg、wav vol string 否 音频音量,不写默认,使用当前设置的音量 flag string 否 是否循环播放,不写默认为 false - 不循环,true -