我有一个关于SurfaceView和相机操作的非常具体的问题。我使用SurfaceView作为IntentService中相机的预览表面(允许后台操作)。
经过大量的反复试验,我几乎可以按照需要运行代码。但是,当我使用MediaRecorder录制视频时,每当我恢复活动时(因此重新创建SurfaceView),视频就会变得非常扭曲/被制作成彩虹色,中间有一个大的黑色矩形。此外,视频效果似乎是“平铺”排列。如果仔细观察,相机仍在工作,视频正常记录,但SurfaceView预览已损坏。
通常,我会在SurfaceView回调的surfaceCreated方法中重新实例化Camera对象,但每当我使用Camera.stopPreview()或其他几个Camera函数时,它都会导致我的MediaRecorder.stop()无限期挂起(这是另一个单独的问题)。因此,在重新创建曲面时,我必须在IntentService中使用相同的Camera对象。
除了这种奇怪的视频失真,即使是MediaRecorder生成的视频,一切都正常。只有预览受到影响。我无法确定这是代码问题,软件问题,TouchWiz问题还是硬件问题。它发生在所有方向配置中。将代码移动到surfaceChanged导致相同的事情。提前感谢您对此的任何帮助或见解!
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (isRecording) //Only run this code if MediaRecorder is recording
try {
recordingCamera.setPreviewDisplay(rHolder); //This works, but causes the aforementioned distortion
//recordingCamera.startPreview(); //Removes distortion, but causes MediaRecorder.stop() to freeze app indefinitely
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
//recordingCamera.stopPreview(); //Removes distortion, but causes MediaRecorder.stop() to freeze app indefinitely
}
在Galaxy Note II上运行它Android 4.1.2(TouchWiz)