MediaRecoder实现预览画面

private SurfaceView surfaceView;
    private ImageButton imageButton;
    public int click_down=0,lose_up=0;
    public static final String TAG = "MainActivity";
    public SurfaceHolder mholder;
    private MediaRecorder mRecorder;
    public SurfaceHolder mSurfaceHolder;
    private boolean isStart = false;
    private File myRecAudioFile;
    private boolean mIsSufaceCreated = false;
    getTime time=new getTime();
    getSDCard path=new getSDCard();
    String path0 = path.getSDPath();
    private Camera camera;/


/实现预览功能

private void startPreview() {

        //保证只有一个Camera对象
        if (camera != null || !mIsSufaceCreated) {
            Log.d(TAG, "startPreview will return");
            return;
        }
        camera = Camera.open();
        Camera.Parameters parameters = camera.getParameters();
        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
        parameters.setPreviewFrameRate(20);
        //设置相机预览方向
        camera.setDisplayOrientation(90);
        camera.setParameters(parameters);
        try {
            camera.setPreviewDisplay(mSurfaceHolder);
        } catch (Exception e) {
            Log.d(TAG, e.getMessage());
        }


        camera.startPreview();
    }

//停止预览画面
    private void stopPreview() {
        //释放Camera对象
        if (camera != null) {
            try {
                camera.setPreviewDisplay(null);
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());
            }
            camera.stopPreview();
            camera.release();
            camera = null;
        }
    }


}


实现Callback借口的方法

//界面创建时

public void surfaceCreated(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        mIsSufaceCreated = true;
        mSurfaceHolder = holder;
        Log.d(TAG, "surfaceChanged 2");
    }

//界面销毁时
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        mIsSufaceCreated = false;
        if (isStart) {
                   mRecorder.stop();
                   mRecorder.release();
                   mRecorder = null;
              }
        stopPreview();//停止预览画面
    }
 //界面发生改变时

public void surfaceChanged(SurfaceHolder holder, int format, int width,
                               int height) {
        // TODO Auto-generated method stub
        startPreview();
        mSurfaceHolder = holder;
        Log.d(TAG, "surfaceChanged 1");


然后实现startRecording()和stopRecording()方法!
 

猜你喜欢

转载自blog.csdn.net/jiaming917/article/details/51757293