2012-12-31 16 views
5

कहा जा रहा है मैं कैमरे का उपयोग करने वाला एक ऐप विकसित कर रहा हूं। मैंने पूर्वावलोकन वर्ग इस तरह बनाया है:एंड्रॉइड कैमरा सतह लगातार

public class MyPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.Preview Callback{ 
    ... 

    public void surfaceCreated(SurfaceHolder holder){ 
    ... 
    mCamera.setPreviewCallback(this); 
    ... 
    } 

    public void surfaceDestroyed(SurfaceHolder holder){ 
    ... 
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h){ 
    ... 
    } 

    public void onPreviewFrame(byte[] data, Camera camera){ 
    ... 
    } 
} 

असल में, यह कैमराडेमो उदाहरण है। Android CameraDemo Example

समस्या यह है कि सतह क्रेटेड को केवल एक बार (जिस तरह से करना चाहिए) कहा जाता है, लेकिन सतही चेंज को लगातार कहा जा रहा है (केवल एक बार, या जब सतह बदलती है), और मुझे विश्वास है कि यही कारण है कि प्रीव्यूफ्रेम कभी नहीं बुलाया कैमरा फीड स्क्रीन पर दिखाया गया है और ऐसा लगता है कि यह ठीक काम कर रहा है, लेकिन यह वास्तव में नहीं है।

मजेदार बात यह है कि यह एंड्रॉइड 2.x पर ठीक काम करता है, और यह समस्या केवल एंड्रॉइड 4.1 पर उत्पन्न होती है। (मैंने इसे अन्य उपकरणों पर परीक्षण नहीं किया है)

मैं चारों ओर देख रहा हूं और मुझे विश्वास है कि यह stackoverflow unsolved question और यह another stackoverflow unsolved question और code.google case के पीछे असली कारण हो सकता है। इस अंतिम मामले में "समाधान" है, लेकिन यह मेरे लिए काम नहीं करता है।

तो, किसी भी विचार के लिए क्यों सतह परिवर्तन किया जा रहा है और इसे हल करने के लिए कैसे?

उत्तर

-1

इन ट्यूटोरियल http://android-er.blogspot.ru/2010/12/implement-takepicture-function-of.html को आजमाएं। चक्र के पिछले लेखों पर भी लूइंग करने का प्रयास करें।

+2

ध्यान दें कि [लिंक-केवल उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, तो SO समाधान समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम अभी तक संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

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