Ответ 1
Сервер
HTTP
действительно был размещен на самом телефоне. Это было очень просто: простоthread
прослушивание сокета дляHTTP GET
запрос. Когда он получит запросHTTP
, это будет одинnew socket
, напишите несколько заголовковHTTP
и начните сбрасывать аудиоданныеMP3
назад кsocket
. Этот серверHTTP
ничего не делал.
Android Media Player
играл музыку, когда я транслировал Это.Media Player
вел себя очень плохо, если его воспроизведениеbuffer
был опустошен, когда он воспроизводил звук. Это было очень важно для меня чтобы мой серверHTTP
продолжал записывать данные вsocket
. я переместил байты в сокет в маленьких кусках (10 кБ). Заголовки на моем ОтветHTTP
оказался таким:// Build response headers StringBuilder sb = new StringBuilder(); sb.append( "HTTP/1.1 200 OK\r\n"); sb.append( "Content-Type: audio/mpeg\r\n"); sb.append( "Connection: close\r\n" ); sb.append( "Accept-Ranges: bytes\r\n" ); sb.append( "Content-Length: " + totalFileSize + "\r\n" ); sb.append( "Content-Disposition: inline; filename=xxxxx.mp3\r\n\r\n");
Пока я поддерживал трубку, то
Android Media Player
сохранялся потребляя его без жалобы. Для воспроизведения звука требуется только один запрос и ответ. В итоге он работал очень хорошо.