问题更新:
===================================================2022.9.22======================================
在调用start方法后,打印isPlaying发现仍为false,不知为何


单步调试后发现mMediaPlayer.setOnPreparedListener()方式内部并未得到执行,直接跳过,导致mMediaPlayer.start()方法也未能得到执行。
跟着拉大锯老师敲的代码,mMediaPlayer.start()方法能够执行,且打印输出isPlaying值为true,但是最后报错如下:
先报error(1,-19),这个好像是prepare还没有完成就调用start方法(这个尝试在上面换成了异步的prepare也没能成功)
然后报错error(-38,0) E/MediaPlayer: Attempt to call getDuration without a valid mediaplayer
这个不知道是什么原因导致的

==========================================2022.9.21======================================================
这个是跟着拉大锯老师敲的:
程序能够跑到playOrPause()函数中,在执行完mMediaPlayer.start()函数后就开始出问题。
打印出来的log如下:

playOrPause()函数部分代码如下:

==================================================================================================
这个是根据网上的建议尝试修改:
根据网上的建议,尝试过使用prepareAsync()方法,但最后也会报异常
首先在initPlayer()方法中添加源文件

然后尝试使用prepareAsync()方法

点击播放按钮后得到的log信息如下:

RUN日志窗口打印的log如下:

希望老师能帮忙指导一下,不胜感激
根据日志表现有2个错误,但本质上其实是1个错误,都是状态管理问题不对,导致你调用的流程乱了,正常的MediaPlayer的播放过程应该是:
reset() > setDataSource(path) > prepare() > start() > stop() > reset()
根据日志来看,你是第一步就出现了问题,首先你初始化了播放器,设置了对应的资源,然后你这个时候想播放,但播放前你又有一个停止动作,你资源都还没播放,播放器怎么去停止?这就是为什么堆栈报错stop called in state 2了,你可以加一个判断是否正在播放,然后你再想做对应的暂停或者停止你再做,然后如果你想相当于重置整个过程,最后你可以调用一下reset然后再重新准备资源。
第二步还是我看你是设置了监听器的,那起码准备后播放应该是没问题,但你读写权限是否已经动态申请好了呢?还有,你的文件路径不要硬编码!IDE也给了你提示了,要从Android的API去获取