El comentario en la entrada que los puntos originales en la dirección correcta, pero pensé que podría ser útil para exponer un poco ...
Lo que he hecho es crear un servidor proxy ligera usando Naga y el Bibliotecas HTTP de Apache. Debería haber muchos ejemplos para obtener los conceptos básicos de esta parte. Proporcione al MediaPlayer una URL localhost apropiada para que abra un socket a su proxy. Cuando el MediaPlayer realiza una solicitud, use el proxy para enviar una solicitud equivalente al host de medios real. Recibirá datos byte [] en el método Receptor del paquete del proxy, que utilizo para construir un HttpGet y enviarlo en camino con AndroidHttpClient.
Volverás a obtener una HttpResponse y podrás utilizar HttpEntity para acceder a los datos de bytes de transmisión. Estoy usando un ReadableByteChannel, así:
HttpEntityWrapper entity = (HttpEntityWrapper)response.getEntity();
ReadableByteChannel src = Channels.newChannel(entity.getContent());
Haz lo desea con los datos a medida que lee de nuevo (como caché en un archivo en la tarjeta SD). Para pasar el material correcto al MediaPlayer, obtenga el SocketChannel del socket del cliente, primero escriba los encabezados de respuesta directamente en ese canal, y luego proceda a escribir los datos de bytes de la entidad. Estoy usando un ByteBuffer NIO en un ciclo while (el cliente es un Socket y el buffer es un ByteBuffer).
int read, written;
SocketChannel dst = client.getChannel();
while (dst.isConnected() &&
dst.isOpen() &&
src.isOpen() &&
(read = src.read(buffer)) >= 0) {
try {
buffer.flip();
// This is one point where you can access the stream data.
// Just remember to reset the buffer position before trying
// to write to the destination.
if (buffer.hasRemaining()) {
written = dst.write(buffer);
// If the player isn't reading, wait a bit.
if (written == 0) Thread.sleep(15);
buffer.compact();
}
}
catch (IOException ex) {
// handle error
}
}
Es posible que tenga que modificar el encabezado de host en la respuesta antes de pasarlo junto al jugador de manera que parece que su representante sea el emisor, pero estoy tratando con una implementación propietaria de la MediaPlayer así el comportamiento podría ser un poco diferente. Espero que ayude.
Mejor respuesta ella e, si alguien todavía busca la solución: http://stackoverflow.com/a/12044709/1548464 – Taras