潘顺昌 2017-12-13
```javascript
受到ios中的提示
iOS - 4.3+ (支持): 支持"aac"、"aiff"、"mp3"、"mid"、"wav"、"amr"等格式文件。 暂不支持播放网络路径音频。
那么就是说播放本地视频是可以的,因此只要把音频下载到ios不就行了么?哈哈,微信里不是很多文件都保存在本地么,说干就干
代码如下:
```javascript
/**
* 下载mp3文件到本地
* @mp3Id id
* @loadUrl 网络路径
* @relativePath 自己存储的相对路径
*/
function downloadMp3toLocalByUrl(mp3Id,loadUrl,relativePath)
{
/*联网下载mp3*/
//创建下载任务
var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {
if (status == 200) {
//下载成功并播放音频
console.log("下载成功");
var mp3src = getImgFromLocal(mp3Id, d.filename);
if ( plus.audio == undefined ) {
mui.toast( "音频播放器加载失败." );
}
console.log("mp3 download dir="+mp3src+",mp3="+d.filename);
p = plus.audio.createPlayer(d.filename);
p.play( function () {
p.stop();//播放完停止
console.log( "Audio play success!" );
}, function ( e ) {
console.log( "Audio play error: " + e.message );
} );
}
else
{
//下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在
console.log("下载失败status=" + status+"=="+relativePath);
//dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);
if (relativePath!=null)
{
delFile(relativePath);
}
}
});
//启动下载任务
dtask.start();
}
/*删除指定文件*/
function delFile(relativePath) {
plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {
entry.remove(function(entry) {
console.log("文件删除成功==" + relativePath);
}, function(e) {
console.log("文件删除失败=" + relativePath);
});
});
}
/*获取本地mp3文件最终路径完整地址
* mp3Id mp3文件id
* relativePath 本地相对路径 例如:"_downloads/demo.mp3"
*/
function getImgFromLocal(mp3Id, relativePath) {
//本地相对路径("_downloads/logo.jpg")转成SD卡绝对路径("/storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/downloads/logo.jpg");
var sd_path = plus.io.convertLocalFileSystemURL(relativePath);
//返回路径全地址
return sd_path;
}
测试代码如下:
startPlay("http://bos.nj.bpc.baidu.com/v1/developer/73bbf22c-7511-4e87-bdc8-d8d0b5b0c47e.mp3");
1 个评论
要回复文章请先登录或注册
7***@qq.com