* 暂停/继续 播放
private fun audioToggle() {
mMediaPlayer?.run {
if (this.isPlaying) {
audioPause()
} else {
audioStart()
如果只有一个事件触发的话,可以这么来写。
播放器并没有自带restart()
方法,不过我们可以手动把播放位置改到初始值,并调用播放。
* 重新播放
private fun audioRestart() {
mMediaPlayer?.run {
seekTo(0)
audioStart()
seek_bar.progress = 0
tv_currentPosition.text = formatDuration(seek_bar!!.progress)
如果是下一首,可以调用reset()
重置,然后set新的数据源
。
及时的回收,有利于更好的性能
。
override fun onDestroy() {
mAgentWeb.webLifeCycle.onDestroy()
super.onDestroy()
cancelTimer()
mMediaPlayer?.run {
stop()
release()
mMediaPlayer = null
ok,到此就讲解完了。
写作不易,如果对你有用,点个赞吧 ^ - ^
然后,当用户点击播放按钮时,我们会根据当前播放状态执行相应的操作。当然,实际的音乐播放器可能会更复杂,例如添加播放列表、进度条、音量控制等功能,但这里的示例代码可以作为一个入门点,帮助你开始实现自己的音乐播放器。当然,实际的音乐播放器可能会更复杂,例如添加播放列表、进度条、音量控制等功能,但这里的示例代码可以作为一个入门点,帮助你开始实现自己的音乐播放器。接下来,我们需要在Activity或Fragment中创建一个MediaPlayer对象,并在需要播放音乐的地方进行初始化和控制。
android:requestLegacyExternalStorage=true
public class PermissionsManagement {
private static final String TAG = PermissionsManagement;
public static void requestMyPermissions(Activity
状态图mediastatu.jpg需要注意的是和camera的释放类似,调用release()后没法直接进入idle状态,所以mediaplayer的状态是有问题的,要置null自己的一个栗子:package yunhen.yunjia.aiservice.camera;import android.content.res.AssetFileDescriptor;import android.gr...
<br />前段时间在工作中遇到一个问题就是MediaPlayer的播放网络流媒体的时候,当没有完全下载完毕的时,我们调用seekTo的时候会触发OnCompletionListener,你们懂的咯,这样就直接播放下一首了。挺纠结的,所以就决定看看mediaplayer的源码咯,希望能从中找到解决的方法。<br />seekTo在MediaPlayer的调用流程如下图:<br /> <br /><br /> <br />在MediaPlayer.java中的seekTo是一个native修饰的方法<br /
android MediaPlaye.getDuration()获取不到在线音乐时长,看看mediaPlayer.getDuration()的源码,里面明确地说了,不支持在线内容,所以,根本原因就是它(不过我本地资源也获取不到)
* Gets the duration of the file.
* @return the duration in milliseconds, if no duration is available
* (fo
MediaPlayer必须在合适的状态下调用合适的方法,否则会出现异常,下面列出常见错误信息和说明:
1、E/MediaPlayer(11310): stop called in state 1
调用 stop()之前,MediaPlayer的状态不在【Started, Paused, Prepared
or PlaybackCompleted state】范围内。只有在这个范围内的状