Android 通話錄音程式碼流程
通話錄音:
從介面開始找程式碼,最後轉了幾個函式名,並轉到多媒體錄音模組
start_ record
voiceRecordClicked --- CallButtonFragment.java
|-------
com/android/incallui/CallButtonPresenter.java
public void voiceRecordClicked() {
TelecomAdapter.getInstance().startVoiceRecording();
}
|----
packages/apps/Dialer/InCallUI/src/com/android/incallui/TelecomAdapter.java
void startVoiceRecording
if (mInCallService != null) {
mInCallService.startVoiceRecording();
} else {
Log.e(this, "error startVoiceRecording, mInCallService is null");
}
}
|---- packages/services/Telecomm/src/com/android/server/telecom/InCallAdapter.java
public void startVoiceRecording
PhoneRecorderHandler.getInstance().startVoiceRecord(activeCall,
|----import com.mediatek.telecom.recording.PhoneRecorderHandler
|------./Telecomm/src/com/mediatek/telecom/recording/PhoneRecorderHandler.java
public void startVoiceRecord(Call activeCall, final int customValue) {
mPhoneRecorder
private IPhoneRecorder mPhoneRecorder;
mRecordHandler = new RecordHandler(mWorkerThread.getLooper());
|----
./Telecomm/src/com/mediatek/telecom/recording/PhoneRecorder.java
public void startRecord() {
startRecording(MediaRecorder.O
|---./Telecomm/src/com/mediatek/telecom/recording/Recorder.java
private MediaRecorder mRecorder; //// 轉化為多媒體裡的錄音模組
startRecording(int outputfileformat
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
mRecorder.start();
|-----AudioFlinger::RecordThread::RecordTrack::RecordTrack(
|------AudioFlinger::RecordThread::RecordTrack::start
|-----frameworks/av/media/libmedia/AudioRecord.cpp
|---- status_t AudioRecord::start(AudioSystem::sync_event_t
|----sp<IAudioRecord> AudioFlinger::openRecord(
|-----audio_module_handle_t AudioFlinger::loadHwModule_l(const char *name)