类android.media.MediaRecorder源码实例Demo

下面列出了怎么用android.media.MediaRecorder的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: sensordatacollector   文件: MicrophoneCollector.java
private AudioRecord findAudioRecord()
{
    for(int rate : mSampleRates) {
        for(short audioFormat : new short[]{ AudioFormat.ENCODING_PCM_16BIT, AudioFormat.ENCODING_PCM_8BIT }) {
            for(short channelConfig : new short[]{ AudioFormat.CHANNEL_IN_STEREO, AudioFormat.CHANNEL_IN_DEFAULT, AudioFormat.CHANNEL_IN_MONO }) {
                try {
                    Log.d("MicrophoneCollector", "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: " + channelConfig);
                    int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

                    if(bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                        // check if we can instantiate and have a success
                        AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);

                        if(recorder.getState() == AudioRecord.STATE_INITIALIZED)
                            return recorder;
                    }
                } catch(Exception e) {
                    Log.e("MicrophoneCollector", rate + " Exception, keep trying.", e);
                }
            }
        }
    }
    return null;
}
 
源代码2 项目: appinventor-extensions   文件: SoundRecorder.java
@Override
public void onError(MediaRecorder affectedRecorder, int what, int extra) {
  if (controller == null || affectedRecorder != controller.recorder) {
    Log.w(TAG, "onError called with wrong recorder. Ignoring.");
    return;
  }
  form.dispatchErrorOccurredEvent(this, "onError", ErrorMessages.ERROR_SOUND_RECORDER);
  try {
    controller.stop();
  } catch (Throwable e) {
    Log.w(TAG, e.getMessage());
  } finally {
    controller = null;
    StoppedRecording();
  }
}
 
源代码3 项目: SoundRecorder   文件: RecordingService.java
public void startRecording() {
    setFileNameAndPath();

    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setOutputFile(mFilePath);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mRecorder.setAudioChannels(1);
    if (MySharedPreferences.getPrefHighQuality(this)) {
        mRecorder.setAudioSamplingRate(44100);
        mRecorder.setAudioEncodingBitRate(192000);
    }

    try {
        mRecorder.prepare();
        mRecorder.start();
        mStartingTimeMillis = System.currentTimeMillis();

        //startTimer();
        //startForeground(1, createNotification());

    } catch (IOException e) {
        Log.e(LOG_TAG, "prepare() failed");
    }
}
 
源代码4 项目: VideoCamera   文件: VideoRecorder.java
private boolean initRecorder() {
    try {
        mCameraWrapper.prepareCameraForRecording();
    } catch (final PrepareCameraException e) {
        e.printStackTrace();
        mRecorderInterface.onRecordingFailed("Unable to record video");
        CLog.e(CLog.RECORDER, "Failed to initialize recorder - " + e.toString());
        return false;
    }

    setMediaRecorder(new MediaRecorder());
    configureMediaRecorder(getMediaRecorder(), mCameraWrapper.getCamera());

    CLog.d(CLog.RECORDER, "MediaRecorder successfully initialized");
    return true;
}
 
源代码5 项目: coursera-android   文件: AudioRecordingActivity.java
private void startRecording() {

		mRecorder = new MediaRecorder();
		mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		mRecorder.setOutputFile(mFileName);
		mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

		try {
			mRecorder.prepare();
		} catch (IOException e) {
			Log.e(TAG, "Couldn't prepare and start MediaRecorder");
		}

		mRecorder.start();
	}
 
源代码6 项目: android-docs-samples   文件: VoiceRecorder.java
/**
 * Creates a new {@link AudioRecord}.
 *
 * @return A newly created {@link AudioRecord}, or null if it cannot be created (missing
 * permissions?).
 */
private AudioRecord createAudioRecord() {
    for (int sampleRate : SAMPLE_RATE_CANDIDATES) {
        final int sizeInBytes = AudioRecord.getMinBufferSize(sampleRate, CHANNEL, ENCODING);
        if (sizeInBytes == AudioRecord.ERROR_BAD_VALUE) {
            continue;
        }
        final AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                sampleRate, CHANNEL, ENCODING, sizeInBytes);
        if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
            mBuffer = new byte[sizeInBytes];
            return audioRecord;
        } else {
            audioRecord.release();
        }
    }
    return null;
}
 
源代码7 项目: black-mirror   文件: VoiceRecorder.java
/**
 * Creates a new {@link AudioRecord}.
 *
 * @return A newly created {@link AudioRecord}, or null if it cannot be created (missing
 * permissions?).
 */
private AudioRecord createAudioRecord() {
    for (int sampleRate : SAMPLE_RATE_CANDIDATES) {
        final int sizeInBytes = AudioRecord.getMinBufferSize(sampleRate, CHANNEL, ENCODING);
        if (sizeInBytes == AudioRecord.ERROR_BAD_VALUE) {
            continue;
        }
        final AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                sampleRate, CHANNEL, ENCODING, sizeInBytes);
        if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
            mBuffer = new byte[sizeInBytes];
            return audioRecord;
        } else {
            audioRecord.release();
        }
    }
    return null;
}
 
源代码8 项目: RtmpPublisher   文件: AudioRecorder.java
public void start() {
    final int bufferSize =
            AudioRecord.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);

    audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,
            AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);

    audioRecord.startRecording();

    HandlerThread handlerThread = new HandlerThread("AudioRecorder-record");
    handlerThread.start();
    Handler handler = new Handler(handlerThread.getLooper());
    handler.post(new Runnable() {
        @Override
        public void run() {
            int bufferReadResult;
            byte[] data = new byte[bufferSize];
            // keep running... so use a different thread.
            while (isRecording() && (bufferReadResult = audioRecord.read(data, 0, bufferSize)) > 0) {
                listener.onAudioRecorded(data, bufferReadResult);
            }
        }
    });
}
 
源代码9 项目: LandscapeVideoCamera   文件: VideoRecorderTest.java
@Test
public void mediaRecorderShouldHaveMediaRecorderOptions() throws Exception {
    final CaptureConfiguration config = CaptureConfiguration.getDefault();
    CamcorderProfile profile = getEmptyCamcorderProfile();
    final VideoRecorder recorder =
            new VideoRecorder(null, config, mock(VideoFile.class), createMockCameraWrapperForPrepare(profile), mock(SurfaceHolder.class), false);

    final MediaRecorder mockRecorder = mock(MediaRecorder.class);
    recorder.configureMediaRecorder(mockRecorder, mock(Camera.class));

    verify(mockRecorder, times(1)).setAudioSource(config.getAudioSource());
    verify(mockRecorder, times(1)).setVideoSource(config.getVideoSource());
    assertEquals(profile.fileFormat, config.getOutputFormat());
    assertEquals(profile.audioCodec, config.getAudioEncoder());
    assertEquals(profile.videoCodec, config.getVideoEncoder());
    verify(mockRecorder, times(1)).setProfile(profile);
}
 
源代码10 项目: FamilyChat   文件: MediaRecorderSystemImpl.java
@Override
public void initRecorder(Camera camera, int cameraId, Surface surface, String filePath)
{
    mMediaRecorder = new MediaRecorder();
    mMediaRecorder.reset();
    if (camera != null)
        mMediaRecorder.setCamera(camera);
    mMediaRecorder.setOnErrorListener(this);
    mMediaRecorder.setPreviewDisplay(surface);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//视频源
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//音频源
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//视频输出格式 也可设为3gp等其他格式
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频格式
    mMediaRecorder.setVideoSize(640, 480);//设置分辨率,市面上大多数都支持640*480
    //        mediaRecorder.setVideoFrameRate(25);//设置每秒帧数 这个设置有可能会出问题,有的手机不支持这种帧率就会录制失败,这里使用默认的帧率,当然视频的大小肯定会受影响
    //这里设置可以调整清晰度
    mMediaRecorder.setVideoEncodingBitRate(2 * 1024 * 512);

    if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK)
        mMediaRecorder.setOrientationHint(90);
    else
        mMediaRecorder.setOrientationHint(270);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//视频录制格式
    mMediaRecorder.setOutputFile(filePath);
}
 
源代码11 项目: Camera2   文件: VideoModule.java
@Override
public void onInfo(MediaRecorder mr, int what, int extra)
{
    if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED)
    {
        if (mMediaRecorderRecording)
        {
            onStopVideoRecording();
        }
    } else if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED)
    {
        if (mMediaRecorderRecording)
        {
            onStopVideoRecording();
        }

        // Show the toast.
        Toast.makeText(mActivity, R.string.video_reach_size_limit,
                Toast.LENGTH_LONG).show();
    }
}
 
源代码12 项目: coursera-android   文件: AudioRecordingActivity.java
private void startRecording() {

        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setOutputFile(mFileName);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e(TAG, "Couldn't prepare and start MediaRecorder");
        }

        mRecorder.start();
    }
 
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void prepareMediaRecorder() {
  // Configure the input sources.
  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);

  // Set the output format and encoder.
  mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
  mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
  mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

  // Specify the output file
  File mediaDir = getExternalMediaDirs()[0];
  File outputFile = new File(mediaDir, "myvideorecording.mp4");
  mediaRecorder.setOutputFile(outputFile.getPath());

  // Prepare to record
  try {
    mediaRecorder.prepare();
  } catch (IOException e) {
    Log.d(TAG, "Media Recorder Failure.", e);
  }
}
 
源代码14 项目: spydroid-ipcamera   文件: AMRNBStream.java
public AMRNBStream() {
	super();

	mPacketizer = new AMRNBPacketizer();

	setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
	
	try {
		// RAW_AMR was deprecated in API level 16.
		Field deprecatedName = MediaRecorder.OutputFormat.class.getField("RAW_AMR");
		setOutputFormat(deprecatedName.getInt(null));
	} catch (Exception e) {
		setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
	}
	
	setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
	
}
 
private void initAudioRecord() {
    int bufferSize = AudioRecord.getMinBufferSize(
            RECORDING_SAMPLE_RATE,
            AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT
    );

    mAudioRecord = new AudioRecord(
            MediaRecorder.AudioSource.MIC,
            RECORDING_SAMPLE_RATE,
            AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT,
            bufferSize
    );

    if (mAudioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
        mBufSize = bufferSize;
    }
}
 
源代码16 项目: doppler-android   文件: Doppler.java
public Doppler() {
    //write a check to see if stereo is supported
    bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
    buffer = new short[bufferSize];

    frequency = PRELIM_FREQ;
    freqIndex = PRELIM_FREQ_INDEX;

    frequencyPlayer = new FrequencyPlayer(PRELIM_FREQ);

    microphone = new AudioRecord(MediaRecorder.AudioSource.VOICE_RECOGNITION, DEFAULT_SAMPLE_RATE,
            AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);

    mHandler = new Handler();

    calibrator = new Calibrator();
}
 
源代码17 项目: appinventor-extensions   文件: SoundRecorder.java
RecordingController(String savedRecording) throws IOException {
  // pick a pathname if none was specified
  file = (savedRecording.equals("")) ?
      FileUtil.getRecordingFile("3gp").getAbsolutePath() :
        savedRecording;

  recorder = new MediaRecorder();
  recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  Log.i(TAG, "Setting output file to " + file);
  recorder.setOutputFile(file);
  Log.i(TAG, "preparing");
  recorder.prepare();
  recorder.setOnErrorListener(SoundRecorder.this);
  recorder.setOnInfoListener(SoundRecorder.this);
}
 
源代码18 项目: droid-stealth   文件: RecorderActivity.java
/**
 * Starts the media recorder to record a new fragment
 */
private void startRecording() {
	mRecorder = new MediaRecorder();
	mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
	mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
	mRecorder.setOutputFile(FileUtils.getPath(this, mOutputUri));
	mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
	try {
		mRecorder.prepare();
	}
	catch (IOException e) {
		Utils.d("Error writing file: "+e.toString());
		Toast.makeText(getApplicationContext(), "An error occured at recorder preparations.", Toast.LENGTH_LONG)
				.show();
	}

	mRecorder.start();
	mVolumeChecker.run();
}
 
源代码19 项目: VMLibrary   文件: SRManager.java
/**
 * 初始化保存屏幕录像的参数
 */
private void initRecorder() {
    VMLog.i("初始化媒体记录器");
    mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediaRecorder.setOutputFile(initSavePath());
    mediaRecorder.setVideoSize(width, height);
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024);
    mediaRecorder.setVideoFrameRate(30);
    try {
        mediaRecorder.prepare();
        VMLog.i("媒体记录器 准备 完成");
    } catch (IOException e) {
        VMLog.e("媒体记录器 准备 出错了");
        e.printStackTrace();
    }
}
 
源代码20 项目: SimpleRecorder   文件: MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= 23) {
        requestPermissions(perms, REQUEST_CODE);
    }

    ImageButton mImageButton = (ImageButton) findViewById(R.id.action_image);
    mImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mRecorder == null || !mRecorder.isInitialized()) {
                return;
            }
            boolean recording = mRecorder.isRecording();
            if (recording) {
                ((ImageButton) v).setImageResource(R.drawable.record);
                mRecorder.stop();
            } else {
                ((ImageButton) v).setImageResource(R.drawable.pause);
                mRecorder.startRecording();
            }
        }
    });

    boolean result = createOutputFile();
    if (!result) {
        Toast.makeText(this, "创建文件失败~", Toast.LENGTH_SHORT).show();
    }

    mRecorder = new Recorder(44100,
            AudioFormat.CHANNEL_IN_MONO/*单双声道*/,
            AudioFormat.ENCODING_PCM_16BIT/*格式*/,
            MediaRecorder.AudioSource.MIC/*AudioSource*/,
            NUM_SAMPLES/*period*/,
            this/*onDataChangeListener*/);

}
 
@Override
public String eventToString() {
    return new StringBuilder("rec ").append(
                mRecEvent == AudioManager.RECORD_CONFIG_EVENT_START ? "start" : "stop ")
            .append(" uid:").append(mClientUid)
            .append(" session:").append(mSession)
            .append(" src:").append(MediaRecorder.toLogFriendlyAudioSource(mSource))
            .append(mPackName == null ? "" : " pack:" + mPackName).toString();
}
 
源代码22 项目: Dendroid-HTTP-RAT   文件: MyService.java
@Override
  protected String doInBackground(String... params) {     
   	MediaRecorder recorder = new MediaRecorder();;

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm");
       String currentDateandTime = sdf.format(new Date());
       
       String filename =currentDateandTime + ".3gp";

       File diretory = new File(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("File", "") + File.separator + "Audio");
       diretory.mkdirs();
    	File outputFile = new File(diretory, filename);
       
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
     recorder.setMaxDuration(Integer.parseInt(i));
     recorder.setMaxFileSize(1000000);
     recorder.setOutputFile(outputFile.toString());

 try 
    {
       recorder.prepare();
       recorder.start();
    } catch (IOException e) {
       Log.i("com.connect", "io problems while preparing");
      e.printStackTrace();
    }		   
return "Executed";
  }
 
源代码23 项目: zom-android-matrix   文件: AudioRecorder.java
public void startAudioRecording() {
    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    if (am.getMode() == AudioManager.MODE_NORMAL) {

        mediaRecorder = new MediaRecorder();

        String fileName = UUID.randomUUID().toString().substring(0, 8) + ".m4a";
        outputFilePath = new File(context.getFilesDir(), fileName);

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

        //maybe we can modify these in the future, or allow people to tweak them
        mediaRecorder.setAudioChannels(1);
        mediaRecorder.setAudioEncodingBitRate(22050);
        mediaRecorder.setAudioSamplingRate(64000);

        mediaRecorder.setOutputFile(outputFilePath.getAbsolutePath());

        try {
            isAudioRecording = true;
            mediaRecorder.prepare();
            mediaRecorder.start();

            if (getVisualizerView() != null) {
                startLevelListener();
            }
        } catch (Exception e) {
            Log.e(LOG_TAG, "couldn't start audio", e);
        }
    }
}
 
源代码24 项目: LandscapeVideoCamera   文件: VideoRecorderTest.java
@Test
public void shouldNotCrashAfterDoubleRelease() {
    final VideoRecorder spyRecorder =
            Mockito.spy(new VideoRecorder(null, mock(CaptureConfiguration.class), null, mock(CameraWrapper.class), mock(SurfaceHolder.class), false));
    doNothing().when(spyRecorder).configureMediaRecorder(any(MediaRecorder.class), any(Camera.class));

    spyRecorder.releaseAllResources();
    try {
        spyRecorder.releaseAllResources();
    } catch (RuntimeException e) {
        fail("Failed to call releaseAllResources twice");
    }
}
 
源代码25 项目: TelePlus-Android   文件: AudioRecordJNI.java
public void init(int sampleRate, int bitsPerSample, int channels, int bufferSize) {
	if (audioRecord != null) {
		throw new IllegalStateException("already inited");
	}
	this.bufferSize = bufferSize;
	boolean res=tryInit(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 48000);
	if(!res)
		tryInit(MediaRecorder.AudioSource.MIC, 48000);
	if(!res)
		tryInit(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 44100);
	if(!res)
		tryInit(MediaRecorder.AudioSource.MIC, 44100);
	buffer = ByteBuffer.allocateDirect(bufferSize);
}
 
源代码26 项目: TelePlus-Android   文件: CameraController.java
@Override
public void onInfo(MediaRecorder mediaRecorder, int what, int extra) {
    if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_UNKNOWN) {
        MediaRecorder tempRecorder = recorder;
        recorder = null;
        if (tempRecorder != null) {
            tempRecorder.stop();
            tempRecorder.release();
        }
        if (onVideoTakeCallback != null) {
            finishRecordingVideo();
        }
    }
}
 
源代码27 项目: VideoCRE   文件: Camera1Capturer.java
@Override
protected void createCameraSession(CameraSession.CreateSessionCallback createSessionCallback,
    CameraSession.Events events, Context applicationContext,
    SurfaceTextureHelper surfaceTextureHelper, MediaRecorder mediaRecorder, String cameraName,
    int width, int height, int framerate) {
  Camera1Session.create(createSessionCallback, events,
      captureToTexture || (mediaRecorder != null), applicationContext, surfaceTextureHelper,
      mediaRecorder, Camera1Enumerator.getCameraIndex(cameraName), width, height, framerate);
}
 
源代码28 项目: continuous-audiorecorder   文件: AudioRecorder.java
/**
 * Continues an existing record or starts a new one.
 *
 * @param listener The listener instance.
 */
@SuppressLint("NewApi")
public void start(@NonNull final OnStartListener listener) {
    StartRecordTask task = new StartRecordTask();

    mMediaRecorder = new MediaRecorder();
    mMediaRecorder.setAudioEncodingBitRate(mMediaRecorderConfig.mAudioEncodingBitRate);
    mMediaRecorder.setAudioChannels(mMediaRecorderConfig.mAudioChannels);
    mMediaRecorder.setAudioSource(mMediaRecorderConfig.mAudioSource);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mMediaRecorder.setOutputFile(getTemporaryFileName());
    mMediaRecorder.setAudioEncoder(mMediaRecorderConfig.mAudioEncoder);

    task.execute(listener);
}
 
源代码29 项目: VideoCamera   文件: VideoRecorderTest.java
@Test
public void notifyListenerWhenMaxDuration() throws Exception {
    final VideoRecorderInterface mockInterface = mock(VideoRecorderInterface.class);
    final VideoRecorder spyRecorder = createSpyRecorder(mockInterface, null);
    doReturn(true).when(spyRecorder).isRecording();

    spyRecorder.onInfo(null, MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED, 0);

    verify(mockInterface, times(1)).onRecordingStopped("Capture stopped - Max duration reached");
}
 
源代码30 项目: PermissionAgent   文件: RecordAudioTester.java
private static AudioRecord findAudioRecord() {
    for (int rate : RATES) {
        for (short format : new short[] {AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT}) {
            for (short channel : new short[] {AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {
                int buffer = AudioRecord.getMinBufferSize(rate, channel, format);
                if (buffer != AudioRecord.ERROR_BAD_VALUE) {
                    AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, rate, channel, format,
                        buffer);
                    if (recorder.getState() == AudioRecord.STATE_INITIALIZED) return recorder;
                }
            }
        }
    }
    return null;
}
 
 类所在包
 同包方法