在Android Studio中使用Java调用setPlaybackParams()时如何防止MediaPlayer启动?

Raw*_*ani 5 java android android-mediaplayer

在我的项目中,我需要在MediaPlayer启动之前设置播放参数(当用户单击Button时MediaPlayer将启动)。但是当我使用下面给出的代码设置播放参数时,MediaPlayer自动启动。

mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(1.5f));
Run Code Online (Sandbox Code Playgroud)

现在,我该如何阻止它开始呢?

(你可以说,我可能只是在单击按钮时设置参数,但它不会工作,因为我有几个MediaPlayer来设置参数。)

Dat*_*Tat 2

根据MediaPlayer文档:

公共无效setPlaybackParams(PlaybackParams参数)

使用 PlaybackParams 设置播放速率。该对象将其内部 PlaybackParams 设置为输入,但当输入速度为零时,该对象会记住先前的速度。这允许对象在调用 start() 时恢复到之前的速度。在准备对象之前调用它不会更改对象状态。对象准备好后,以零速度调用它相当于调用pause()。对象准备好后,以非零速度调用它相当于调用 start()

我怀疑你mediaPlayer.prepare()在设置参数之前调用或者你已经使用了mediaPlayer.create()(这相当于同时调用mediaPlayer.setDataSource()和两者。所以,你间接调用了),在这种情况下,播放器将在设置参数时开始播放,完全按照描述在文档中。mediaPlayer.prepare()mediaPlayer.prepare()

因此,使用mediaPlayer.setDataSource()然后设置播放参数(这样它就不会自动启动mediaPlayer)。在那之后打电话mediaPlayer.prepare()之前打电话mediaPlayer.start()

  • 你说对了。我没有调用**mp.prepare()**,但是我调用了**mp.create()**,这相当于调用**mp.setDataSource()**和**mp.prepare()* * 同时。所以,我间接调用了**mp.prepare()**。如果您更新描述此问题的答案(**mp.create()** 问题),我将接受您的答案。 (2认同)