我尝试使用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。
有没有解决方法? 我可以使用单独的文件指针吗?
答案 0 :(得分:0)
解决了这个问题。
Java NIO来救援。 使用内存映射IO,我们可以写入我们的文件,而不会打扰文件指针,因此Android媒体播放器很高兴。这是一个有用的link。 诀窍是设置MappedByteBuffer =音乐文件大小的大小。 如果我们还没有写入缓冲区,我们还需要确保媒体播放器暂停。这可以通过监视文件指针来实现。