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 回答