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



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

mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(1.5f));

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

(你可以说,我可能只是在点击按钮时设置参数,但它不起作用,因为我有几个MediaPlayer要设置参数。(

根据MediaPlayer的文档:

公共无效集PlaybackParams(PlaybackParams-params(

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

我怀疑您在设置参数之前调用了mediaPlayer.prepare(),或者您已经使用了mediaPlayer.create()(相当于同时调用mediaPlayer.setDataSource()mediaPlayer.prepare()。因此,您间接调用了mediaPlayer.prepare()(,在这种情况下,玩家将在设置参数时开始玩游戏,正如文档中所述。

因此,使用mediaPlayer.setDataSource(),然后设置播放参数(这样它就不会自动启动mediaPlayer(。之后呼叫mediaPlayer.prepare(),然后呼叫mediaPlayer.start()

如果您需要在不重新启动的情况下更改速度,您可以在更改速度之前检查播放状态,然后使用此信息停止播放:mediaPlayer是您的mediaPlayer实例,速度是您的速度值

var isCurrentlyPlaying:Boolean=mediaPlayer!!.isPlaying
mediaPlayer!!.setPlaybackParams(mediaPlayer!!.getPlaybackParams().setSpeed(speed))
if (!isCurrentlyPlaying) {
mediaPlayer!!.pause()
}

相关内容

  • 没有找到相关文章

最新更新