首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Okio在Android上编写文件

用Okio在Android上编写文件
EN

Stack Overflow用户
提问于 2018-06-29 11:58:22
回答 1查看 2.7K关注 0票数 1

嗨,我正在从Android设备上读取原始音频,我想使用Okio将其写入一个文件中,如下所示:

代码语言:javascript
复制
BufferedSink sink = Okio.buffer(Okio.sink(file));

我有一个回调来检索音频数据,然后将音频数据写入bufferedSink

代码语言:javascript
复制
@Override
public void onAudioData(byte[] data) {
    sink.write(data);
}

但是有时,当我听音频文件时,最后的帧丢失了,所有文件的长度都是8182字节或倍数。

如果我使用FileOutputStream,一切都很好,但这是第一种方法,我未来的目的是使用Okio管道和OkHttp来流音频。有人知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-02 10:04:31

您的代码并没有显示sink的全部用法,但似乎在完成它之后,您并没有关闭它。因此,只有那些已满的内部段( 8192字节长,所以文件大小应该是这个数字的倍数)才会写入磁盘,而最后一个没有写入磁盘。作为一种解决方案,您应该close()您的Sink

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51101248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档