我有问题。初始化相机进行预览并将另一个应用程序聚焦后,然后返回我的应用程序:预览显示为黑色。如果我继续拍照,则会拍摄我正常指向相机的位置。
我是否在OnResume()覆盖上做错了什么?相关代码如下:
public void ReleaseCamera()
{
if (myCamera != null)
{
myCamera.Release();
myCamera = null;
}
}
protected override void OnPause()
{
base.OnPause();
if (myButtonState == ButtonState.CameraActive)
ReleaseCamera();
}
protected override void OnResume()
{
base.OnResume();
if (myButtonState == ButtonState.CameraActive)
InitializeCamera();
}
private void InitializeCamera()
{
SurfaceView mySurfaceView = FindViewById<SurfaceView>(Resource.Id.surfaceView1);
myCamera = Android.Hardware.Camera.Open(cameraNumber);
Android.Hardware.Camera.Parameters p = myCamera.GetParameters();
myCamera.SetDisplayOrientation(90); // Portrait
myCamera.SetPreviewDisplay(mySurfaceView.Holder);
myCamera.StartPreview();
}
感谢您的帮助。 :)
答案 0 :(得分:7)
onResume()
过早被调用。在此阶段,您没有准备好表面支架。您可以尝试在Activity中引入onPostResume()
处理程序,和/或处理SurfaceHolder.Callback.surfaceChanged()
事件。