2013-02-20 29 views
5

मुझे एंड्रॉइड कैमरा में एक्सपोजर लॉक में समस्या है। पैरामीटर क्लास। मैं एक तस्वीर लेने से पहले एक्सपोजर को लॉक करने में सक्षम हूं, लेकिन camera.takePicture(shutterCallback, rawCallback, jpegCallback) पर कॉल करने पर एक्सपोजर फिर से ऑटो-एडजस्ट करना शुरू कर देता है।ऑटोएक्सपोजर लॉक लेने के बाद रीसेट करना चित्र()

इसके अलावा, getAutoExposureLock() अभी भी true लौटाता है भले ही पूर्वावलोकन और अंतिम सहेजी गई छवियां समायोजित एक्सपोजर दिखाती हैं।

Android दस्तावेज़ कहते हैं जोखिम ताला चित्र लेकर बदला नहीं जाएगा: http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setAutoExposureLock(boolean)

मैं क्या याद आ रही है?

+0

public void onPictureTaken(byte[] data, Camera camera) { //Relock the camera for S3 device camera.startPreview(); UnLockCamera(camera); LockCamera(camera); // your code 
दो कार्यों के साथ

इस नेक्सस 5 और गूगल ग्लास पर एक ही देखकर सैमसंग उपकरणों –

+0

पर हो रहा है: मैं कॉलबैक की शुरुआत में उन लाइन डालने समाप्त। – baske

+0

नेक्सस 6 और सैमसंग गैलेक्सी एस 3 पर एक ही समस्या है।अभी तक कोई कामकाज नहीं मिला है। अगर आपको कोई मिला तो कृपया साझा करें। धन्यवाद – PerracoLabs

उत्तर

0

मुझे एक ही समस्या है। ऐसा इसलिए है क्योंकि camera.takePicture(shutterCallback, rawCallback, jpegCallback) पूर्वावलोकन बंद कर देता है; पूर्वावलोकन जारी रखने के लिए आपको camera.startPreview(); पर कॉल करना होगा।

0

मैं अपने आप में आ गया हूं, मैं इसकी एपीआई त्रुटि मान रहा हूं क्योंकि यह आपके लिए मेरे लिए भी वही काम करता है। जब तक आप इस दौरान इसे ठीक करने में कामयाब रहे हैं? मुझे बताएं!

2

मैं अपने गैलेक्सी एस 4 पर प्रदर्शन की भरपाई लॉक करने के लिए

Camera.Parameters parameters = mCamera.getParameters(); 
parameters.setAutoExposureLock(true); 
mCamera.setParameters(parameters); 
mCamera.startPreview(); 

फिर प्रत्येक takePicture कॉलबैक में मैं मूल रूप से सच

Camera.Parameters parameters = mCamera.getParameters(); 
parameters.setAutoExposureLock(true); 
mCamera.setParameters(parameters); 

यह कुछ करने के लिए प्रबंधन करता है करने के लिए लॉक को रीसेट कामयाब रहे। कब्जा कर लिया सभी छवियों लगभग समान उज्ज्वल हैं। exposureCompensation बदलना कोई प्रभाव नहीं पड़ता है, लेकिन जब आईएसओ बदलते हैं तो एक्सपोजर समय स्वचालित रूप से समायोजित होता है।

मैं इसमें कुछ और खोदूँगा और तदनुसार इस पोस्ट को अपडेट करूंगा।

+0

mCamera.set पैरामीटर (पैरामीटर) ने मेरे लिए चाल की धन्यवाद! – dangalg

0

takePicture कॉलबैक में लॉक को रीसेट करने के लिए मेरे सैमसंग गैलेक्सी नोट 3 पर अच्छा काम नहीं करता है। यह स्थिति को थोड़ा बेहतर बनाता है, लेकिन फिर भी काफी अलग चमक वाली छवियां उत्पन्न करता है। उन jepgs के अंदर Exif पुष्टि करें कि exposure time 1/120 से 1/400 सेकंड तक भिन्न होता है।

मैंने यह भी देखा कि कुछ jpegs के समान exposure time (1/120 सेकंड) है लेकिन अलग brightness मूल्य exif में सहेजा गया है। तो, मेरा अनुमान लगाया गया था कि छवि पोस्ट प्रोसेसर गेम ब्रेकर है।

मैंने native_getParameters के माध्यम से सभी कैमरा पैरामीटर को हटा दिया है, छवि सुधार पैरामीटर पाये हैं और उन्हें 5 पर सेट कर दिया है। वे पैरामीटर हैं:

set("min-brightness", 5); 
set("max-brightness", 5); 

set("contrast", 5); 
set("min-contrast", 5); 
set("max-contrast", 5); 

set("max-saturation", 5); 
set("min-saturation", 5); 
set("saturation", 5); 

अब आउटपुट बहुत बेहतर है। छवियों लगभग समान रूप से उज्ज्वल। 500 परीक्षण छवियों में से exposure time = 1/120 ± 1 (शायद ही कभी 1/125) और brightness = 5 ± 0.1 है।

+0

आपने यह कैसे निर्धारित किया कि पैरामीटर मान 5 होना चाहिए? – Airman00

0

मुझे एस 3 पर एक ही समस्या थी। नीचे

public void LockCamera(Camera camera){ 
    //stop auto white balance and auto exposure lock 
    Camera.Parameters params = camera.getParameters(); 
    if (params.isAutoExposureLockSupported()) { 
     params.setAutoExposureLock (true); 
    } 
    if (params.isAutoWhiteBalanceLockSupported()) { 
     params.setAutoWhiteBalanceLock(true); 
    } 
    camera.setParameters(params); 
} 
public void UnLockCamera(Camera camera){ 
    //stop auto white balance and auto exposure lock 
    Camera.Parameters params = camera.getParameters(); 
    if (params.isAutoExposureLockSupported()) { 
     params.setAutoExposureLock (false); 
    } 
    if (params.isAutoWhiteBalanceLockSupported()) { 
     params.setAutoWhiteBalanceLock(false); 
    } 
    camera.setParameters(params); 
}