musicPlayer
来自于:开发者立即使用
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。
概述
musicPlayer封装了原生音乐播器,自带大小界面音乐,同时支持iOS锁屏界面控制,Android通知栏控制音乐播放等功能。
固件要求
Android:4.1及以上 iOS:8.0及以上
模块接口
addEventListener
播放器状态监听
addEventListener(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
evenType : '', //播放器事件
//Android: onPrepared onBufferStart onBufferEnd onSeekComplete
//iOS : onBuffering onSeeking onPlaying onError onCompletion
onError onCompletion
musicInfo : {},
}
示例代码
var demo = api.require('musicPlayer');
demo.addEventListener(function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.4及更高版本
startService
开启音乐播放服务
startService({params}, callback(ret))
params
musics:
- 类型: 数组对象
- 描述:(必填项)模块的位置及尺寸
- 内部字段:
[{
name: 0, //(必填项)字符串;音乐名称
filename: 0, //(必填项)字符串;音乐播放地址,支持http:// fs:// widget://
singer: 320, //(必填项)字符串;演唱者
icon: 250 //(必填项)字符串;音乐图片 图片像素300*300为最佳,支持http:// fs:// widget://,
background : "#800080", //背景颜色代码
other : 2, //自定义属性值,可以是你自己的主键id
fenxiangSum : 55,//分享数量
downmusicSum : 66,//下载数量
pinglunSum : 233,//评论数量
},
{
name: 0, //(必填项)字符串;音乐名称
filename: 0, //(必填项)字符串;音乐播放地址,支持http:// fs:// widget://
singer: 320, //(必填项)字符串;演唱者
icon: 250, //(必填项)字符串;音乐图片 图片像素300*300为最佳,支持http:// fs:// widget://
background : "#800080", //背景颜色代码
other : 2, //自定义属性值,可以是你自己的主键id
fenxiangSum : 55,//分享数量
downmusicSum : 66,//下载数量
pinglunSum : 233,//评论数量
}]
notifyStyle:
- 类型: JSON对象
- 描述:(必填项)Android通知栏UI样式设置
- 内部字段:
{
backgroundColor : '#FF3E96',//UI背景色
songNameStyle : {
smallColor : '#FFE4C4',
smallSize : 16,
bigColor : '#FFE4C4',
bigSize : 18
},
songSingerStyle : {
smallColor : '#FFE4C4',
smallSize : 10,
bigColor : '#FFE4C4',
bigSize : 8
},
ticker : ''//通知栏提示
}
currentIndex:
- 类型: 数字型
- 描述:(必填项)指定从数组序号开始播放
- 默认值:0
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg: ''
}
示例代码
var demo = api.require('musicPlayer');
demo.startService({
musics: [{
name: "魏心雨",
filename: "https://sharefs.yun.kugou.com/202010222113/8c36e16ae35617c8855b89f797742a4e/G189/M05/06/15/_Q0DAF5afxmAYsQZADLMf64OiWA402.mp3",
singer: "念人心",
icon: "http://7xwc0t.com1.z0.glb.clouddn.com/apicloud/3a3d926564ab4c5b2292744d5ffb0ec6.jpg",
other: 1,
fenxiangSum: 43,
downmusicSum: 12,
pinglunSum: 45,
background: "http://7xwc0t.com1.z0.glb.clouddn.com/apicloud/3a3d926564ab4c5b2292744d5ffb0ec6.jpg"
}, {
name: "魏心雨(本地)",
filename: "widget://res/MP3s/lianrenxin.mp3",
singer: "念人心",
icon: "http://7xwc0t.com1.z0.glb.clouddn.com/apicloud/7c23cd15fc8fe841ab20f6c87d47ae59.jpg",
other: 2,
fenxiangSum: 55,
downmusicSum: 66,
pinglunSum: 233,
background: "#800080"
}, {
name: "小苹果3(widget://)",
filename: "http://7xwc0t.com1.z0.glb.clouddn.com/apicloud/28643b3e661abe4dfb3da33f2d1e2b59.mp3",
singer: "筷子兄弟3",
icon: "widget://res/Images/1.jpg",
other: 3,
fenxiangSum: 123,
downmusicSum: 889,
pinglunSum: 233,
background: "#5F9EA0"
}, {
name: "传奇4(fs://)",
filename: "widget://res/MP3s/shangxuege.mp3",
singer: "王菲1",
icon: "widget://res/Images/nanquan@2x.jpg",
other: 4,
fenxiangSum: 123,
downmusicSum: 889,
pinglunSum: 233,
background: "#00FF7F"
}, {
name: "传奇4(fs://)",
filename: "widget://res/MP3s/cemo111.mp3",
singer: "王菲2",
icon: "http://rm.djkk.com/upload/xingxiang/2008/2008-6/1311407.jpg",
other: 5,
fenxiangSum: 123,
downmusicSum: 889,
pinglunSum: 233,
background: "#00FF7F"
}]
}, function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
stopService
停止音乐播放服务
stopService(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg: ''
}
示例代码
var demo = api.require('musicPlayer');
demo.stopService(function(ret, err){
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
addMusicData
添加音乐数据
addMusicData({params}, callback(ret, err))
params
data:
- 类型:数组对象
- 描述:(必填项)待播放音乐信息
[{ name: '', //(必填项)字符串;音乐名称 filename: '', //(必填项)字符串;音乐播放地址,支持http:// fs:// widget:// singer: '', //(必填项)字符串;演唱者 icon: '', //(必填项)字符串;音乐图片 图片像素300*300为最佳,支持http:// fs:// widget:// background : "#800080", //背景颜色代码 other : 2, //自定义属性值,可以是你自己的主键id fenxiangSum : 55,//分享数量 downmusicSum : 66,//下载数量 pinglunSum : 233,//评论数量 }]
callback(ret, err)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON对象
- 内部字段:
{
msg: ""
}
示例代码
var demo = api.require('musicPlayer');
demo.addMusicData({
data : [{
name : "小苹果3666(widget://)",
filename : "widget://res/MP3s/cemo111.mp3",
singer : "666666",
icon : "widget://res/Images/1.jpg",
other : 5,
fenxiangSum : 3,
downmusicSum : 33,
pinglunSum : 44,
background : "#DDA0DD"
}]
}, function(ret, err) {
alert("addMusic|" + JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
selectMusicItem
指定播放音乐
selectMusicItem({params}, callback(ret,err))
params
index:
- 类型:数字型
- 描述:(可选项)需要播放的id(二选一)
- 默认值:0
other:
- 类型:字符串型
- 描述:(可选项)自定义的id(二选一)
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.selectMusicItem({
index : 2
},function(ret,err){
alert(JSON.stringify(ret,err));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
getCurrentMusic
获取正在播放的音频信息
getCurrentMusic()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
data : {}
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.getCurrentMusic();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
getDuration
获取视频总进度
getDuration()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
duration : ''
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.getDuration();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
getCurrentPosition
获取已经播放进度
getCurrentPosition()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
currentPosition : ''
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.getCurrentPosition();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
isPlaying
是否正在播放音频
isPlaying()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
isPlaying : ''
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.isPlaying();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerMode
切换播放模式
playerMode()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
mode : 2
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerMode();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerPre
播放上一条
playerPre()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerPre();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerPlay
暂停后播放
playerPlay()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerPlay();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerPause
暂停播放
playerPause()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerPause();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerNext
播放下一条
playerNext()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerNext();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerRandom
随机播放
playerRandom()
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerRandom();
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerSeek
设置播放进度
playerSeek({params})
params
seek:
- 类型:数字型
- 描述:(必填项)设置音乐播放进度
- 默认值:0
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerSeek({
seek : 0
});
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.1及更高版本
playerSpeed
设置倍速
playerSpeed({params})
params
speed:
- 类型:浮点型
- 描述:(必填项)设置倍速值(0.5-2.0)
- 默认值:1.0
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true|false
msg : '',
}
示例代码
var demo = api.require('musicPlayer');
var ret = demo.playerSpeed({
speed : 2.0
});
alert(JSON.stringify(ret));
可用性
iOS、Android系统
可提供的1.0.3及更高版本
openMaxView
打开全屏音乐播放界面(悬浮App最上层)
openMaxView({params}, callback(ret,err))
params
isShowMode:
- 类型: 布尔型
- 描述:(可选项)是否显示模式切换按钮
- 默认值:true
isShowDownload:
- 类型: 布尔型
- 描述:(可选项)是否显示下载按钮
- 默认值:true
isShowFenxiang:
- 类型: 布尔型
- 描述:(可选项)是否显示分享按钮
- 默认值:true
isShowPinglun:
- 类型: 布尔型
- 描述:(可选项)是否显示评论按钮
- 默认值:true
isShowSetting:
- 类型: 布尔型
- 描述:(可选项)是否显示设置按钮
- 默认值:true
isShowDanmu:
- 类型: 布尔型
- 描述:(可选项)是否显示弹幕按钮
- 默认值:true
nameTextSize:
- 类型: 数字型
- 描述:(可选项)name文字大小
- 默认值:20
nameTextColor:
- 类型: 数字型
- 描述:(可选项)name文字颜色
- 默认值:#FFFFFF
singerTextSize:
- 类型: 数字型
- 描述:(可选项)singer文字大小
- 默认值:10
singerTextColor:
- 类型: 数字型
- 描述:(可选项)singer文字颜色
- 默认值:#FFFFFF
backgroundColor:
- 类型: 数字型
- 描述:(可选项)背景颜色
- 默认值:#8B8989
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status : true, //布尔型;true|false
evenType : 'onShow',//onShow 界面打开事件
//onBack 返回按钮事件
//onClose 关闭按钮事件
//onSendDanmu 发送弹幕按钮事件
//onPlayerPlay 播放按钮事件
//onPlayerPause 暂停播放按钮事件
//onplayerMode 播放模式按钮事件
//onPlayerPre 播放上一个按钮事件
//onPlayerNext 播放下一个按钮事件
//onPlayerSetting 设置按钮事件
//onPinglun 评论按钮事件
//onDownload 下载按钮事件
//onShare 分享按钮事件
//onPlayerSeek 手动调节进度条事件
seek : 0,
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.openMaxView({
isShowDownload: true,
isShowFenxiang: true,
isShowPinglun: true,
isShowDanmu: true,
nameTextSize: 20,
singerTextSize: 16,
}, function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
hideMaxView
隐藏全屏音乐播放界面
hideMaxView(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.hideMaxView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
showMaxView
显示全屏音乐播放界面
showMaxView(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.showMaxView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
closeMaxView
关闭全屏音乐播放界面
closeMaxView(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.closeMaxView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
sendDanmu
发送一条弹幕信息
sendDanmu({params}, callback(ret, err))
params
text:
- 类型:字符串
- 描述:(必填项)弹幕文字内容
color:
- 类型:字符串
- 描述:(可选项)弹幕文字显示颜色代码
- 默认值:#FFFAFA
callback(ret, err)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true //布尔型;true||false
}
err:
- 类型:JSON对象
- 内部字段:
{
msg: ""
}
示例代码
var demo = api.require('musicPlayer');
demo.sendDanmu({
text : '测试2测试2测试2测试2',
color : '#FF7F24'
},function(ret,err){
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
sendDanmuList
发送多条弹幕信息。
sendDanmuList({params}, callback(ret, err))
params
isLoop:
- 类型:布尔型
- 描述:(可选项)天际的全部数据是否循环播放(循环:true,不循环:false)
- 默认值:false
data:
- 类型:数组对象
- 描述:(必填项)多条弹幕信息记录。
- 内部字段:
[{
text: '', //(必填项)弹幕文字内容
color: '', //(可选项)弹幕文字显示颜色代码[默认值:#FFFAFA]
}]
callback(ret, err)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true //布尔型;true||false
}
err:
- 类型:JSON对象
- 内部字段:
{
msg: ""
}
示例代码
var obj = api.require('musicPlayer');
obj.sendDanmuList({
data : [{
text : '测试1',
color : '#FF7F24'
},{
text : '测试2测试2测试2测试2',
color : '#FF7F24'
}],
}, function(ret, err) {
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
openMinView
打开Min音乐播放界面(悬浮App最上层)
openMinView({params}, callback(ret,err))
params
rect:
- 类型:JSON 对象
- 描述:(必填项)悬浮窗口UI播放的位置及尺寸
- 内部字段:
{
x: 0, //(必填项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(必填项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 320, //(必填项)数字类型;模块的宽度;默认值:手机屏幕的宽度
h: 60 //(必填项)数字类型;模块的高度;默认值:手机屏幕的高度
}
isMaxFont:
- 类型: 布尔型
- 描述:(可选项)是否悬浮显示到最上层
- 默认值:true
fixedOn:
- 类型:字符串
- 描述:(可选项)模块所属 Frame 的名字,若不传则模块归属于当前 Window(isMaxFont为false有效)
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 Window 或 Frame 滚动(isMaxFont为false有效)
- 默认值:true(不随之滚动)
isShowText:
- 类型: 布尔型
- 描述:(可选项)是否name和singer信息
- 默认值:true
nameTextSize:
- 类型: 数字型
- 描述:(可选项)name文字大小
- 默认值:20
nameTextColor:
- 类型: 数字型
- 描述:(可选项)name文字颜色
- 默认值:#FFFFFF
singerTextSize:
- 类型: 数字型
- 描述:(可选项)singer文字大小
- 默认值:10
singerTextColor:
- 类型: 数字型
- 描述:(可选项)singer文字颜色
- 默认值:#FFFFFF
backgroundColor:
- 类型: 数字型
- 描述:(可选项)背景颜色
- 默认值:#8B8989
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status : true, //布尔型;true|false
evenType : 'onShow',//onShow 界面打开事件
//onClick 界面单点事件
//onClose 关闭按钮事件
//onPlayerPlay 播放按钮事件
//onPlayerPause 暂停播放按钮事件
//onPlayerNext 播放下一个按钮事件
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.openMinView({
nameTextSize: 10,
singerTextSize: 8,
}, function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
hideMinView
隐藏Min音乐播放界面
hideMinView(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.hideMinView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
showMinView
显示Min音乐播放界面
showMinView(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.showMinView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
closeMinView
关闭Min音乐播放界面
closeMinView(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.closeMinView();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
openFootButton
打开底部按钮(不是App最上层)
openFootButton({params}, callback(ret,err))
params
rect:
- 类型:JSON 对象
- 描述:(必填项)位置及尺寸
- 内部字段:
{
x: 0, //(必填项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(必填项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 320, //(必填项)数字类型;模块的宽度;默认值:手机屏幕的宽度
h: 60 //(必填项)数字类型;模块的高度;默认值:手机屏幕的高度
}
fixedOn:
- 类型:字符串
- 描述:(可选项)模块所属 Frame 的名字,若不传则模块归属于当前 Window
fixed:
- 类型:布尔
- 描述:((可选项)模块是否随所属 Window 或 Frame 滚动
- 默认值:true(不随之滚动)
backgroundColor:
- 类型: 数字型
- 描述:(可选项)背景色
- 默认值:#8B8989
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status : true, //布尔型;true|false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.openFootButton({
rect: {
w: 50,
h: 80
},
}, function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本
hideFootButton
隐藏底部按钮
hideFootButton(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.hideFootButton();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
showFootButton
显示底部按钮
showFootButton(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.showFootButton();
可用性
iOS、Android系统
可提供的1.0.1及更高版本
closeFootButton
关闭底部按钮
closeFootButton(callback(ret,err))
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status : true, //布尔型;true|false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg : ''
}
示例代码
var demo = api.require('musicPlayer');
demo.closeFootButton(function (ret, err) {
//alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.1及更高版本