在Android Studio中使用Java调用setPlaybackParams()时,如何防止MediaPlayer启动?
在我的项目中,我需要在启动MediaPlayer之前设置播放参数(MediaPlayer将在用户单击按钮时启动)。但是当我使用下面给出的代码设置播放参数时,MediaPlayer会自动启动在Android Studio中使用Java调用setPlaybackParams()时,如何防止MediaPlayer启动?,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,在我的项目中,我需要在启动MediaPlayer之前设置播放参数(MediaPlayer将在用户单击按钮时启动)。但是当我使用下面给出的代码设置播放参数时,MediaPlayer会自动启动 mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(1.5f)); 现在,我该如何阻止它开始呢 (您可以说,我可能只是在单击按钮时设置参数,但它不起作用,因为我有几个MediaPlayers来设置参数。)根据Media
mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(1.5f));
现在,我该如何阻止它开始呢
(您可以说,我可能只是在单击按钮时设置参数,但它不起作用,因为我有几个MediaPlayers来设置参数。)根据
MediaPlayer
s文档:
public void setPlaybackParams(PlaybackParams params)
使用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()
}
你明白了。我没有调用mp.prepare(),但我调用了mp.create(),这相当于同时调用mp.setDataSource()和mp.prepare()。因此,我间接地调用了mp.prepare()。如果您更新描述此问题的答案(mp.create()问题),我将接受您的答案。