2012-08-08 41 views
6

Tôi gặp sự cố. Sau khi khởi chạy máy ảnh để xem trước và đưa ứng dụng khác vào tiêu điểm, sau đó quay lại ứng dụng của tôi: bản xem trước hiển thị màu đen. Nếu tôi tiếp tục chụp ảnh, nó sẽ chụp một bức ảnh về nơi tôi chỉ máy ảnh bình thường.Máy ảnh OnResume Reinit Màn hình đen

Tôi có làm gì sai trong ghi đè OnResume() không? Mã tương đối bên dưới:

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(); 
    } 

Cảm ơn sự giúp đỡ của bạn. :)

Trả lời

6

onResume() được gọi quá sớm. Bạn không có người giữ bề mặt sẵn sàng ở giai đoạn này. Bạn có thể thử giới thiệu trình xử lý onPostResume() trong Hoạt động của mình và/hoặc xử lý sự kiện SurfaceHolder.Callback.surfaceChanged().

+1

Cảm ơn bạn, bằng cách sử dụng Gọi lại SurfaceHolder hoạt động hoàn hảo. :) – Ecnelis

Các vấn đề liên quan