LBAirDrop
searchList stopBrowse connect disConnect getDeviceByPin open pause resumePlay seekTime stop setVolume addVolume reduceVolume scanString canSupportPushBarrage canCurrentPushBarrage setMediaListener mirror stopMirror
概述
乐播投屏简介
乐播投屏,是一款移动设备(手机/平板等)连接大屏终端(电视、盒子、投影、VR等智能设备)的多屏互动工具,可以实现将移动设备的内容无线投送(可镜像)到大屏终端。
wx 模块概述 LBAirDrop 模块封装了一个移动投屏控件,具有投屏播放,设置音量,发送弹幕等以及其他一些功能。
模块使用攻略
使用之前须从乐播开放平台申请开发者账号并创建应用,获取 appID 和 AppSecret。
配置 config.xml 文件:
针对 ios 平台配置方法:
- 配置示例:
<feature name="LBAirDrop">
<param name="appID" value="12325"/>
<param name="AppSecret" value="a29129bb729ab38edfd54f4cf6b85b9b"/>
<param name="appID_android" value="******"/>
<param name="AppSecret_android" value="***************"/>
</feature>
appId: 乐播云后台应用管理获取的iOS端AppID AppSecret: 乐播云后台应用管理获取的iOS端AppSecret
appID_android: 乐播云后台应用管理获取的android端AppID AppSecret_android: 乐播云后台应用管理获取的android端AppSecret
模块接口
searchList
搜索可投屏的设备
searchList(callback(ret))
params
searchType
- 类型:数字类型
- 描述:(可选项)搜索类型(仅android支持)
- 取值范围:0/搜索乐联和DLNA协议,1/仅搜索乐联协议
- 默认值:0
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
- 注意:没搜到设备时,不返回数据
{
data: [{
lelinkServiceName:'', //字符串类型;搜到的接收端的名称(仅ios支持)
tvUID:'', //字符串类型:接收端的唯一标识,
ipAddress:'', //字符串类型:接收端的IP地址
remotePort:123, //数字类型;linux端口
port:123, //数字类型;android端口
receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
UDN:'', //字符串类型;接收端DLNA的uuid,注意此字段只针对特殊渠道有效,非通用字段(仅iOS有效)
hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务(没有则不不返回)
frequentlyUsed:true, //布尔类型;(非必要的)是否为常用(仅iOS有效)
onceConnected:true, //布尔类型;(非必要的)曾经连接过的服务(仅iOS有效)
lastTimeConnected:true,//布尔类型;(非必要的)上次连接过的服务(仅iOS有效)
isConnected:true,//布尔类型;是否已连接(仅android有效)
fromQRCode:true, //布尔类型;是否从二维码获得的设备(仅iOS有效)
lelinkServiceAvailable:true, //布尔类型;服务是否可用,三个服务中的任意一个可用,则isLelinkServiceAvailable为YES,否则为NO(仅iOS有效)
innerLelinkServiceAvailable:true,//布尔类型; 乐联服务是否可用 (仅iOS有效)
upnpServiceAvailable:true, //布尔类型;DLNA服务是否可用(仅iOS有效)
imServiceAvailable:true, //布尔类型; 公网服务是否可用(仅iOS有效)
isOnline:, //布尔类型;是否在线(仅android有效)
isLocalWifi:, //布尔类型;是否是局域网(仅android有效)
pinCode:'', //字符串类型;设备pin码(仅android有效)(没有则不不返回)
w:, //数字类型;宽(仅android有效)
h:, //数字类型;高(仅android有效)
types:'', //字符串类型;支持服务(仅android有效)
channel:'', //字符串类型;channel(仅android有效)
/*
各类服务数据模型,可以结合服务可用状态判断当前的服务使用的何种投屏方式
1、如果只有upnpDevice有值,则当前的接收端仅仅支持DLNA服务,非乐播的接收端的DLNA就属于此种情况
2、如果只有imDevice有值,且isImServiceAvailable为YES,则当前服务使用公网投屏
3、如果innerLelinkDevice和upnpDevice任意一个有值,则当前服务使用局域网投屏
4、当多个服务有值时,服务使用的优先级,乐联 > DLNA > 公网
1)都有值——>使用乐联
2)乐联和DLNA都有值——>使用乐联
3)乐联和公网都有值——>使用乐联
4)DLNA和公网都有值——>使用DLNA
5)注意此逻辑是SDK内部在使用服务建立连接和投屏时的选择逻辑,SDK使用者可忽略,感兴趣的可以了解一下
*/
innerLelinkDevice:true,//布尔类型;乐联服务数据模型(仅iOS有效)
upnpDevice:true, //布尔类型; DLNA服务数据模型(仅iOS有效)
imDevice:true //布尔类型; 公网服务数据模型(仅iOS有效)
}]
}
err:
- 类型:JSON 对象
内部字段:
{
msg:'', //字符串类型;错误信息(仅android支持)
}
示例代码
var demo = api.require('LBAirDrop');
demo.searchList(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stopBrowse
停止搜索(仅android支持)
stopBrowse(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
内部字段:
{
status:, //布尔类型;是否成功
}
err:
类型:JSON 对象
内部字段:
{
msg:'', //字符串类型;错误信息
}
示例代码
var demo = api.require('LBAirDrop');
demo.stopBrowse(function(ret){
alert(JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本
connect
链接投屏设备
connect(callback(ret))
params
uid:
- 类型:字符串类型
- 描述:要连接的设备uid,需要是已搜索到的设备或已获取到的设备uid(仅Android支持)
index:
- 类型:数字类型
- 描述:(仅iOS支持)searchList接口获取到的数组的index
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔值;链接成功与失败的状态/断开链接成功与失败的状态;当false时,不返回eventType
eventType:'',
-'disConnect' //字符串类型;断开链接成功
-'connect' //字符串类型;链接成功
- ‘connectError’ //连接失败
connectType:'', //字符串类型;连接方式,eventType为connect时返回 取值范围:‘Lelink’/‘DLNA’/‘NEW_LELINK’/‘IM’(仅android支持)
uid:'', //字符串类型;设备uid,(仅android支持)
errorCode:, //数字类型;eventType为connectError时返回;取值范围:212001/连接失败,212012/等待确认,212013/连接拒绝,212014/连接超时,212015/连接黑名单(仅android支持)
}
示例代码
var demo = api.require('LBAirDrop');
demo.connect({
uid:'',
},function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
disConnect
断开连接
disConnect(callback(ret))
callback(ret)
ret:
var demo = api.require('LBAirDrop');
demo.disConnect({
},function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getDeviceByPin
通过pin码获取设备,成功获取后可通过connect连接
getDeviceByPin(callback(ret))
params
pinCode:
- 类型:字符串类型
- 描述:设备pin码
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否获取成功
device:{ //Json对象类型;设备信息
tvUID:'', //字符串类型:接收端的唯一标识,
ipAddress:'', //字符串类型:接收端的IP地址
remotePort:123, //数字类型;linux端口
port:123, //数字类型;android端口
receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务
isConnected:true,//布尔类型;是否已连接
isOnline:, //布尔类型;是否在线
isLocalWifi:, //布尔类型;是否是局域网
pinCode:'', //字符串类型;设备ping码
w:, //数字类型;宽
h:, //数字类型;高
types:'', //字符串类型;支持服务
channel:'', //字符串类型;channel
},
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:'', //字符串类型;错误信息
}
示例代码
var demo = api.require('LBAirDrop');
demo.getDeviceByPin({
pinCode:'',
},function(ret){
alert(JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本
open
视频投屏
open({params}, callback(ret))
params
videoType
- 类型:字符串
- 描述:视频类型
- 取值范围:
- local :本地类型 (iOS暂不支持本地视频播放)
- online :在线视频
path
- 类型:字符串
- 描述:视频文件的路径 (iOS暂不支持本地视频播放)
mediaType
- 类型:数字类型
- 描述:媒体播放类型
- 取值范围:
- 1 // 在线视频媒体类型
- 2 //在线音频媒体类型
- 3 //在线图片媒体类型
- 4 //本地图片媒体类型
- 5 //本地视频媒体类型
- 6 //本地音频媒体类型
startPosition
- 类型:数字类型
- 描述:(可选项)播放的起始位置;默认:0
loopMode
- 类型:字符串
- 描述:播放循环模式
- 默认:无
- 取值范围:
- ‘SingleCycle’
- ‘Default’
- ‘All’(仅android支持)
示例代码
var demo = api.require('LBAirDrop');
demo.open({
videoType:'online'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
pause
暂停播放
pause(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;暂停播放成功还是失败
}
示例代码
var demo = api.require('LBAirDrop');
demo.pause(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
resumePlay
恢复播放
resumePlay(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;恢复播放成功还是失败
}
示例代码
var demo = api.require('LBAirDrop');
demo.resumePlay(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
seekTime
设置播放进度
seekTime({params})
params
playProgress:
- 类型:数字类型
- 描述:播放进度
- 默认:0
示例代码
js
var demo = api.require('LBAirDrop');
demo.seekTime({
playProgress : 20
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stop
退出播放
stop()
示例代码
js
var demo = api.require('LBAirDrop');
demo. stop();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setVolume
设置音量值
setVolume({params})
params
Volume:
- 类型:数字类型
- 描述:音量值,范围0 ~ 100
- 默认:0
示例代码
js
var demo = api.require('LBAirDrop');
demo.setVolume({
Volume : 50
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addVolume
增加音量
addVolume()
示例代码
js
var demo = api.require('LBAirDrop');
demo.addVolume();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
reduceVolume
加少音量
reduceVolume()
示例代码
js
var demo = api.require('LBAirDrop');
demo.reduceVolume();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
scanString
通过扫描二维码获取到的字符串获取服务
scanString({params}, callback(ret))
params
codeStringValue:
- 类型:字符串类型
- 描述:二维码扫描获取到的字符串
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔值;获取服务成功还是失败
device:{ //Json对象类型;设备信息 成功获取时返回(仅android支持)
tvUID:'', //字符串类型:接收端的唯一标识,
ipAddress:'', //字符串类型:接收端的IP地址
remotePort:123, //数字类型;linux端口
port:123, //数字类型;android端口
receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务
isConnected:true,//布尔类型;是否已连接
isOnline:, //布尔类型;是否在线
isLocalWifi:, //布尔类型;是否是局域网
pinCode:'', //字符串类型;设备ping码
w:, //数字类型;宽
h:, //数字类型;高
types:'', //字符串类型;支持服务
channel:'', //字符串类型;channel
}
}
示例代码
var demo = api.require('LBAirDrop');
demo.scanString({
codeStringValue:'aaaaa'
},function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
canSupportPushBarrage
是否支持推送弹幕
canSupportPushBarrage(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔值;true为支持,false为不支持
}
示例代码
var demo = api.require('LBAirDrop');
demo.canSupportPushBarrage(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
canCurrentPushBarrage
是否现在可以推送弹幕(仅iOS支持)
canCurrentPushBarrage(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔值;true为支持,false为不支持
}
示例代码
var demo = api.require('LBAirDrop');
demo.canCurrentPushBarrage(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
pushPriorityBarrage
推送弹幕
pushPriorityBarrage({params})
params
style:
- 类型:JSON对象
- 描述:弹幕设置
- 内部字段:
{
text: '点点滴滴', //字符串类型;弹幕内容
fontSize: 20, //(可选项)数字类型;弹幕字体大小;默认值:20
textColor: ‘’, //(可选项)字符串;字体颜色;支持 rgb,rgba,#,默认白色
danmukuId:, //(可选项)数字类型;弹幕id;默认值:无
displayTime:, //(可选项)数字类型;弹幕在视频哪个时间点显示(单位:毫秒 默认为0) 设置为0则马上显示弹幕;默认值:0
}
示例代码
var demo = api.require('LBAirDrop');
demo.pushPriorityBarrage({
style:{
text: '点点滴滴',
fontSize: 20,
textColor:'#EEEE00' ,
danmukuId: 200
displayTime: 0
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setMediaListener
设置播控监听
setMediaListener({params})
callback(ret)
ret:
- 类型:JSON 对象
内部字段:
{
eventType:'', //字符串类型;回调事件;取值范围:
//‘loading’/正在加载
//‘start’/开始播放 (仅支持安卓)
//’playing‘/正在播放(仅支持iOS)
//‘unkown’/未知状态(仅支持iOS)
//‘pause’/暂停
//‘completion’/播放完成
//‘stop’/结束播放
//‘seekComplete’/进度调节 (仅支持安卓)
//‘error’/错误回调
//‘volumeChanged’/音量变化回调 (仅支持安卓)
//‘PositionUpdate’/播放进度回调
seekPosition:, //数字类型;进度调节,百分比,,仅eventType为‘seekComplete’时返回
errorCode1:, //数字类型;错误码1,仅eventType为‘error’时返回 (仅支持安卓)
errorCode2:, //数字类型;错误码2,仅eventType为‘error’时返回 (仅支持安卓)
volumePercent:, //小数类型;音量变化,仅eventType为‘volumeChanged’时返回
duration:, //小数类型;总时长 单位:秒,仅eventType为‘PositionUpdate’时返回
position:, //小数类型;当前进度 单位:秒,仅eventType为‘PositionUpdate’时返回
}
示例代码
var LBAirDrop = api.require('LBAirDrop');
LBAirDrop.setMediaListener(function(ret,err){
alert(JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本
mirror
开启镜像(仅android支持)
mirror({params})
params
resolutionLevel:
- 类型:数字类型
- 描述:(可选项)分辨率
- 取值范围:3/屏幕分辨率,2/720P分辨率,1/1080P分辨率
- 默认:3
bitRateLevel:
- 类型:数字类型
- 描述:(可选项)比特率
- 取值范围:4/高比特率,5/中比特率,6低比特率
- 默认:5
audioEnable:
- 类型:布尔类型
- 描述:(可选项)是否开启录制声音
- 默认:false
callback(ret)
ret:
- 类型:JSON 对象
内部字段:
{
status:, //布尔类型;是否成功执行
}
err:
- 类型:JSON 对象
内部字段:
{
msg:'', //字符串类型;错误信息
}
示例代码
var LBAirDrop = api.require('LBAirDrop');
LBAirDrop.mirror({
},function(ret,err){
alert(JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本
stopMirror
关闭镜像(仅android支持)
stopMirror({params})
callback(ret)
ret:
- 类型:JSON 对象
内部字段:
{
status:, //布尔类型;是否成功执行
}
err:
类型:JSON 对象
内部字段:
{
msg:'', //字符串类型;错误信息
}
示例代码
var LBAirDrop = api.require('LBAirDrop');
LBAirDrop.stopMirror({
},function(ret,err){
alert(JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本