2012-03-22 16 views
5

मैं Google टीवी के लिए एक एप्लीकेशन विकसित कर रहा हूं और मैं Google टीवी से जुड़े यूएसबी फ्लैश ड्राइव से एक छवि पढ़ना चाहता हूं और इसे अपने एप्लिकेशन में दिखा सकता हूं। मुझे पहले से ही पता है कि छवि को कैसे दिखाया जाए लेकिन मुझे नहीं पता कि यूएसबी से इसे कैसे पढ़ा जाए। मैंने इस कोड के साथ प्रयास किया:मैं यूएसबी फ्लैश ड्राइव से डेटा कैसे पढ़ सकता हूं?

File imgFile = new File("sdcard/image/1.jpg"); 

लेकिन यह यूएसबी के लिए काम नहीं करता है।

"/ sdcard/...." के बदले "sdcard/..."

यदि आप कोशिश "sdcard/.." यह से पढ़ा जाएगा:

उत्तर

1

मैं आप का उपयोग करने की आवश्यकता है लगता है आपके आवेदन की फाइल निर्देशिका, एसडीकार्ड नहीं जो आप चाहते हैं। तो अपने मामले में यह यह पर्यावरण चर का उपयोग करने के लिए अपने बाह्य भंडारण की सूची प्राप्त करने के लिए मदद मिल सकती है "/data/data/your_project_package_structure/files/sdcard/image/1.jpg"

भी खोलने का प्रयास करेंगे/यूएसबी

Uri u = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "blabla.xml")); 

डिबग और एक फ़ाइल एक्सप्लोरर पथ सही है का उपयोग कर सुनिश्चित करें।

+1

धन्यवाद लेकिन क्योंकि getExternalStorageDirectory विधि एक फाइल सिस्टम है कि सभी aplications में साझा किया जाने देता है और आम तौर पर यह sdcard है, लेकिन गूगल टीवी एकाधिक है कि जैसे उपकरणों में यह काम नहीं करता बाहरी भंडारण, यह विधि प्राथमिक फाइल सिस्टम को साझा करती है जो साझा की जाती है और Google टीवी में फाइल सिस्टम हटाने योग्य नहीं है। – user1286765

1

यूएसबी उपकरणों को फ़ाइल सिस्टम के रूप में एक्सेस करने के लिए कोई सार्वजनिक एपीआई नहीं है। getExternalStorageDirectory() समाधान नहीं है।

इस कमी को हल करने के लिए, मैं सुझाव देता हूं कि libmedia पर एक लाइब्रेरी डिज़ाइन की गई है, जो डेवलपर्स को एप्लिकेशन बनाने के लिए टूलबॉक्स के रूप में डिज़ाइन किया गया है।

के रूप में सरल रूप में:

VolumeManager volumeManager = new VolumeManager(); 
List<Volume> volumes = volumeManager.getVolumes(); 
Volume volume = volumes.get(0); // simplified 
File rootFolder = volume.getRoot(); 
File imgFile = new File(rootFolder, "image/1.jpg"); 
+0

मैंने इस लाइब्रेरी का उपयोग करने की कोशिश की लेकिन यह "सुरक्षा अपवाद: लाइसेंसिंग.लोव() को fr.maxcom पर पहली बार बुलाया जाना चाहिए .... (SourceFile: 50)" जब मैं वॉल्यूममेनर को तुरंत चालू करने का प्रयास करता हूं। मैंने दिशानिर्देशों का पालन किया: 1) जोड़ा जार 2) उत्पन्न एपीआई कुंजी 3) प्रकट करने के लिए एपीआई कुंजी जोड़ा। –

+0

मेरा मुद्दा यह था कि मैं मुख्य ऐप मैनिफेस्ट की बजाय, मेरी ऐप लाइब्रेरी (जहां मैं वॉल्यूममेनर का उपयोग कर रहा था) के मैनिफेस्ट में एपीआई कुंजी रख रहा था। उस ने कहा, जब मैंने वॉल्यूम्स और फ़ाइलों की गणना करने के लिए साइट पर उदाहरण कोड का उपयोग किया था, तो लॉग वॉल्यूममेनर में "त्रुटि: शून्य" के 20 संदेशों को प्रिंट करते हैं और स्ट्रिंगबिल्डर खाली है। यह आपके उदाहरण में मीडिया संग्रहण निर्देशिका जोड़ने के बावजूद है। –

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