Android多媒体——媒体start流程分析(十三)
当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。
一、媒体播放流程
对于媒体播放流程的 Java 层和 JNI 层与前面的示例基本相同,这里不再重复展示了,我们直接从 mediaplayer.cpp 中的 start() 方法开始分析。
1、mediaplayer.cpp
源码位置:/frameworks/av/media/libmedia/mediaplayer.cpp
status_t MediaPlayer::start()
{ALOGV("start");……if (mCurrentState & MEDIA_PLAYER_STARTED) {ret = NO_ERROR;} else if ( (mPlayer != 0) && ( mCurrentState & ( MEDIA_PLAYER_PREPARED |MEDIA_PLAYER_PLAYBACK_COMPLETE | MEDIA_PLAYER_PAUSED ) ) ) {mPlayer->setLooping(mLoop);mPlayer->setVolume(mLeftVolume, mRightVolume);mPlaye