在使用官方base64 audio播放例子时,在特定一款安卓手机上报错 setDataSourceFD failed.:status=0x80000000,其中极少数音频数据能播放成功

其他所有安卓手机,及苹果手机均未出现该问题(已用大量相同音频数据测试)

0abe6935988379caf6e9b5f9e804d05c.png

手机型号为 小米8 miui10.0.6稳定版 android8.1.0

代码如下:

dataURL2Audio(base64Str, function(entry) {

var player = plus.audio.createPlayer(path);

player.play(function() {

player = null;

}, function(e) {

mui.alert("播放失败:" + path + e.message);

});

})

function dataURL2Audio(base64Str, callback) {

var base64Str = base64Str.replace('data:audio/amr;base64,', '');

var audioName = (new Date()).valueOf() + '.amr';

plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {

fs.root.getFile(audioName, {

create: true

}, function(entry) {

// 获得平台绝对路径

var fullPath = entry.fullPath;

if(mui.os.android) {

// 读取音频

var Base64 = plus.android.importClass("android.util.Base64");

var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");

try {

var out = new FileOutputStream(fullPath);

var bytes = Base64.decode(base64Str, Base64.DEFAULT);

out.write(bytes);

out.close();

// 回调

callback && callback(entry);

} catch(e) {

console.log(e.message);

}

}

})

})

}

[QQ]

759493637

求解答

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐