2

Androidメディアプレーヤーを使用して、動的に追加されているファイルを再生する方法はありますか?

私は RandomAccessFile を使ってみました:

public static RandomAccessFile tempMp3;
tempMp3 = new RandomAccessFile(Environment.getExternalStorageDirectory()+"/ggg", "rw");
StaticData.tempMp3.setLength(file_size);
StaticData.tempMp3.seek(0);

//ここで自動更新関数を呼び出し、X バイトが書き込まれた後に playMediaPlayer を呼び出します

StaticData.mediaPlayer.setDataSource(StaticData.tempMp3.getFD());
StaticData.mediaPlayer.prepare();
StaticData.mediaPlayer.start();

なので、基本的には更新とプレイを同時に行っています。問題は、MediaPlayer と私の Update 関数の両方がファイル ポインターにアクセスして移動しているため、MediaPlayer が台無しになることです。

回避策はありますか? 別のファイル ポインタを使用できますか?

4

1 に答える 1

0

これを解決しました。

救助へのJava NIO。メモリ マップド IO を使用すると、ファイル ポインターを乱すことなくファイルに書き込むことができるため、Android メディア プレーヤーは問題なく動作します。ここに役立つリンクがあります。秘訣は、MappedByteBuffer のサイズ = 音楽ファイルのサイズを設定することです。また、バッファにまだ書き込みを行っていない場合は、メディア プレーヤーが一時停止するようにする必要があります。これは、ファイル ポインタを監視することで実現できます。

于 2014-06-28T20:33:04.200 に答える