在
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方法.这对我有用.