question: @ WorkerThread public synchronized boolean startRecord ( int audioSource , int outputFormat , int audioEncoder , int sampleRate , int bitRate , File outputFile ) { stopRecord ( ) ; mRecorder = new MediaRecorder ( ) ; mRecorder . setAudioSource ( audioSource ) ; mRecorder . setOutputFormat ( outputFormat ) ; mRecorder . setAudioSamplingRate ( sampleRate ) ; mRecorder . setAudioEncodingBitRate ( bitRate ) ; mRecorder . setAudioEncoder ( audioEncoder ) ; mRecorder . setOutputFile ( outputFile . getAbsolutePath ( ) ) ; try { mRecorder . prepare ( ) ; } catch ( IOException | RuntimeException exception ) { Log . w ( TAG , "startRecord fail, prepare fail: " + exception . getMessage ( ) ) ; setError ( ERROR_INTERNAL ) ; mRecorder . reset ( ) ; mRecorder . release ( ) ; mRecorder = null ; return false ; } try { mRecorder . start ( ) ; } catch ( RuntimeException exception ) { Log . w ( TAG , "startRecord fail, start fail: " + exception . getMessage ( ) ) ; setError ( ERROR_INTERNAL ) ; mRecorder . reset ( ) ; mRecorder . release ( ) ; mRecorder = null ; return false ; } mSampleStart = System . currentTimeMillis ( ) ; mState = STATE_RECORDING ; return true ; }
target:  Directly start record, including prepare and start. MediaRecorder.AudioSource.MIC MediaRecorder.OutputFormat.MPEG_4 MediaRecorder.AudioEncoder.AAC