2012-08-08 30 views
6

मुझे कोई समस्या है। एक पूर्वावलोकन के लिए कैमरा शुरू करने और फोकस में एक और ऐप लाने के बाद, फिर मेरे ऐप पर: पूर्वावलोकन काला दिखाता है। अगर मैं एक तस्वीर लेना जारी रखता हूं, तो यह एक तस्वीर लेता है जहां मैं सामान्य रूप से कैमरे को इंगित करता हूं।ऑनर्यूज़ कैमरा रीनीट ब्लैक स्क्रीन

क्या मैं ऑनर्यूसम() ओवरराइड पर कुछ गलत कर रहा हूं? सापेक्ष कोड नीचे है:

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

आपकी सहायता के लिए धन्यवाद। :)

उत्तर

6

onResume() बहुत जल्दी कहा जाता है। आपके पास इस चरण में सतही धारक तैयार नहीं है। आप अपनी गतिविधि में onPostResume() हैंडलर पेश करने का प्रयास कर सकते हैं, और/या SurfaceHolder.Callback.surfaceChanged() ईवेंट को संभाल सकते हैं।

+1

SurfaceHolder Callback का उपयोग करके धन्यवाद, पूरी तरह से काम किया। :) – Ecnelis