मैं बहुत भी इससे निराश था। हालांकि, मुझे एक (बल्कि दयनीय) कामकाज मिला।
मुझे कहना चाहिए, ठीक है, कि मैं मानक ACTION_IMAGE_CAPTURE इरादे का उपयोग नहीं कर रहा था। क्योंकि मैं एक विंडो में कैमरा छवि करना चाहते थे, मैं अपने ही लेआउट का इस्तेमाल किया और मैं एक टेम्पलेट के रूप में निम्नलिखित प्रयोग किया है: दोहन स्क्रीन कॉल Camera.PictureCallback समारोह onPictureTaken (बाइट
How to Program the Google Android Camera to Take Pictures
[] imageData, कैमरा सी), जहां मैं बाइट [] चित्र को पकड़ता हूं। मेरे पास एक वैश्विक चर "बाइट [] MainApplication.snapshotBytes" है जो इस फ़ंक्शन से imageData द्वारा असाइन किया गया है।
अब डेटा वैश्विक स्तर पर सहेजा गया है, और कॉलिंग गतिविधि के लिए उपलब्ध है, वर्तमान गतिविधि को कैसे समाप्त किया जाना चाहिए ताकि कॉलिंग गतिविधि अधिसूचित की जा सके? खैर, कई तरीके हैं, लेकिन मुझे लगता है कि बैक बटन दबाकर अभी भी ऑनएक्टिविटी रिसेट (...) पर कॉल किया गया है। इसलिए, मैंने निम्नलिखित किया:
if (imageData != null)
{
MainApp.snapshotBytes = imageData;
setResult(RESULT_OK);
onBackPressed();
}
कॉलिंग गतिविधि अब तीन और चीजों के लिए ज़िम्मेदार थी।
1: यह कैमरा गतिविधि शुरू करने से पहले MainApp.snapshotBytes = null सेट करता है।
2: जब OnActivityResult (...) बुलाया गया था, यह पहली * resultCode == RESULT_OK * जाँच की, और फिर छवि डेटा है कि वैश्विक MainApp.snapshotBytes में जमा हो गया था का इस्तेमाल किया।
3: अंत में, यह MainApp.snapshotBytes = null फिर से सेट किया गया ताकि स्मृति को जीसी द्वारा पुनः दावा किया जा सके।
मैं यह स्वीकार करने वाला पहला व्यक्ति होगा कि यह एक क्लज है, लेकिन यह काम करता है और कैमरे-नल-इंटेंट बग के साथ या उसके बिना संगत है।
मुझे आशा है कि इससे मदद मिलती है!
आप logcat से कोई भी जानकारी नहीं मिल सका दे सकता है? – Macarse
क्या आपने अभी तक अपना डिवाइस 3.1 तक अपडेट किया है? अधिकांश आंतरिक ऐप्स में उस डिवाइस पर 3.0 रिलीज़ पर बग थीं। आप मैन्युअल रूप से 3.1 को अपडेट करने और फिर से प्रयास करने का प्रयास कर सकते हैं। – Devunwired