使用Android媒体播放器播放更改的文件

时间:2014-06-23 10:50:02

标签: java android file randomaccessfile

无论如何,使用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。

有没有解决方法? 我可以使用单独的文件指针吗?

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

Java NIO来救援。 使用内存映射IO,我们可以写入我们的文件,而不会打扰文件指针,因此Android媒体播放器很高兴。这是一个有用的link。 诀窍是设置MappedByteBuffer =音乐文件大小的大小。 如果我们还没有写入缓冲区,我们还需要确保媒体播放器暂停。这可以通过监视文件指针来实现。