LBAirDrop

searchList connect getDeviceByPin pause seekTime setVolume reduceVolume canSupportPushBarrage setMediaListener stopMirror

概述

乐播投屏简介

乐播投屏,是一款移动设备(手机/平板等)连接大屏终端(电视、盒子、投影、VR等智能设备)的多屏互动工具,可以实现将移动设备的内容无线投送(可镜像)到大屏终端。

wx 模块概述 LBAirDrop 模块封装了一个移动投屏控件,具有投屏播放,设置音量,发送弹幕等以及其他一些功能。

模块使用攻略

使用之前须从乐播开放平台申请开发者账号并创建应用,获取 appID 和 AppSecret。

针对 ios 平台配置方法:

  • 配置示例:

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 对象
  • 内部字段:
  • 注意:没搜到设备时,不返回数据
  1. data: [{
  2. lelinkServiceName:'', //字符串类型;搜到的接收端的名称(仅ios支持)
  3. tvUID:'', //字符串类型:接收端的唯一标识,
  4. ipAddress:'', //字符串类型:接收端的IP地址
  5. remotePort:123, //数字类型;linux端口
  6. port:123, //数字类型;android端口
  7. receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
  8. UDN:'', //字符串类型;接收端DLNA的uuid,注意此字段只针对特殊渠道有效,非通用字段(仅iOS有效)
  9. hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
  10. alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务(没有则不不返回)
  11. frequentlyUsed:true, //布尔类型;(非必要的)是否为常用(仅iOS有效)
  12. onceConnected:true, //布尔类型;(非必要的)曾经连接过的服务(仅iOS有效)
  13. lastTimeConnected:true,//布尔类型;(非必要的)上次连接过的服务(仅iOS有效)
  14. isConnected:true,//布尔类型;是否已连接(仅android有效)
  15. fromQRCode:true, //布尔类型;是否从二维码获得的设备(仅iOS有效)
  16. lelinkServiceAvailable:true, //布尔类型;服务是否可用,三个服务中的任意一个可用,则isLelinkServiceAvailable为YES,否则为NO(仅iOS有效)
  17. innerLelinkServiceAvailable:true,//布尔类型; 乐联服务是否可用 (仅iOS有效)
  18. upnpServiceAvailable:true, //布尔类型;DLNA服务是否可用(仅iOS有效)
  19. imServiceAvailable:true, //布尔类型; 公网服务是否可用(仅iOS有效)
  20. isOnline:, //布尔类型;是否在线(仅android有效)
  21. isLocalWifi:, //布尔类型;是否是局域网(仅android有效)
  22. pinCode:'', //字符串类型;设备pin码(仅android有效)(没有则不不返回)
  23. w:, //数字类型;宽(仅android有效)
  24. h:, //数字类型;高(仅android有效)
  25. types:'', //字符串类型;支持服务(仅android有效)
  26. channel:'', //字符串类型;channel(仅android有效)
  27. /*
  28. 各类服务数据模型,可以结合服务可用状态判断当前的服务使用的何种投屏方式
  29. 1、如果只有upnpDevice有值,则当前的接收端仅仅支持DLNA服务,非乐播的接收端的DLNA就属于此种情况
  30. 2、如果只有imDevice有值,且isImServiceAvailable为YES,则当前服务使用公网投屏
  31. 3、如果innerLelinkDevice和upnpDevice任意一个有值,则当前服务使用局域网投屏
  32. 4、当多个服务有值时,服务使用的优先级,乐联 > DLNA > 公网
  33. 1)都有值——>使用乐联
  34. 2)乐联和DLNA都有值——>使用乐联
  35. 3)乐联和公网都有值——>使用乐联
  36. 4)DLNA和公网都有值——>使用DLNA
  37. 5)注意此逻辑是SDK内部在使用服务建立连接和投屏时的选择逻辑,SDK使用者可忽略,感兴趣的可以了解一下
  38. */
  39. innerLelinkDevice:true,//布尔类型;乐联服务数据模型(仅iOS有效)
  40. upnpDevice:true, //布尔类型; DLNA服务数据模型(仅iOS有效)
  41. imDevice:true //布尔类型; 公网服务数据模型(仅iOS有效)
  42. }]
  43. }

err:

  • 类型:JSON 对象
  • 内部字段:

    1. {
    2. msg:'', //字符串类型;错误信息(仅android支持)

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.searchList(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopBrowse

停止搜索(仅android支持)

stopBrowse(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:

    1. {
    2. status:, //布尔类型;是否成功
    3. }

    err:

  • 类型:JSON 对象

  • 内部字段:

    1. {
    2. msg:'', //字符串类型;错误信息
    3. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.stopBrowse(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.0及更高版本

connect

链接投屏设备

connect(callback(ret))

params

uid:

  • 类型:字符串类型
  • 描述:要连接的设备uid,需要是已搜索到的设备或已获取到的设备uid(仅Android支持)

index:

  • 类型:数字类型
  • 描述:(仅iOS支持)searchList接口获取到的数组的index

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔值;链接成功与失败的状态/断开链接成功与失败的状态;当false时,不返回eventType
  3. eventType:'',
  4. -'disConnect' //字符串类型;断开链接成功
  5. -'connect' //字符串类型;链接成功
  6. - connectError //连接失败
  7. connectType:'', //字符串类型;连接方式,eventType为connect时返回 取值范围:‘Lelink’/‘DLNA’/‘NEW_LELINK’/‘IM’(仅android支持)
  8. uid:'', //字符串类型;设备uid,(仅android支持)
  9. errorCode:, //数字类型;eventType为connectError时返回;取值范围:212001/连接失败,212012/等待确认,212013/连接拒绝,212014/连接超时,212015/连接黑名单(仅android支持)
  10. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.connect({
  3. uid:'',
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

disConnect

断开连接

disConnect(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:

    1. {
    2. status:, //布尔类型;是否断开成功
    3. }

    err:

  • 类型:JSON 对象

  • 内部字段:

    1. msg:'' // 字符串类型;错误信息
    2. }

    示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.disConnect({
  3. },function(ret){
  4. alert(JSON.stringify(ret));
  5. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getDeviceByPin

通过pin码获取设备,成功获取后可通过connect连接

getDeviceByPin(callback(ret))

params

pinCode:

  • 类型:字符串类型
  • 描述:设备pin码

callback(ret)

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:, //布尔类型;是否获取成功
  3. device:{ //Json对象类型;设备信息
  4. tvUID:'', //字符串类型:接收端的唯一标识,
  5. ipAddress:'', //字符串类型:接收端的IP地址
  6. remotePort:123, //数字类型;linux端口
  7. port:123, //数字类型;android端口
  8. receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
  9. hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
  10. alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务
  11. isConnected:true,//布尔类型;是否已连接
  12. isOnline:, //布尔类型;是否在线
  13. isLocalWifi:, //布尔类型;是否是局域网
  14. pinCode:'', //字符串类型;设备ping码
  15. w:, //数字类型;宽
  16. h:, //数字类型;高
  17. types:'', //字符串类型;支持服务
  18. channel:'', //字符串类型;channel
  19. },
  20. }

err:

  • 类型:JSON 对象
  • 内部字段:

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.getDeviceByPin({
  3. pinCode:'',
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

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支持)
  1. var demo = api.require('LBAirDrop');
  2. demo.open({
  3. videoType:'online'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pause

暂停播放

pause(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true //布尔类型;暂停播放成功还是失败
  3. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.pause(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resumePlay

恢复播放

resumePlay(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true //布尔类型;恢复播放成功还是失败
  3. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.resumePlay(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

seekTime

设置播放进度

seekTime({params})

params

playProgress:

  • 类型:数字类型
  • 描述:播放进度
  • 默认:0

示例代码

  1. js
  2. var demo = api.require('LBAirDrop');
  3. demo.seekTime({
  4. playProgress : 20

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stop

退出播放

stop()

示例代码

  1. js
  2. var demo = api.require('LBAirDrop');
  3. demo. stop();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setVolume

设置音量值

setVolume({params})

params

Volume:

  • 类型:数字类型
  • 描述:音量值,范围0 ~ 100
  • 默认:0

示例代码

  1. js
  2. var demo = api.require('LBAirDrop');
  3. demo.setVolume({
  4. Volume : 50
  5. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addVolume

增加音量

addVolume()

示例代码

  1. js
  2. var demo = api.require('LBAirDrop');
  3. demo.addVolume();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

reduceVolume

加少音量

reduceVolume()

示例代码

  1. js
  2. var demo = api.require('LBAirDrop');
  3. demo.reduceVolume();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

scanString

通过扫描二维码获取到的字符串获取服务

params

codeStringValue:

  • 类型:字符串类型
  • 描述:二维码扫描获取到的字符串

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔值;获取服务成功还是失败
  3. device:{ //Json对象类型;设备信息 成功获取时返回(仅android支持)
  4. tvUID:'', //字符串类型:接收端的唯一标识,
  5. ipAddress:'', //字符串类型:接收端的IP地址
  6. remotePort:123, //数字类型;linux端口
  7. port:123, //数字类型;android端口
  8. receviverPackageName:'',//字符串类型;接收端包名 TV端乐播投屏apk的包名为com.hpplay.happyplay.aw,可在设备列表中判断receviverPackageName是否等于此包名,UI上可以加上推荐二字,用户的投屏体验更好
  9. hasNewVersion:false, //布尔类型;接收端是否有可升级的新版本 此属性是搜到TV端乐播投屏apk有新版可更新时,可提示用户升级接收端,体验更好
  10. alias:'', //字符串类型;(非必要的)别名,开发者可开放出来供用户修改服务名称的别名,方便用户自己识别和区分自己的服务
  11. isConnected:true,//布尔类型;是否已连接
  12. isLocalWifi:, //布尔类型;是否是局域网
  13. pinCode:'', //字符串类型;设备ping码
  14. w:, //数字类型;宽
  15. h:, //数字类型;高
  16. types:'', //字符串类型;支持服务
  17. channel:'', //字符串类型;channel
  18. }
  19. }

示例代码

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

canSupportPushBarrage

是否支持推送弹幕

canSupportPushBarrage(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔值;true为支持,false为不支持
  3. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.canSupportPushBarrage(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

canCurrentPushBarrage

是否现在可以推送弹幕(仅iOS支持)

canCurrentPushBarrage(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔值;true为支持,false为不支持
  3. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.canCurrentPushBarrage(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

pushPriorityBarrage

推送弹幕

pushPriorityBarrage({params})

params

style:

  • 类型:JSON对象
  • 描述:弹幕设置
  • 内部字段:
  1. {
  2. text: '点点滴滴', //字符串类型;弹幕内容
  3. fontSize: 20, //(可选项)数字类型;弹幕字体大小;默认值:20
  4. textColor: ‘’, //(可选项)字符串;字体颜色;支持 rgb,rgba,#,默认白色
  5. danmukuId:, //(可选项)数字类型;弹幕id;默认值:无
  6. displayTime:, //(可选项)数字类型;弹幕在视频哪个时间点显示(单位:毫秒 默认为0) 设置为0则马上显示弹幕;默认值:0
  7. }

示例代码

  1. var demo = api.require('LBAirDrop');
  2. demo.pushPriorityBarrage({
  3. style:{
  4. text: '点点滴滴',
  5. fontSize: 20,
  6. textColor:'#EEEE00' ,
  7. danmukuId: 200
  8. displayTime: 0
  9. }
  10. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setMediaListener

设置播控监听

setMediaListener({params})

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:

    1. {
    2. eventType:'', //字符串类型;回调事件;取值范围:
    3. //‘loading’/正在加载
    4. //‘start’/开始播放 (仅支持安卓)
    5. //’playing‘/正在播放(仅支持iOS)
    6. //‘unkown’/未知状态(仅支持iOS)
    7. //‘pause’/暂停
    8. //‘completion’/播放完成
    9. //‘stop’/结束播放
    10. //‘seekComplete’/进度调节 (仅支持安卓)
    11. //‘error’/错误回调
    12. //‘volumeChanged’/音量变化回调 (仅支持安卓)
    13. //‘PositionUpdate’/播放进度回调
    14. seekPosition:, //数字类型;进度调节,百分比,,仅eventType为‘seekComplete’时返回
    15. errorCode1:, //数字类型;错误码1,仅eventType为‘error’时返回 (仅支持安卓)
    16. errorCode2:, //数字类型;错误码2,仅eventType为‘error’时返回 (仅支持安卓)
    17. volumePercent:, //小数类型;音量变化,仅eventType为‘volumeChanged’时返回
    18. duration:, //小数类型;总时长 单位:秒,仅eventType为‘PositionUpdate’时返回
    19. position:, //小数类型;当前进度 单位:秒,仅eventType为‘PositionUpdate’时返回
    20. }

示例代码

  1. var LBAirDrop = api.require('LBAirDrop');
  2. LBAirDrop.setMediaListener(function(ret,err){
  3. alert(JSON.stringify(ret));
  4. });

可用性

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 对象
  • 内部字段:

    1. {
    2. status:, //布尔类型;是否成功执行
    3. }

err:

  • 类型:JSON 对象
  • 内部字段:

    1. {
    2. msg:'', //字符串类型;错误信息
    3. }

示例代码

  1. var LBAirDrop = api.require('LBAirDrop');
  2. LBAirDrop.mirror({
  3. },function(ret,err){
  4. alert(JSON.stringify(ret));
  5. });

可用性

Android系统

可提供的1.0.0及更高版本

stopMirror

关闭镜像(仅android支持)

stopMirror({params})

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:

    1. {
    2. status:, //布尔类型;是否成功执行
    3. }

    err:

  • 类型:JSON 对象

  • 内部字段:

示例代码

  1. var LBAirDrop = api.require('LBAirDrop');
  2. LBAirDrop.stopMirror({
  3. },function(ret,err){
  4. alert(JSON.stringify(ret));

Android系统

可提供的1.0.0及更高版本