Base64转amr音频文件
2023-02-18 16:39:23 时间
function dataURL2Audio(fname, base64Str, callback) { //base64转amr文件
var mv = base64Str || '';
if (typeof callback != 'function' || mv == '') return;
fname = fname || ((new Date()).getTime());
fname = (fname.indexOf('.amr') == fname.length - 4) ? fname : fname + '.amr';
var audioName = '_doc/audio/' + fname;
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 Str = plus.android.importClass("java.lang.String");
var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
try {
var myatb, bstr;
var out = new FileOutputStream(fullPath);
var mystr = atob(mv);
var mlen = mystr.length;
var sstr = '';
//分块处理传入base64串
while (mlen > 0) {
mysub = mystr.substr(0, 1000);
mystr = mystr.substr(1000);
mlen = mystr.length;
myatb = new Str(mysub);
bstr = myatb.getBytes("ISO8859-1");
out.write(bstr);
}
out.close();
callback && callback(entry); // 回调
} catch (ex) {
console.log('写入失败');
}
} else if (mui.os.ios) {
var NSData = plus.ios.importClass('NSData');
var nsData = new NSData();
nsData = nsData.initWithBase64EncodedStringoptions(mv, 0);
if (nsData) {
nsData.plusCallMethod({
writeToFile: fullPath,
atomically: true
});
plus.ios.deleteObject(nsData);
}
callback && callback(entry); // 回调
}
})
})
}
相关文章
- 在java中进行日期时间比较的4种方法
- 使用java8API遍历过滤文件目录及子目录及隐藏文件
- 真的简单,文本文件逐行处理–用java8 Stream流的方式
- 使用位运算、值交换等方式反转java字符串-共四种方法
- 有效提高java编程安全性的12条黄金法则
- 恕我直言你可能真的不会java第12篇-如何使用Stream API对Map类型元素排序
- 恕我直言你可能真的不会java第11篇-Stream API终端操作
- 恕我直言你可能真的不会java第10篇-集合元素归约
- 恕我直言你可能真的不会java第9篇-Stream元素的匹配与查找
- 恕我直言你可能真的不会java第8篇-函数式接口
- 恕我直言你可能真的不会java第6篇:Stream性能差?不要人云亦云
- 恕我直言你可能真的不会java第5篇:Stream的状态与并行操作
- 恕我直言你可能真的不会java第4篇:Stream管道流Map操作
- 恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑
- 恕我直言你可能真的不会java第2篇:Java Stream API?
- 恕我直言你可能真的不会java第1篇:lambda表达式会用了么?
- java应用性能调优之详解System的gc垃圾回收方法
- 参与国际化项目需遵循的java命名规范
- Java Stream函数式编程第三篇:管道流结果处理
- 使用Java8 Stream API对Map按键或值进行排序