在Android媒体录制器中预览显示

android中如何在媒体记录器启动之前显示预览表面.
我的应用程序具有视频录制功能,当我导航到视频录制片段时,它显示黑屏,当我开始使用开始录制相机预览录制时,显示和录制开始.

如何在录制前开始预览.
添加了我在onCreateView()片段中使用的代码

surfaceHolder = mySurfaceView.getHolder();
camera = Camera.open();
if(camera!=null){
    camera.setdisplayOrientation(90);
    Camera.Parameters param;
    param = camera.getParameters();
    param.setPreviewFrameRate(20);
    param.setPreviewSize(176,144);
    camera.setParameters(param);
    camera.setPreviewdisplay(surfaceHolder);
}

mediaRecorder = new MediaRecorder();
camera.unlock();
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setProfile(camcorderProfile_HQ);
String filePath = getoutputMediaFile(MEDIA_TYPE_VIDEO).getPath();
fileUri = getoutputMediaFileUri(MEDIA_TYPE_VIDEO);
mediaRecorder.setoutputFile(filePath);

以及我在开始按钮点击时使用的代码

mediaRecorder.setPreviewdisplay(surfaceHolder.getSurface());
mediaRecorder.prepare();
mediaRecorder.start();

所以我可以使用上面的代码重新编码视频,但无法在录制开始前显示预览.
请帮助我在我失踪的地方.因为在重新编码视频之前会显示黑屏.

提前致谢.

解决方法

public void surfaceCreated(SurfaceHolder holder) {
        if (mCamera != null) {
            Parameters params = mCamera.getParameters();
            mCamera.setParameters(params);
            try {
                //mCamera.setdisplayOrientation(90);
                mCamera.setPreviewdisplay(holder);
            } catch (IOException e) {
                e.printstacktrace();
            }
            mCamera.startPreview();
        }
    }

如果实现SurfaceHolder.Callback,请像这样覆盖surfaceCreated方法.这对我有用.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...