2010-11-16 24 views
7

मैं वर्तमान में चित्र लेने के लिए एंड्रॉइड एप्लिकेशन बनाने की कोशिश कर रहा हूं और मुझे किसी दिए गए ईवेंट (यानी तस्वीर ले ली गई) पर कैमरा पूर्वावलोकन को फ्रीज करने की आवश्यकता है और इसे किसी अन्य ईवेंट के बाद ही पुनरारंभ करें।एंड्रॉइड कैमरा पूर्वावलोकन - कैमरे को 'फ्रीज' कैसे करें?

मैं जो चाहता हूं, दूसरे शब्दों में, फ्रीज घटना होने तक कैमरा जो भी दिखता है उसे प्रदर्शित करने के लिए दृश्य है और फिर छवि को फ्रीज करने के लिए (यानी इस घटना के समय स्क्रीन पर जो कुछ भी था, प्रदर्शित करें - जैसे कि एक तस्वीर ली गई थी) जब तक कि अनफ्रीज़ घटना न हो।

अब, मैं वर्तमान में एक SurfaceHiewer के साथ एक SurfaceView का उपयोग कर रहा हूं। ऐसा करने के लिए कॉल करें और मैंने स्क्रीन को फ्रीज करने के लिए पूर्वावलोकनकॉलबैक का उपयोग करने का प्रयास किया, लेकिन दुर्भाग्यवश, मुझे कोई उदाहरण या ट्यूटोरियल नहीं मिला है और मैं वास्तव में इस बिंदु पर फंस गया।

किसी को भी एक गाइड या यह कैसे किया पाने के लिए पर कुछ संकेत है, तो मैं सच में मदद की सराहना करते हैं ...

मैं नीचे मेरी कोड के प्रासंगिक भागों चिपकाने हूँ:

सार्वजनिक वर्ग CustomCameraView SurfaceView {

Camera camera; 
SurfaceHolder previewHolder; 

//Callback for the surfaceholder 
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() { 
    public void surfaceCreated(SurfaceHolder holder) { 
     camera=Camera.open(); 

     try 
     { 
      camera.setPreviewDisplay(previewHolder); 
     } 
     catch (Throwable t) { 

     } 
    } 

    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h) 
    { 
     Parameters params = camera.getParameters(); 
     params.setPictureFormat(PixelFormat.JPEG); 
      camera.setParameters(params); 
      camera.startPreview(); 
    } 

    public void surfaceDestroyed(SurfaceHolder arg0) 
    { 
     camera.stopPreview(); 
     camera.release(); 
    } 
}; 
public CustomCameraView(Context ctx) 
{ 
    super(ctx); 

    previewHolder = this.getHolder(); 
     previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     previewHolder.addCallback(surfaceHolderListener); 
     setBackgroundColor(Color.TRANSPARENT); 
} 
public CustomCameraView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 
protected void onDraw (Canvas canvas) 
{ 
} 
public void closeCamera() 
{ 
    if(camera != null) 
     camera.release(); 
} 
public void dispatchDraw(Canvas c) 
{ 
    super.dispatchDraw(c); 
} 

} फैली

आप आपकी मदद के लिए बहुत बहुत धन्यवाद!

-Billy

उत्तर

14

पुराना सवाल है, मुझे पता है, लेकिन भावी पीढ़ी के लिए जवाब दे। आप बस

camera.stopPreview(); 

पूर्वावलोकन फ्रीज होगा जो कुछ पर आप कम से जब तक आप() फिर से startPreview फोन देख रहे हैं कॉल करने के लिए सक्षम होना चाहिए।

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