gpt4 book ai didi

java - 安卓。正确下载mp3

转载 作者:行者123 更新时间:2023-12-01 11:17:12 27 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我编写了用于下载 mp3 文件的 Android 应用程序。我用 url 下载 mp3,效果很好。但是除VLC之外的任何播放器都无法在设备上找到这些下载的mp3文件。如果我使用任何文件管理器,我可以找到这些文件,但它们没有 mp3 标签。

例如。

这是与我的应用程序一起下载的文件。我使用 FX 文件管理器打开其属性。

enter image description here

它是用另一个程序(不是我的)下载的mp3。正如您所看到的,该文件有 mp3 标签(显示在屏幕底部)

enter image description here

这是我下载文件的代码:

@Override
protected Void doInBackground(String... params) {
InputStream inputStream = null;
FileOutputStream fileOutput = null;
try {
URL url = new URL(params[0]);
File file = new File(path);
URLConnection urlConnection = url.openConnection();

inputStream = urlConnection.getInputStream();
fileOutput = new FileOutputStream(file);

int totalSize = urlConnection.getContentLength();
int downloadedSize = 0;

byte[] buffer = new byte[16384];
int bufferLength = 0;

while ((bufferLength = inputStream.read(buffer)) > 0 ) {

while(isPaused) {
sleep();
}

if(isCancelled()) {
if(file.exists())
file.delete();
return null;
}

fileOutput.write(buffer, 0, bufferLength);
downloadedSize += bufferLength;
publishProgress(downloadedSize, totalSize);
}

if(totalSize > getFreeMemorySize()) {
//if(true) {
if(errorHandler != null)
errorHandler.onMemorySizeException();
cancel(true);
}
} catch (IOException e) {
int i = e.hashCode();
e.getStackTrace();
}
finally {
try {

if(inputStream != null)
inputStream.close();
if(fileOutput != null)
fileOutput.close();

} catch (IOException e) {
int i = e.hashCode();
e.getStackTrace();
}
}
return null;
}

我哪里错了?为什么使用我的应用程序下载的 mp3 文件可以通过 mp3 播放器找到 npt?我该如何解决它?

最佳答案

您所观察到的事实是 MediaStore 不会不断更新其数据库。数据库仅在重新启动和安装 SD 卡后更新。

如果您希望您的文件立即显示,您必须告诉 MediaStore 添加它们。

使用MediaScannerConnection.scanFile方法通知MediaStore。 ( MediaScannerConnection doucumentation ) 请注意,您可以一次添加多个文件/路径。另外值得注意的是,此方法是异步的,文件是在单独的进程中添加的,这可能需要一些时间 - 操作完成时您会收到通知。

MediaScannerConnection.scanFile(
context,
new String[]{file.getAbsolutePath()},
null,
new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
// only at this point are files in MediaStore
}
});

关于java - 安卓。正确下载mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671793/

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