gpt4 book ai didi

android - 下载的播客的音频问题

转载 作者:行者123 更新时间:2023-12-03 01:03:40 26 4
gpt4 key购买 nike

我最近开发了一个应用程序,可以下载特定的播客。该应用程序下载音频文件,但音频每隔几秒钟(在设备和仿真器中)几乎没有“打ic”。当我将文件下载到计算机上时,“打ic”不存在。我还注意到下载到设备的文件比下载到我的计算机的文件大5mb。

这是我下载音频文件的代码:

URLConnection conn = url.openConnection();
conn.connect();

int fileSize = conn.getContentLength();

InputStream input = new BufferedInputStream(url.openStream());
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file));

byte data[] = new byte[1024];

long total = 0;

while((count = input.read(data)) != -1)
{
total += count;
if((total % 512000) <= 1000)
publishProgress((int)(total*100/fileSize));
output.write(data);
}

output.flush();
output.close();
input.close();

上面的代码有什么问题吗?或者这只是android下载音频文件的方式吗?其他人有这个问题,知道如何解决吗?

谢谢你的帮助

最佳答案

尝试检查0字节计数。基于套接字的流允许读取0字节以应对网络延迟等,以防止阻塞(这就是为什么将-1的计数视为EOF而不是0的原因)。

试试这个...

while((count = input.read(data)) != -1) {
// Check for count being 0 bytes read
if (0 != count) {
total += count;
if((total % 512000) <= 1000)
publishProgress((int)(total*100/fileSize));
// Write count bytes to the output stream
output.write(data, 0, count);
}
}

不知道是否会解决它,但这是一个好习惯。

编辑:考虑一下,更好的做法是只写输入流读取的实际计数。

关于android - 下载的播客的音频问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com