私の Android アプリでは、オーディオ ストリームを読み取り、そのshoutcast メタデータを解析したいと考えています。NPR プロジェクトのように StreamProxy を使用して動作させました: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java? r=e4984187f45c39a54ea6c88f71197762dbe10e72
問題は、データ接続で機能しないことです。NPR にも同じ問題があります。
要約すると、このプロキシはローカル Web サーバーとして実行され、アプリとリモート ストリーム間のインターフェイスを作成します。生成されたカスタムポートを使用して、localhost 127.0.0.1 で実行されています。サーバーがストリーム データを読み取るとき、 StreamProxyの 223 行で読み取ることができるように、サーバーはそれをアプリにレプリケートします。
client.getOutputStream().write(buff, 0, readBytes);
ただし、その行はデータ接続で次の例外を生成します。
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
私はソケットとストリーミングの専門家ではありません。その場合、wifiとデータ接続の違いが何であるかわかりません。