この質問は以前に尋ねられましたが、Android の新しいバージョン (Jelly Bean まで) では、ファイルのダウンロードとストリーミングを同時に行うことに関して何らかの進展があるかどうか疑問に思っていました。API からは、これらが利用可能な setDataSource メソッドであるため、本質的に可能であるようには見えません。
void setDataSource(String path)
Sets the data source (file-path or http/rtsp URL) to use.
void setDataSource(Context context, Uri uri, Map<String, String> headers)
Sets the data source as a content Uri.
void setDataSource(Context context, Uri uri)
Sets the data source as a content Uri.
void setDataSource(FileDescriptor fd, long offset, long length)
Sets the data source (FileDescriptor) to use.
void setDataSource(FileDescriptor fd)
Sets the data source (FileDescriptor) to use.
残念ながら、いかなる種類の InputStream も受け入れません。Android アプリでローカル Web サーバーを開き、コンテンツをリモートでダウンロードし、要求されたデータをリッスンしているソケットに出力する古い NPR プロキシ コードを使用する例がありますが、そのコードは 2 年以上前のものであり、まだ標準として使用されています。このタスクを達成するために(多くの人が吃音の問題などがあると報告していますが)。
私は MediaPlayer クラスを調べて、この動作を可能にするためにそれを拡張したいと考えましたが、実装の多くはネイティブ コードを介して行われ、私が読んだことから、さまざまなデバイス メーカーがネイティブ オーディオ機能を異なる方法で実装しています (そうであれば、 、私はそれに触れたくない! :) )。
では、データを破棄せずに、リモート サーバーから受信したオーディオ データ (MP3 または OGG) を保存し、同時にストリーミングするための最良の方法は何ですか? Android 2.2 以降のバージョンが望ましいですが、利用可能な API に関する情報をいただければ幸いです。