2010-08-30 24 views
7

Speravo che questo avrebbe funzionato per far sì che lo streaming di Android di MediaPlayer raggiungesse un URL utilizzando l'autenticazione, ma ora non ne sono così sicuro. Non ho problemi a farlo trasmettere da un server aperto (senza autenticazione) ma non vedo alcun modo per dire a MediaPlayer di utilizzare l'autenticazione di base a meno che forse non si usi l'argomento FileDescriptor? Così ho provato questo, ma ottenuto il seguente errore:Come utilizzare FileDescriptor con URL HTTP

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

Il mio codice sembra qualcosa di simile:

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

E 'corretto dire che un FileDescriptor può essere utilizzato solo con file:// URL locali e non è normale http:// URL? In tal caso, qualcuno ha altre idee su come eseguire lo streaming da un server che richiede l'autenticazione utilizzando lo standard MediaPlayer di Android?

risposta

1

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

No, questo è corretto, Java prende la filosofia Unix che "tutto è un file" e la javadoc reads:

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

Tuttavia, l'MediaPlayer can unica aperti descrittori di di file ricercabile con setDataSource(FileDescriptor)

Forse puoi provare qualcosa del genere (non testato)

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

In questo codice, non vedo come l'app sa che tmp ha qualcosa a che fare con InputStream in. – froggythefrog

Problemi correlati