下面是框架簡圖:

首先調用mediaRecorder.java中的方法比如start方法,會調用jni:

也就是調用android_media_recorder.cpp的start方法:

?接著到mediaRecorder.cpp,mediaRecorder是由mediaplayerService創建的,而mediaRecoder.cpp和mediaplayerService是通過binder機制來進行進程間的通信的,這時client端就是通過操作服務端返回的imediaRecorder來對服務端進行控制的:

這里new?mediaRecorderClient這是其實是創建了一個StagefrightRecorder:

其實我們在java層調用start就是調用了StagefrightRecorder中的strat方法,在這里我們可以看到根據傳進來的mOutputFormat值(輸出格式)會選擇不同的編碼類型的方法:

假如我們輸出的是3gp格式,我們調用:startMPEG4Recording()?方法:

接著調用setupMPEG4Recording:

- 前言
- Camera源碼分析(android2.2)
- Android開機啟動流程說明
- android應用程序管理機制
- MediaPlayer框架概述(一)
- MediaPlayer框架概述(二)
- Android MediaPlayer+Stagefright框架(音頻)圖解
- Stagefright框架解讀(—)音視頻Playback流程
- Android mediaRecorder框架簡述(一)
- Android mediaRecorder框架簡述(二)
- Android IntentService淺談以及源碼分析
- Android多線程(二)AsyncTask源碼分析
- Android View體系(五)從源碼解析View的事件分發機制
- Android View體系(六)從源碼解析Activity的構成