1

截图:http: //imgur.com/r7EpSpx

关于 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 上运行 | 安卓 4.1.2 (TouchWiz)

4

0 回答 0