2012-06-09 12 views
7

मुझे केवल कैमरा पूर्वावलोकन डेटा प्राप्त करने की आवश्यकता है, लेकिन दृश्य पूर्वावलोकन नहीं है। चूंकि मैं यह सब एक सेवा में कर रहा हूं, इसलिए मुझे एक डमी SurfaceView बनाना था, जो बहुत अच्छी तरह से काम करता है।कैमरा पूर्वावलोकन के लिए अदृश्य सतह दृश्य

मैं इस जवाब से कोड का उपयोग किया है: https://stackoverflow.com/a/10268650/1395697

हालांकि, TYPE_SYSTEM_OVERLAY के साथ काम नहीं किया। यह अदृश्य था लेकिन कोई पूर्वावलोकन डेटा प्राप्त नहीं हुआ था (onPreviewFrame() में)। जब मैं इस तर्क को 0 पर बदलता हूं, तो मुझे पूर्वावलोकन डेटा मिलता है, लेकिन SurfaceView दिखाई देता है।

क्या आपको ऐसा करने का कोई और तरीका पता है?

मैं अब क्या सिर्फ एक दृश्य SurfaceView चौड़ाई और 1 की ऊंचाई के साथ कर रहा है और उसके बाद मैं एक विशिष्ट रंग के साथ एक ImageView ओवरले बनाने ताकि आप SurfaceView के रंग के परिवर्तन नहीं दिख रहा है। लेकिन यह बिल्कुल साफ नहीं है और मैं वास्तव में इसे थोड़ा बेहतर करना चाहता हूं।

+0

http://stackoverflow.com/questions/22462360/ – fadden

उत्तर

-1

आपको वास्तव में अपने UI पर SurfaceView नहीं रखना है। हम एक ही मुद्दे में भाग रहे थे और एक डमी SurfaceView बनाया था।

SurfaceView dummy = new SurfaceView(c); 
try { 
    mCamera.setPreviewDisplay(dummy.getHolder()); 
} catch (IOException e) { 

} 
mCamera.setPreviewCallback(this); 
mCamera.startPreview(); 
+2

देखें जो मैंने सोचा था।अधिकांश डिवाइस यह पूर्वावलोकन डिस्प्ले के बिना भी काम करता है, इसलिए आपकी विधि स्पष्ट रूप से इन उपकरणों पर भी काम करती है। हालांकि, एचटीसी वन एक्स या Google नेक्सस वन जैसे कुछ उपकरणों पर यह SurfaceView के बिना काम नहीं करता है और न ही आपकी विधि – DominicM

+0

पवित्र बकवास के साथ काम नहीं करता है। हमारी समस्या को हल करने के लिए धन्यवाद। हमारे पास इसका परीक्षण करने के लिए या तो नहीं था, इसलिए हमें नहीं पता था कि क्या हो रहा था। बहुत सराहना की! : डी –

+0

मेरे पास परीक्षण करने वालों में से कोई भी नहीं था, लेकिन मुझे कुछ बग रिपोर्ट मिलीं, इसलिए मैंने आपकी विधि के साथ एक अपडेट जारी किया और मैंने उनसे पूछा कि क्या यह अभी काम करता है और यह अभी भी नहीं हुआ है। नए अपडेट के साथ अंततः काम किया (मेरे प्रश्न में विधि के साथ) लेकिन मैं अभी भी इसे सुधारना चाहता हूं क्योंकि मेरी विधि वास्तव में भयानक है ... – DominicM

1

मैं भी एक ही stackOverflow जवाब इस्तेमाल किया, और एक ही problem.so मिलती है:: यहाँ हमारे कोड है

मैं जोड़ दिया है मेरी surfaceChanged विधि के लिए इस कोड

this.setZOrderOnTop(true); 
SurfaceHolder h = this.getHolder(); 
h.setFormat(PixelFormat.TRANSPARENT); 

, बजाय गतिविधि (या मेरे मामले में एक सेवा), और इसे पारदर्शी मिला, लेकिन लॉग ने छोड़े गए फ्रेम पर शिकायत की :(