2011-02-14 14 views
8

मैं एक ऐप विकसित कर रहा हूं, जहां मूल कैमरा ऐप से ली गई एक छवि। उपयोगकर्ता को दिखाया जाना है। कोड मैंने किया है:एंड्रॉइड सैमसंग: कैमरा ऐप इरादा वापस नहीं करेगा .getData()

/* Intent */ 
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
startActivityForResult(intent, TAKE_PICTURE); 

/* Result */ 
onActivityResult(int requestCode, int resultCode, 
     Intent returnIntent) { 
    if(requestCode == TAKE_PICTURE) { 
     //picture from Camera 
     if (resultCode == Activity.RESULT_OK) { 
      if(returnIntent != null) { 
       try { 
        // Get the file path where the image is stored. 
        // This runs fine on all devices, except Samsung ones. 
        Uri selectedImage = returnIntent.getData(); 

        if(selectedImage == null) { 
         if(returnIntent.getExtras() != null && 
          returnIntent.getExtras().get(AppConstants.DATA) != null) { 

          // But, I get the image Bitmap here. Means the image is stored in disk. 
          Bitmap bmp = (Bitmap) returnIntent.getExtras().get(AppConstants.DATA); 
         } 
        } 
       } catch (Exception e) { 
        // 
       } 
      } 
     } 
    } 
} 

समस्या यहाँ है, इसके बाद के संस्करण कोड सभी उपकरणों मैंने कोशिश की पर ठीक काम करता है (HTC के, एसई के), लेकिन यह किसी भी तरह सैमसंग लोगों में विफल रहता है। "उरी चयनित छवि = वापसी INTent.getData();" कभी भी कुछ नहीं देता है। चूंकि मेरा पूरा ऐप फ़ाइल पथ संग्रह के इस तर्क पर बनाया गया है, इसलिए मैं आगे बढ़ने में सक्षम नहीं हूं। क्या कोई समाधान है।

+0

क्या आपको कोई समाधान मिला? – Sharj

उत्तर

11

Specify filename for picture to be taken को कोड के लिए एक EXTRA_OUTPUT पैरामीटर निर्दिष्ट करने के लिए कोड के लिए देखें जो आपको चित्र के लिए फ़ाइल नाम निर्दिष्ट करने देता है। गतिविधि परिणाम कहने पर फ़ाइल नाम याद रखें और इसका उपयोग करें यदि intent.getData NULL

और यदि आप उस बग रिपोर्ट में अन्य टिप्पणियां पढ़ते हैं, तो आपको पता चलेगा कि एंड्रॉइड पर कितनी समस्याएं हैं।

+0

मैं "फ़ाइल नाम याद रखने की कोशिश करता हूं" लेकिन मेरा सदस्य चर भी शून्य है जब ActivityForResult को बुलाया जाता है ... – ogborstad

+0

@ogborstad एक स्थिर क्षेत्र के रूप में अपना चर घोषित करता है और शून्य को प्रारंभ नहीं करता है, अन्यथा चर को अधिलेखित किया जाता है। – Merlin

+0

मुझे पता है कि यह कुछ समय हो गया है क्योंकि यह प्रश्न पोस्ट किया गया था, लेकिन क्या आप जानते हैं कि तस्वीर गैलरी से छवि प्राप्त करने के लिए मैं इसे कैसे करूँगा? स्पष्ट रूप से फोन की एक छोटी संख्या 'उरी uri = data.getData();' हमेशा शून्य (एस 3 मिनी, W8L..something) देता है। – Sebek

3

आपकी सबसे अच्छी शर्त एक फ़ाइल पथ उत्पन्न करना है जिसे आप चित्र को सहेजना चाहते हैं और इसे सदस्य चर में संग्रहीत करना चाहते हैं। फिर, कैमरा गतिविधि को कॉल करते समय, इसे MediaStore.EXTRA_OUTPUT अतिरिक्त में रखें (उरी के रूप में)।

SaveInstanceState() और onRestoreInstanceState() पर ओवरराइड करना सुनिश्चित करें और इस पथ को सही तरीके से सहेजें/पुनर्स्थापित करें। यह सुनिश्चित करेगा कि आपके पास अभी भी यह होगा यदि सिस्टम इस दौरान आपकी गतिविधि को पुनरारंभ करने का निर्णय लेता है (जो अभिविन्यास परिवर्तन और/या स्मृति स्थितियों के कारण बहुत संभव है)।

+0

क्या आप मुझे उदाहरण के उदाहरण में savedInstanceState() और onRestoreInstanceState() को संभालने का उदाहरण दे सकते हैं? – Darpan

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