android-opencore
为了弄清楚播放一个mp3/mp4文件时在opencore框架内的大致流程,从上层的java开始,自MediaPlayer::start()往下查找它的调用关系:
MediaPlayer::start()大致调用关系:
MediaPlayer::start() --- java
/_ android_media_MediaPlayer_start()--jni --- base/media/jni/android_media_MediaPlayer.cpp
/_ MediaPlayer::start() --- C++ --- .../base/media/libmedia/mediaplayer.cpp
/_ IMediaPlayer::start() -- C++ -- 被BpMediaPlayer 继承
/_ BpMediaPlayer::start() -- .../base/media/libmedia/IMediaPlayer.cpp
/-- IBinder::transact(START, ......) - -- 调用 remote()->transact(START, ......)
到这就找不到transact(START, ......) 的具体定义了。
在IBinder 类中, transact() 方法是 virtual 方法,所以需要找到继承 IBinder 的类中的 transact() 方法!
ps: C++ 零基础