2013-05-06 10 views
20

मैंने जो कस्टम कैमरा ऐप लिखा है, वह स्क्रीन लॉक के बाद पूर्वावलोकन दे रहा है (लॉक बटन को दबाकर या कुछ मिनट प्रतीक्षा कर रहा है)। मुझे अपवाद नहीं मिला है, जिससे समस्या को ढूंढना मुश्किल हो जाता है।स्क्रीन पूर्वावलोकन के बाद कैमरा पूर्वावलोकन फ्रीज

क्या एंड्रॉइड स्क्रीन लॉक (यदि यह सही शब्द है) रोक/रोकता है/... मेरी ऐप (गतिविधि)?

यदि यह मामला था, तो क्या मेरा कारण पॉज़/ऑनर्यूम विधियों का कारण हो सकता है? या एक अन्य कारण मोर संभावना है?

अग्रिम धन्यवाद

+2

हाँ:

surfaceView.setVisibility(View.VISIBLE); 

onPaused() में विधि इस लाइन को जोड़ने आपको 'ऑन पॉज़' में कैमरे पूर्वावलोकन को रोकने की आवश्यकता है और इसे 'रेज़्यूम' – asloob

उत्तर

29

में मैं एक ही समस्या का सामना करना पड़ा और निम्न चरणों का उपयोग यह तय:

  1. मैं अपने कैमरा पूर्वावलोकन बनाया है और माता-पिता गतिविधि के onResume() में कंटेनर FrameLayout में जोड़ा। कुछ ऐसा:

    public void onResume{ 
        super.onResume(); 
        mCamera = Camera.open(); 
        if(null != mCamera){ 
         mCamera.setDisplayOrientation(90); 
         mPreview = new CameraOverlay(getActivity(), mCamera); 
         frLyParent.addView(mPreview); 
        } 
    } 
    
  2. मैंने दृश्य को रोक दिया()। यह फ्रीज को हल करता है।

    public void onPause(){ 
        super.onPause(); 
        if(null != mCamera){ 
         mCamera.release(); 
         mCamera = null; 
        } 
        frLyParent.removeView(mPreview); 
        mPreview = null; 
    } 
    

जहां CameraOverlay() वर्ग जो SurfaceView प्रदान करता है और SurfaceHolder.Callback लागू करता है। अगर आपको उस कार्यान्वयन की ज़रूरत है तो मुझे बताएं।

+0

में फिर से शुरू करना है यह चाल है , धन्यवाद! –

+0

हाय itsviks। क्या आप चरण 2 पर लिखे गए प्रयासों को अपडेट कर सकते हैं। धन्यवाद। – Paul

+3

आप एक प्रतिभाशाली व्यक्ति हैं! धन्यवाद! मैंने frLyParen.removeView (mPreview) का उपयोग नहीं किया, यह मौलिक है! –

4

धन्यवाद, मैं इस एक संशोधन का इस्तेमाल किया और यह कैमरा खोलने से पहले

मैं onpause() में mPreview.removeView(mPreview.mSurfaceView); जोड़ा, और onResume() में mPreview.addView(mPreview.mSurfaceView); भी मेरे लिए काम करता है।

मैंने पूर्वावलोकन कक्षा में addView(mSurfaceView); भी हटा दिया।

4
यहाँ

मेरा है यह :-)

@Override 
    public void onResume() { 
     super.onResume(); 
     try { 
      camera = Camera.open(); 
      holder.addCallback(this); 
      surface.setVisibility(View.VISIBLE); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    public void onPause() { 
     try { 
      surface.setVisibility(View.GONE); 
      holder.removeCallback(this); 
      camera.release(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     super.onPause(); 
    } 
1

काम करता है onResume() विधि में इस लाइन को जोड़ने,:,

surfaceView.setVisibility(View.GONE); 
+0

यह सही उत्तर होना चाहिए, क्योंकि यह समस्या को नाखुश करता है। – epx

संबंधित मुद्दे