<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Greetings,<div><br></div><div>tl;dr - I'm looking for sources to an Android Icecast client written in Java.<br><div><br></div><div>long summary:</div><div><br></div><div>I maintain an open source Android app (WREK Online) that plays the live mp3 stream from the station's Icecast server.</div><div><br></div><div>Using the built in MediaPlayer class that is part of the Android SDK works OK. As a developer, I just give it the streaming URL of the Icecast server, hook up a few callbacks, and it plays just fine. But this class has its limitations and a few bugs.</div><div><br></div><div><span style="font-size: 12pt;">The biggest limitation of Android's MediaPlayer class is that it can't pull down the metadata from the Icecast server. It doesn't pass allow an option for the developer to pass up an Ice-MetaData header for the specified URL. And even if you could, it likely wouldn't be able to parse out the inline metadata within the returned HTTP byte stream (as indicated by the presence of an icy-metaint header).</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">So therefore, my app can't show the current artist and song title on the screen very easily. An alternative option is to continuously make an http polling request for the "status.xsl" page on the server and parse this information out. But polling isn't an ideal solution.</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">I am considering going full on an writing my own replacement for MediaPlayer. This would mean handling my own HTTP streaming, my own MP3 frame parser, additional code to extract out the metadata from the stream bytes, calling into Android's MediaCodec APIs to convert to PCM, and ultimately into an AudioTrack instance. All of which I am comfortable doing. However, this will likely take me a better part of a week to get working with lots of testing and bug fixing.</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">Is there an open-source solution I could potentially leverage? I know there are few Linux projects written in C/C++ that have been ported to the Android NDK, but I'd prefer an Android Java solution. I've Google'd around, but couldn't find anything definitive.</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">Suggestions?</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">Thanks,</span></div><div><span style="font-size: 12pt;">jSelbie</span></div><div><span style="font-size: 12pt;"><br></span></div><div><br></div><div><br></div></div>                                            </div></body>
</html>