我有一个webservice,返回一个音频(.wav)
文件的base64编码字符串。我尝试了以下代码:
private String base64StringToFile(String base64AudioData) {
String fullPath = null;
byte[] decoded = Base64.decode(base64AudioData,1);
//byte[] decoded = Base64.decode(encoded, 0);
Log.e("~~~~~~~~ Decoded: ", Arrays.toString(decoded));
try {
fullPath = FileManger.getttsSavePath()+"/"+("fTts.wav");
File file2 = new File(fullPath);
//File file2 = new File(Environment.getExternalStorageDirectory() + "/hello-5.wav");
FileOutputStream os = new FileOutputStream(file2, true);
os.write(decoded);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return fullPath;
}
这段代码创建了一个文件,但是该文件无法正常工作。如果我将 wav
文件转换为 base64 然后使用此代码,则可以正常工作。但它在我从 api
响应中获取的字符串上无法正常工作。这个字符串没有问题,因为相同的字符串在 iOS
版本中可以正常工作。所以请有经验的人帮助我解决这个问题。这是我从 Web 服务响应中获取的字符串:
PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgo8dGl0bGU+RXJyb3IgNDA2IHgtbnVhbmNlLXNlc3Npb25pZDE4ZWM1ZTQ3LTE4OGEtNGEyMS1hNWVjLWM3YjBjMWNlNjYyOApSZWNlaXZlZCBRdWVyeUVycm9yOiA1MTEgVm9pY2Ugbm90IGF2YWlsYWJsZS4gRm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgdm9pY2VzLCBwbGVhc2Ugc2VlIHRoZSBEcmFnb24gTW9iaWxlIFNESyB3ZWJzaXRlLjwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+PGgyPkhUVFAgRVJST1IgNDA2PC9oMj4KPHA+UHJvYmxlbSBhY2Nlc3NpbmcgL05NRFBUVFNDbWRTZXJ2bGV0L3R0cy4gUmVhc29uOgo8cHJlPiAgICB4LW51YW5jZS1zZXNzaW9uaWQxOGVjNWU0Ny0xODhhLTRhMjEtYTVlYy1jN2IwYzFjZTY2MjgKUmVjZWl2ZWQgUXVlcnlFcnJvcjogNTExIFZvaWNlIG5vdCBhdmFpbGFibGUuIEZvciBhIGxpc3Qgb2YgYXZhaWxhYmxlIHZvaWNlcywgcGxlYXNlIHNlZSB0aGUgRHJhZ29uIE1vYmlsZSBTREsgd2Vic2l0ZS48L3ByZT48L3A+CjwvYm9keT4KPC9odG1sPgo=
base64AudioData
输入参数包含来自服务器的错误消息,而不是任何.WAV数据。 - Snild Dolkow