【问题标题】:Attempt to call getDuration in wrong state: mPlayer=0x0, mCurrentState=1 How can I solve it?尝试在错误状态下调用 getDuration:mPlayer=0x0, mCurrentState=1 我该如何解决?
【发布时间】:2020-12-17 07:44:50
【问题描述】:

我是一名新手开发者,正在尝试在 android 上制作音频播放器。

在 Youtube (https://www.youtube.com/watch?v=hNbXrlrWzGY&list=PL9vy4y29rrd4x5pAbowit8gpjsXAai0yF&index=8) 上,

我在 18:19 用同样的方式实现它,但它在 Youtube 视频中播放,但我没有。

我也尝试在这里应用内容Media Player called in state 0, error (-38,0)

但音乐仍然没有播放。

这是我的代码。

    musicPlayer = new MediaPlayer();
    MediaController controller = new MediaController(this);
    try {
        musicPlayer.setDataSource(song.getPath());
        musicPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    String duration = millisecondsToString(musicPlayer.getDuration());`

那个 YouTube 和我做的方式有什么区别?

谢谢。

++我在 onClick() 中调用 start()

public void onClick(View v) {
    switch(v.getId()) {
        case R.id.playbtn :
            if(musicPlayer.isPlaying()) {
                musicPlayer.pause();
                playbtn.setBackgroundResource(R.drawable.resume);

            } else {
                musicPlayer.start();
                playbtn.setBackgroundResource(R.drawable.play);

            }
            break;

【问题讨论】:

    标签: java android android-studio audio


    【解决方案1】:

    首先对不起我的英语。

    您是否调用了该方法:player.start()? .

    如果没有,则需要在播放器准备成功时调用它。

    当准备就绪回调时,它可能有一个监听器。

    收到事件时调用player.start()

    或者像这样调用player.autoStart()

    方法名可能不退出但可能类似

    【讨论】:

    • 我将 start() 附加到按钮上,以便玩家在按下按钮时调用 start()。这会是个问题吗?
    • 我修改了正文,添加了一个调用 start() 的部分。
    猜你喜欢
    • 2021-03-31
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多