2012-07-19 14 views
7

पर आवंटित स्मृति को बढ़ाएं मैं कैमरे द्वारा ली गई छवियों को प्रदर्शित करने और उन्हें एप्लिकेशन में प्रदर्शित करने का प्रयास करता हूं। जब मैं कम-रिज़ॉल्यूशन छवियों को लेने (आकार में कहते हैं कि 100kb), मैं bitmapped प्रदर्शित करने के लिए स्विच के साथ कोई समस्या नहीं, विपक्ष जब मैं उन्हें उच्च संकल्प (1.5MB) अपवादएप्लिकेशन

Error java.lang.OutOfMemoryError. 
साथ, अनुप्रयोग क्रैश में ले

यह मेरे स्मार्टफोन (सैमसंग गैलेक्सी एसआईआई, एसआईआईआई गैलेक्सी) पर होता है जो सभी अलमारियों पर होता है। अब के लिए मैंने तस्वीरों की गुणवत्ता और आकार को कम करके मैन्युअल रूप से हल किया है, लेकिन बढ़ते संकल्प के साथ कैमरों के विकास को देखते हुए, यह समस्या अधिक बार उत्पन्न होने की संभावना है। क्या डिवाइस पर और कोड में मैन्युअल हस्तक्षेप के बिना एंड्रॉइड के लिए मेरे एप्लिकेशन में आवंटित स्मृति को बढ़ाने का स्थायी समाधान नहीं है?

छवियाँ बिटमैप प्रारूप

//image creation 
Uri domuri1 

ContentValues cv = new ContentValues(); 
cv.remove("101"); 
domuri1 = getContentResolver().insert(Media.EXTERNAL_CONTENT _URI, cv); 
File domthumb1 = new File(domuri1.toString(), fileName1); 

//increment photo apparate 
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, domuri1); 
startActivityForResult(intent, 100); 

//images save 
ContentResolver cr = getContentResolver(); 
bitmap1 = MediaStore.Images.Media.getBitmap(cr, domuri1); 
imageView.setImageBitmap(bitmap1); 

उत्तर

13

में जमा हो जाती एक सामान्य एप्लिकेशन के लिए डिफ़ॉल्ट स्मृति मूल्य 16MB है और आप android:largeHeap="true" (जो स्मृति 64MB अप करने के लिए बढ़ सकता है) applicattion टैग के अंदर अपने manifiest फ़ाइल में उपयोग कर सकते हैं। आप ActivityManager.getMemoryClass() और ActivityManager.getLargeMemoryClass() द्वारा आपको दिए गए मेमोरी मान प्राप्त कर सकते हैं।

भले ही आप largeHeap के लिए पूछें, भले ही एंड्रॉइड केवल अधिक मेमोरी असाइन करेगा यदि आपके सभी एप्लिकेशन को इसकी आवश्यकता है।

+0

अच्छा idee लेकिन अगर मैं <आवेदन एंड्रॉयड में मेरी androidManifest में जोड़ें: आइकन = "@ drawable/icone" एंड्रॉयड: लेबल = "@ स्ट्रिंग/app_name" एंड्रॉयड: विषय = "@ एंड्रॉयड: शैली/Theme.NoTitleBar "एंड्रॉइड: bigHeap =" true "> ईक्लीप्स टेल मुझे त्रुटि: पैकेज 'एंड्रॉइड' – vetic

+0

में विशेषता 'bigHeap' के लिए कोई संसाधन पहचानकर्ता नहीं मिला है, जिसे आप लक्षित कर रहे हैं? – aProgrammer

+0

मैंने एपीआई 8 के साथ परीक्षण किया है और एपीआई 11 और एंड्रॉइड 3.0 – vetic

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