22

MediaPlayerを使用してインターネットから同時にダウンロードされるMP3ファイルを再生するためにAndroidを使用していDownloadManagerます。直接ストリーミングする機能を知ってMediaPlayerいますが、それを使用したくありません。

ファイルをダウンロードして同時にストリーミングすることで得られる明らかな利点は、この方法でファイルが保存され、後でローカルで利用できるようになることです。

  • これは原則として機能しMediaPlayerます。完全にダウンロードされていなくても、ファイルの再生が開始されます。MediaPlayer(ところで、私の問題は、プレイできないということではありません。)
  • 問題はMediaPlayer、ダウンロードが再生を開始したときの位置に到達すると、が停止してを呼び出すことonCompletionです。(説明:再生を開始したときにファイルが12%ダウンロードされたと仮定します。プレーヤーが12%の位置に到達すると、ファイルは停止します。)
  • クイックサイドノート: 。OnBufferingUpdateListener.onBufferingUpdate(...)を介してMP3ファイルに何かが追加された場合は呼び出されませんDownloadManager

したがって、問題は、オーディオファイルをファイルシステムに同時にダウンロードして再生するにはどうすればよいかということです。(違いが生じる場合は、Android 4以降で十分です。)

4

3 に答える 3

9

MediaPlayer をファイルに向けていると思います。その場合はストリーミングに対応していないと思いますし、おそらくファイルのサイズなどを事前にチェックしているので、ファイルが増えても更新されません。

ストリーミングで動作するコンテンツ ソース (HTTP など) を指す必要があります。「ES File Explorer」がどのように機能するかを確認しました(LogCatを使用)-リモートファイル共有でビデオファイルをクリックすると、ローカルHTTPサーバーが開き、MediaPlayerにローカルサーバーへのHTTP Uriが送信されます、これにはリモート パスも含まれます。

HTTP 経由でリクエストを取得すると、ローカル サーバーはリモートの場所からファイルの読み取りを開始し、HTTP 経由でローカルに MediaPlayer に提供します。おそらく同じことができ、HTTP 経由で提供するだけでなく、ディスクに保存することもできます。

于 2012-12-13T19:04:41.440 に答える