怎样利用MediaRecorder实现录音暂停功能

解决方案 »

  1.   

    参考文档上的void stop()
    Stops recording.暂停的函数没有!
      

  2.   


      只有停止 API 上应该有 pause 吧 
    package cn.itcast.video;import android.app.Activity;
    import android.content.Context;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Display;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.Button;public class VideoRecordActivity extends Activity {
        private static final String TAG = "VideoRecordActivity";
        private Button startButton;
        private Button stopButton;
        private boolean record;
        private MediaRecorder recorder;
        private SurfaceView surfaceView;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            recorder = new MediaRecorder();        
            ButtonListener listener = new ButtonListener();
            startButton = (Button)this.findViewById(R.id.start);
            stopButton = (Button)this.findViewById(R.id.stop);
            this.surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
            startButton.setOnClickListener(listener);
            stopButton.setOnClickListener(listener);
            stopButton.setEnabled(false);//不可用        
           
            /*下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前*/
            this.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            this.surfaceView.getHolder().setFixedSize(320, 240);//设置分辨率
            this.surfaceView.getHolder().setKeepScreenOn(true);
        }
        private final class ButtonListener implements View.OnClickListener{
    @Override
    public void onClick(View v) {
    try {
       switch (v.getId()) {
       case R.id.start:
    stopButton.setEnabled(true);//设置可用
    startButton.setEnabled(false);
    recorder.reset();
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoSize(320, 240);
    recorder.setVideoFrameRate(3); //每秒3帧
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile("/mnt/sdcard/itcast.3gp");
    recorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
    recorder.prepare();//预期准备
    recorder.start();//开始刻录
    record = true;
        break;
       case R.id.stop:
    stopButton.setEnabled(false);
    startButton.setEnabled(true);
    if(record){
    recorder.stop();//停止刻录
    record = false;
    }
    break;
        }
    } catch (Exception e) {
    Log.e(TAG, e.toString());
    }
    }
        }
    }
      

  3.   

    如何曲线解决呢?不要说NDK,因为我还不会。