在我的项目中,在启动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()
}