2010-08-30 13 views
7

मुझे उम्मीद थी इस Android के MediaPlayer एक URL सत्यापन का उपयोग करने से स्ट्रीम करने के लिए प्राप्त करने के लिए काम करने के लिए जा रहा था के साथ FileDescriptor उपयोग करते हैं, लेकिन अब मैं इतना यकीन नहीं है। मुझे कोई समस्या नहीं यह एक खुला सर्वर (कोई प्रमाणीकरण) से स्ट्रीम करने के लिए हो रही है, लेकिन जब तक शायद FileDescriptor तर्क काम करता है का उपयोग करते हुए मैं किसी भी तरह बुनियादी प्रमाणीकरण का उपयोग करने के लिए MediaPlayer बताने के लिए नहीं दिखाई देता? तो मैं इस कोशिश की, लेकिन निम्न त्रुटि मिला:मैं कैसे करूँ HTTP URL को

File f = new File(new URL("http://www.myserver.com/music.mp3").toURI()); 
FileInputStream fis = new FileInputStream(f); 
mediaplayer.SetDataSource(fis.getFD()); 

यह सही कहना है कि एक FileDescriptor केवल स्थानीय file:// यूआरएल और सामान्य नहीं के साथ इस्तेमाल किया जा सकता है:

IllegalArgumentException: Expected file scheme in URI http://www.myserver.com/music.mp3 

मेरे कोड कुछ इस तरह दिखता http:// यूआरएल? यदि हां, तो किसी को भी कैसे एक सर्वर Android के MediaPlayer का उपयोग कर कि प्रमाणीकरण की आवश्यकता से स्ट्रीम करने के लिए पर किसी भी अन्य विचारों है?

उत्तर

1

Is it correct to say that a FileDescriptor can only be used with local file:// URL

नहीं, यह गलत है, जावा यूनिक्स धारणा है कि और javadoc reads "सब कुछ एक फाइल है" लेता है:

handle to the underlying machine-specific structure representing an open file, an open socket, or another source or sink of bytes.

हालांकि, MediaPlayer ही खुला seekable setDataSource(FileDescriptor)

साथ फ़ाइल वर्णनकर्ता कर सकते हैं

शायद आप इस तरह कुछ (अनचाहे)

URLConnection connection = new URL(url).openConnection(); 
// Authenticate the way you can 
connection.setRequestProperty("HeaderName", "Header Value"); 

// Save into a file 
File tmp = new File(getCacheDir(), "media"); 
InputStream in = connection.getInputStream(); 
FileOutputStream out = new FileOutputStream(tmp); 
// TODO copy in into out 
mediaPlayer.setDataSource(tmp); 
+0

इस कोड में, मैं नहीं दिखाई दे रहा है कि कैसे एप्लिकेशन जानता tmp में InputStream से कोई लेना देना नहीं है। – froggythefrog

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