gpt4 book ai didi

java - android/java 如何从服务器响应中获取音频文件?

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

我正在制作一个应用程序,我必须从服务器下载音频文件并将其保存到 Android 手机。我能够使用响应处理程序并使用流字符串来获取二进制字符串。音频文件已下载,但文件大小较大,并且在记事本中打开音频文件时有附加(特殊字符)字符。

从服务器下载文件的代码

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://12.2.4.212:8080/v1/AUTH_fa32121dfaccsa12dascadsa2/audio/"+filename);
httpget.setHeader("X-Auth-Token","MIIKKgYJKoZIhvcNAQcCoIIKGzCCChcCAQExCTAHBgUrcNA=");
httpget.setHeader("Content-Type", "application/octet-stream");

ResponseHandler<String> rh = new BasicResponseHandler();
String response = httpclient.execute(httpget, responseHandler);

将文件保存到android的代码

InputStream is;
FileOutputStream fos;
File directory = new File(context.getExternalCacheDir(), "App/Audio");
File musicFile = new File(directory, filename);
if(!musicFile.exists()){
try {
cacheDirectory.mkdirs();
musicFile.createNewFile();
is = new ByteArrayInputStream(response.getBytes("UTF-8"));
fos = new FileOutputStream(musicFile);
byte[] buffer = new byte[is.available()];
fos.write(buffer);
is.close();
fos.close();
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}

预先感谢,我已经尝试了其他 stackoverflow 建议,但不起作用

最佳答案

您可以使用下载管理器

String dir = Environment.DIRECTORY_MUSIC;
dir += "/klp";
File fileDir = new File(dir);
if (!fileDir.isDirectory()) {
fileDir.mkdir();
}

Toast.makeText(DetailActivity.this, "Download song " + name,
Toast.LENGTH_SHORT).show();
// Download File
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setDescription(nameFile);
request.setTitle(name);
// in order for this if to run, you must use the android 3.2 to
// compile your app
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(dir, nameFile);

// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

关于java - android/java 如何从服务器响应中获取音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375597/

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