2011-06-14 14 views
5

में वापस आने में विफल रहता है जब मैं कैमरा को एक इरादा खोलता हूं तो मुझे गैलेक्सी टैब लिमिटेड संस्करण (Google I/O) में समस्याएं आ रही हैं।कैमरा छवि कैप्चर इरादा गैलेक्सी टैब सीमित संस्करण

 
Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new  
    File(mSavedFilePath))); 
startActivityForResult(imageCaptureIntent, REQUEST_IMAGE_CAPTURE); 

एक Motorola Xoom इस कोड को ठीक काम कर रहा है पर:

यह मेरा कोड है। लेकिन गैलेक्सी टैब 10.1 पर, मुझे कभी भी कैमरा ऐप से प्रतिक्रिया प्राप्त नहीं होती है।

मेरे पास एक स्टैक ट्रेस नहीं है क्योंकि मुझे कोई त्रुटि नहीं है।

किसी को भी कोई विचार है?

+0

आप logcat से कोई भी जानकारी नहीं मिल सका दे सकता है? – Macarse

+0

क्या आपने अभी तक अपना डिवाइस 3.1 तक अपडेट किया है? अधिकांश आंतरिक ऐप्स में उस डिवाइस पर 3.0 रिलीज़ पर बग थीं। आप मैन्युअल रूप से 3.1 को अपडेट करने और फिर से प्रयास करने का प्रयास कर सकते हैं। – Devunwired

उत्तर

0

यह एक बग की तरह लगता है ...

लेकिन अभी मामले में, आप अपने AndroidManifest.xml पर शामिल निम्नलिखित है ???

<uses-permission android:name="android.permission.CAMERA"></uses-permission> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

इसके अलावा आप अतिरिक्त के बिना इरादे का उपयोग करने का प्रयास कर सकते हैं।

Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(imageCaptureIntent, REQUEST_IMAGE_CAPTURE); 

परिणामस्वरूप बिटमैप छोटा होगा लेकिन कम से कम आप यह देखने के लिए कोशिश कर सकते हैं कि यह काम करता है या नहीं। मुझे उम्मीद है कि यह मदद करता है।

सादर,

3

आप जब कैमरा ऐप के लिए आशय की शुरूआत कैमरा अनुमति की जरूरत नहीं है। हालांकि यह एंड्रॉइड मंच पर एक बेहद खंडित प्रक्रिया है। मुझे इसके साथ बहुत सारे मुद्दे हैं। मूल रूप से यदि आप कैमरे ऐप पर भेजे गए अतिरिक्त फ़ाइल की जांच करते हैं तो आप देखेंगे कि परिणाम लौटने पर उसका आकार 0 बाइट्स है। यह बग बहुत सारे एंड्रॉइड उपकरणों में मौजूद है और आप इसे अधिकतर फिक्स करने के लिए एक कामकाज है और यह तब होता है जब यह विफल हो जाता है (इसका मतलब है कि कोई अतिरिक्त अतिरिक्त आउटपुट वापस नहीं आया है और यदि ऐसा है तो अतिरिक्त फ़ाइल नहीं बनाई गई है या लंबाई 0 तो आपको इस उद्देश्य से उरी को प्राप्त करने की आवश्यकता है: intent.getData(); यह एक यूरी को फ़ाइल में वापस कर देगा जो मूल रूप से अतिरिक्त आउटपुट उरी के समान ही बनता है ताकि आप छवि को प्राप्त करने के लिए उसी दृष्टिकोण का उपयोग कर सकें ।

आप छवि देखेंगे Media.Images प्रदाता के भीतर और कैमरे निर्देशिका में है और वहाँ में intent.getData() उरी की ओर इशारा करते ओएफसी संग्रहित है।

आशा इस मदद करता है। मत भूलना वोट करने के लिए : डी

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे इरादे से डेटा नहीं मिल रहा है क्योंकि कैमरा मेरे ऐप पर नियंत्रण नहीं लौटाता है। एक फोटो लेने के बाद onActivityResult() को कभी नहीं कहा जाता है। – PipiBadenas

+0

क्या आप प्रारंभिक गतिविधि ForResult (इरादा) के साथ कैमरा ऐप शुरू करते हैं ?? ओह, जैसा कि मैंने देखा है कि आप हैं ... लेकिन इसे कम से कम किसी प्रकार का परिणाम वापस करना चाहिए ... जब आप किसी ऐसी गतिविधि पर वापस आते हैं जिसे परिणामस्वरूप दूसरा कहा जाता है तो आपको हमेशा परिणाम मिल जाता है: डी। यह नियम है .. यह गतिविधि हो सकती है। रद्द या गतिविधि। ओके या कुछ अन्य तृतीय पक्ष कोड ... – DArkO

+0

लेकिन अभी भी मौका है कि कैमरा ऐप मानक तरीके से काम नहीं करता है। जहां तक ​​मैंने अभी तक देखा है, एंड्रॉइड से वास्तव में कैमरे के इरादे से परिणाम प्राप्त करने के लिए एक परिभाषित इरादा/तरीका नहीं है। यह सब निर्माताओं के कार्यान्वयन पर निर्भर करता है। भले ही वे इसे संभव बनाने का प्रयास करते हैं, वे ज्यादातर बार विफल हो जाते हैं और यह बदसूरत सच्चाई है, खासकर बीटा संस्करणों और प्रारंभिक रिलीज में। – DArkO

2

मैं बहुत भी इससे निराश था। हालांकि, मुझे एक (बल्कि दयनीय) कामकाज मिला।

मुझे कहना चाहिए, ठीक है, कि मैं मानक 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 फिर से सेट किया गया ताकि स्मृति को जीसी द्वारा पुनः दावा किया जा सके।

मैं यह स्वीकार करने वाला पहला व्यक्ति होगा कि यह एक क्लज है, लेकिन यह काम करता है और कैमरे-नल-इंटेंट बग के साथ या उसके बिना संगत है।

मुझे आशा है कि इससे मदद मिलती है!

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