leBoCast

来自于:开发者立即使用

initLeCast browse stopBrowse connect QRconnect pinConnect disConnect getConnectLelinkServiceInfos startMirror stopMirror play pause resume stop seekTo addVolume subVolume isSupportDanmuku setInteractiveAdListener onInteractiveAdShow onInteractiveAdClosed

概述

乐播投屏简介

乐播投屏SDK,是一套基于乐播自主研发的私有协议—乐联协议开发适用于Android/iOS设备的程序接口,开发者通过调用本模块接口,可以轻松实现将视频流媒体(mp4、flv等)的视频内容、直播流媒体(rtmp、hls、http-flv等)的视频内容、音乐 和 图片 推送到到智能电视端进行播放。也可将手机屏幕画面实时投屏到智能电视上(无延时),轻松实现“扫码连接,一键投屏”的强大多屏互动应用场景。投视频、投手机实时画面、投音乐、投图片一键轻松搞定。乐播投屏具有速度快(手机和电视端可以同步,无延时)、不耗流量、耗电少等特点。

本模块封装了原生乐播投屏发送端SDK,已全面支持iOS和Android系统;接入后,能让您的App轻松拥有投屏与镜像能力,从而在满足用户需求的同时,也将您的内容分发上大屏。可广泛应用于通话,视频,音乐,直播,游戏,教育,办公等场景。

SDK版本 :3.16.1

应用场景

1、跨屏游戏
高清、实时地将手游投到电视上,体验大屏手游的快感和刺激感。
2、会议演示
一部手机随时召集会议,让会议操作流程简化,效率更高。
3、视频点播
将手机上的任意影像投在电视屏上,与家人一起互动。
4、音乐共享
不需要华丽音响,就可以把无线音乐响彻整个house。
5、图片分享
朋友聚会聊天,将手机中的照片投到大屏,和朋友们分享照片故事。
6、车载导航
将手机中的信息传达到导航屏上,方便操控,安全驾驶。
7、电脑投屏
将电脑屏幕,电脑文档投屏至会议室大屏幕中,投屏开会或演示。

要使用该模块,开发者需要到乐播投屏官网申请相应的App Key和Secret等。乐播投屏官网http://cloud.hpplay.cn ,注册账号后进行用户认证,认证通过后可创建双平台应用获取相应的App Key和Secret,这个过程中如果有问题可以联系乐播投屏客服。

测试步骤

测试widget下载链接:https://pan.baidu.com/s/1nA6Lk68g3dhLuzhtDVD4Xg , 提取码:pnrv

1、到乐播投屏官网http://cloud.hpplay.cn注册开发者账号 ,注册账号后进行用户认证,认证通过后可创建双平台应用获取相应的App Key和Secret,这个过程中如果有问题可以联系乐播投屏客服。
2、到以下链接下载测试widget:https://pan.baidu.com/s/1nA6Lk68g3dhLuzhtDVD4Xg, 提取码:pnrv ,下载完成后,参考下文配置config.xml文件,然后将修改后的widget上传到Apicloud控制台和本模块一起进行云编译。
3、准备好一个安卓手机当做接收端设备,这里无需用电视来测试,到乐播官网下载中心http://download.mirrorcast.com.cn/website/Download.html下载 乐播投屏TV版 APP(大概12M的那个),这是一个apk文件,只能安装到安卓手机或安卓电视,安装乐播投屏TV版APP的安卓手机当做接收端设备,并将该安卓手机连接Wifi以供测试。
4、再另外准备一个安卓手机和一个苹果手机分别安装第2步云编译好的App(当然也可以先测试其中一个平台,根据你的需求),同样的这两个测试手机也要连上Wifi,而且要连上和第3步的手机同一个Wifi!否则调用browse方法无法搜索到接收端设备!
5、到这里可以开始调用接口进行测试:打开接收端手机(第3步的手机),打开乐播投屏TV版 APP,最好保持亮屏,接着就可以在另一台手机上(第4步的手机)调用本模块接口进行测试,测试时注意有部分接口不支持iOS。

config.xml的配置

获取到App Key和App Secret后需要在config.xml中配置(配置完后需通过云端编译才生效):
配置示例如下(Android和iOS):

  1. <!--leBoCast,lecastKey,lecastSecret,lecastIosKey,lecastIosSecret,都是固定值,只要将value修改成你在乐播平台申请到的值-->
  2. <feature name="leBoCast">
  3. <!--Android平台的App key-->
  4. <param name="lecastKey" value="106235" />
  5. <!--Android平台的App Secret-->
  6. <param name="lecastSecret" value="dsf485ds4g8erw8gh4h4e5hr4erh8" />
  7. <!--iOS平台的App key-->
  8. <param name="lecastIosKey" value="105268" />
  9. <!--iOS平台的App Secret-->
  10. <param name="lecastIosSecret" value="5kj4yj4esa6h8r4a8erh4hra54re4h" />
  11. </feature>

注意 :
1、本模块对于安卓平台,要Android4.0及以上才能使用,编译时在apicloud云编译界面的右上角点击“高级设置”,设置android固件要求为4.0.0,再进行编译,否则编译报错
2、如无特别说明,本模块回调方法中result为时1时代表调用方法成功,result为0时代表失败。大部分回调中都会有result字段
3、由于iOS的限制,iOS平台不支持进行手机镜像投屏,即手机实时画面投屏到电视。

模块接口

initLeCast

初始化本模块,该方法无参数,必须在所有方法调用前调用,一般放在win或frame的初始化方法中。

initLeCast()

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.initLeCast();//模块初始化方法,须在所有方法调用前调用

可用性

iOS,Android系统

可提供的1.0.0及更高版本

browse

搜索附近的接收端设备,调用后本模块会每隔几秒进行搜索,模块每隔几秒进行回调,在适当的时候调用stopBrowse方法即可停止搜索。
注意:
1、请确保接收端设备和调用本接口的手机连在同一个wifi!否则无法搜索到接收端设备! 2、在普通连接(非二维码、pin码连接)前必须调用该方法搜索设备
3、直接播放(play方法directPlay参数为1时)前必须调用该方法搜索设备

browse({params},callback(ret))

params

browseType:

  • 类型:数字
  • 描述:仅Android有效,传0可以搜索到乐联和DLNA协议, 传1 仅搜索乐联协议,默认0

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回搜索到的接收端列表的json字符串
  • 内部字段:
  1. {
  2. result:1
  3. deviceList:[//设备列表数组
  4. {
  5. name:接收端设备名称
  6. ip:接收端ip,以下大部分接口用ip代表一个接收端设备
  7. isOnLine:代表设备是否在线(指设备是否能连接到); 1为在线,0为不在线//ios无效
  8. isConnect:代表该设备是否已经连接。 1为已连接,0为没连接。
  9. uid:设备的id
  10. type:设备类型//ios无效
  11. }]
  12. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {browseType:0};
  3. leBoCastDemo.browse(param, function(ret, err){
  4. alert(JSON.stringify(ret));
  5. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopBrowse

停止搜索附近的接收端设备,因为browse方法会不停的搜索,所以要在适当的时候调用stopBrowse方法,该方法无参数

stopBrowse(ret)

ret

  • 类型:JSON对象
  • 内部字段:
  1. {result:1
  2. }

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

connect

通过ip连接接收端设备,必须先调用browse方法获取ip,该方法为耗时方法(需要一定时间才能回调)

connect({params},callback(ret))

params

serviceInfoIp:

  • 类型:字符串
  • 描述:必填项,调用browse方法返回的ip字段

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回连接是否成功,以及连接设备的信息
  • 内部字段:
  1. {
  2. result:1
  3. isPin:是否是pin码连接//ios无效
  4. deviceName:设备名称
  5. type:设备类型//ios无效
  6. deviceUid:设备uid
  7. deviceIp:设备ip
  8. canPlayLocalVideo:是否能播放本地视频//ios无效
  9. canPlayLocalPhoto:是否能播放本地图片//ios无效
  10. canPlayLocalAudio:是否能播放本地音乐//ios无效
  11. canPlayOnlieVideo:是否能播放网络视频//ios无效
  12. canPlayOnliePhoto:是否能播放网络图片//ios无效
  13. canPlayOnlieAudio:是否能播放网络音乐//ios无效
  14. frequentlyUsed:是否常用//Android无效
  15. onceConnected:是否曾经连接//Android无效
  16. lastTimeConnected:是否为上次连接的服务//Android无效
  17. receviverPackageName:接收端包名//Android无效
  18. alias:别名
  19. msg:错误信息(result0时有),分别是以下其中之一:连接失败,等待确认,连接拒绝,连接超时,连接黑名单
  20. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {serviceInfoIp:ip};//这里的ip是调用browse方法返回的ip字段
  3. leBoCastDemo.connect(param, function(ret, err){
  4. alert(JSON.stringify(ret));
  5. ip=ret.deviceIp;//保存已连接的ip,断开时用到
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

QRconnect

通过二维码连接接收端设备,在接收端设备中一般有二维码,开发者可用apicloud上任意一个扫描二维码的模块扫描二维码,该方法为耗时方法(需要一定时间才能回调)

QRconnect({params},callback(ret))

params

qrCode:

  • 类型:字符串
  • 描述:必填项,接收端设备中二维码的扫描结果,开发者可用apicloud上任意一个扫描二维码的模块扫描二维码,将扫描结果传入该字段

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回连接是否成功,以及连接设备的信息
  • 内部字段:
  1. {
  2. result:1
  3. isPin:是否是pin码连接
  4. deviceName:设备名称
  5. type:设备类型
  6. deviceUid:设备uid
  7. deviceIp:设备ip
  8. canPlayLocalVideo:是否能播放本地视频
  9. canPlayLocalPhoto:是否能播放本地图片
  10. canPlayLocalAudio:是否能播放本地音乐
  11. canPlayOnlieVideo:是否能播放网络视频
  12. canPlayOnliePhoto:是否能播放网络图片
  13. canPlayOnlieAudio:是否能播放网络音乐
  14. msg:错误信息(result0时有),分别是以下其中之一:连接失败,等待确认,连接拒绝,连接超时,连接黑名单
  15. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {qrCode:"http://sl.hpplay.cn/b96hD"};//传入二维码扫描结果
  3. leBoCastDemo.QRconnect(param,function(ret, err){//连接回调
  4. alert(JSON.stringify(ret));
  5. ip=ret.deviceIp;//保存已连接的ip,断开时用到
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

pinConnect

通过pin码连接接收端设备,接收端有唯一对应的pin码,该方法为耗时方法(需要一定时间才能回调)

pinConnect({params},callback(ret))

params

pinCode:

  • 类型:字符串
  • 描述:必填项,pin码是乐播的概念,为9位字符串

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回连接是否成功,以及连接设备的信息
  • 内部字段:
  1. {
  2. result:1
  3. isPin:是否是pin码连接
  4. deviceName:设备名称
  5. type:设备类型
  6. deviceUid:设备uid
  7. canPlayLocalVideo:是否能播放本地视频
  8. canPlayLocalPhoto:是否能播放本地图片
  9. canPlayLocalAudio:是否能播放本地音乐
  10. canPlayOnlieVideo:是否能播放网络视频
  11. canPlayOnliePhoto:是否能播放网络图片
  12. canPlayOnlieAudio:是否能播放网络音乐
  13. msg:错误信息(result0时有),分别是以下其中之一:连接失败,等待确认,连接拒绝,连接超时,连接黑名单
  14. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {pinCode:"xxxxxxxx"};//传入pin码
  3. leBoCastDemo.pinConnect(param,function(ret, err){//连接回调
  4. alert(JSON.stringify(ret));
  5. uid1=ret.deviceIp;//保存已连接的ip,断开时用到
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

disConnect

断开连接,在适当的时候断开连接,该方法为耗时方法(需要一定时间才能回调)

disConnect({params},callback(ret))

params

serviceInfoIp:

  • 类型:字符串
  • 描述:必填项,要断开的接收端设备的ip

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回断开是否成功,以及断开设备的信息
  • 内部字段:
  1. {
  2. result:1
  3. isPin:是否是pin码连接//ios无效
  4. deviceName:设备名称
  5. deviceUid:设备uid
  6. msg:错误信息(result0时有)
  7. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {serviceInfoIp:ip};//传入要断开的接收端设备的ip
  3. leBoCastDemo.disConnect(param,function(ret, err){
  4. alert(JSON.stringify(ret));
  5. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getConnectLelinkServiceInfos

获取已经连接的接收端设备,无参数,该方法为耗时方法(需要一定时间才能回调)

getConnectLelinkServiceInfos(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回接收端设备列表的信息
  • 内部字段:
  1. {
  2. result:1
  3. deviceList:[{//设备列表数组
  4. name:接收端设备名称
  5. ip:接收端ip
  6. isOnLine:代表设备是否在线(指设备是否能连接到); 1为在线,0为不在线
  7. isConnect:代表该设备是否已经连接。 1为已连接,0为没连接。
  8. uid:设备的id
  9. type:设备类型
  10. }]
  11. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

startMirror

开始镜像,即将手机画面实时投屏到接收端设备(电视),调用该方法前必须先连接设备,该方法为耗时方法(需要一定时间才能回调)

startMirror({params},callback(ret))

params

connectedTargetIp:

  • 类型:字符串
  • 描述:必填项,已连接的设备的ip

resolutionLevel:

  • 类型:数字型
  • 描述:选填项,分辨率:1高、2中、3自动, 默认2

bitrateLevel:

  • 类型:数字型
  • 描述:选填项,比特率:4高、5中、6低, 默认5

isAudioEnnable:

  • 类型:数字型
  • 描述:选填项,是否开启声音:1开启,0关闭, 默认0

screenCode:

  • 类型:字符串
  • 描述:选填项,投屏码,有些设备需要投屏码才能播放,没有则不传,或传””

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回开始镜像是否成功
  • 内部字段:
  1. {
  2. result:1
  3. msg:错误信息(result0时有)
  4. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {
  3. connectedTargetIp:ip,//已连接的设备的ip
  4. resolutionLevel:1,//分辨率:数字型,1高,2中,3自动
  5. bitrateLevel:5,//比特率:数字型,4高,5中,6低
  6. isAudioEnnable:1,//数字型,1开启,0关闭
  7. screenCode:"",//如果接收端需要投屏码请加上该字段
  8. };
  9. leBoCastDemo.startMirror(param,function(ret, err){
  10. alert(JSON.stringify(ret));
  11. });

可用性

Android系统

可提供的1.0.0及更高版本

stopMirror

结束镜像

stopMirror(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回结束镜像是否成功
  • 内部字段:
  1. {
  2. result:1
  3. }

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

play

播放媒体,包括视频、音乐、图片。参数localUrl和netUrl这两个url必须要传一个,两个都传时只认localUrl,该方法为耗时方法(需要一定时间才能回调)

play({params},callback(ret))

params

directPlay:

  • 类型:数字型
  • 描述:选填项,是否直接播放,直接播放就免去了连接设备这一步,1为无需连接设备直接播放,但需要先搜索设备,0为需连接设备(默认0)

connectedTargetIp:

  • 类型:字符串
  • 描述:直接播放的设备的ip(需要先搜索获取),directPlay为1时该字段必须要传

screenCode:

  • 类型:字符串
  • 描述:投屏码,有些屏幕需要投屏码的就要传,可选项

mediaType:

  • 类型:数字型
  • 描述:必填项,媒体类型:1音乐,2视频,3图片

localUrl:

  • 类型:字符串
  • 描述:本地媒体路径,支持widget://,fs://,安卓系统标准文件路径

netUrl:

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:播放中(包括镜像相关的状态)各个状态的返回
  • 内部字段:
  1. {
  2. result:0//为0时为调用方法或逻辑错误,相应的有msg字段信息提示
  3. 以下是播放中(包括镜像相关的状态)各个状态的返回值描述,
  4. 左边以status字段返回,右边以msg返回
  5. 1:正在加载
  6. 2:正在播放
  7. 3:暂停播放
  8. 4:播放完成
  9. 5:播放结束
  10. 6:设置进度完成
  11. 7:文件不存在
  12. 8IM TV不在线
  13. 9:图片错误
  14. 10IM不支持的媒体类型
  15. 11:未知
  16. 12:不支持镜像
  17. 13:镜像权限拒绝
  18. 14:设备不支持镜像
  19. 15:请输入投屏码
  20. 16:获取镜像信息出错
  21. 17:获取镜像端口出错
  22. 18:请输入投屏码
  23. 19:播放无响应
  24. 20 退出播放无响应
  25. 21:暂停无响应
  26. 22:请输入投屏码
  27. 23:恢复无响应
  28. 24:音量变化成功
  29. 25:播放进度已更新
  30. 26:播放进度刷新返回(单位/S//Android无效
  31. }

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {
  3. directPlay:0,//是否直接播放,1无需连接设备直接播放(但需要先搜索),0需连接设备(默认)
  4. connectedTargetIp:ip,//直接播放的设备的ip(需要先搜索获取),directPlay为1时该字段必须要传
  5. screenCode:"267-965-852",//有些屏幕需要投屏码的就要传,可选项
  6. mediaType:2,//媒体类型:数字型,1音乐,2视频,3图片
  7. localUrl:"",//本地媒体路径,支持fs://,安卓系统标准文件路径
  8. netUrl:NET_VIDEO_URL,//网络文件路径,http://...
  9. //这两个url必须要传一个,两个都传时只认localUrl
  10. };
  11. leBoCastDemo.play(param,function(ret, err){
  12. if(ret.status!=25){//播放进度已更新不弹窗,避免弹窗过多
  13. alert(JSON.stringify(ret));
  14. }
  15. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pause

暂停播放媒体,无参数,返回值在play方法的回调中返回,参考play方法

pause({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.pause(function(ret, err){
  3. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resume

恢复播放媒体,无参数,返回值在play方法的回调中返回,参考play方法

resume({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.resume(function(ret, err){
  3. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stop

停止播放媒体,无参数,返回值在play方法的回调中返回,参考play方法

stop({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.stop(function(ret, err){
  3. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

seekTo

播放进度控制,通过该方法可以选择媒体文件的某一个时间点来播放,返回值在play方法的回调中返回,参考play方法

seekTo({callback(ret))

params

progress:

  • 类型:数字型
  • 描述:必填项,需要播放的进度点

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {
  3. progress:10,//进度,数字型,单位为秒
  4. };
  5. leBoCastDemo.seekTo(param,function(ret, err){
  6. alert(JSON.stringify(ret));
  7. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addVolume

增加音量

addVolume({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.addVolume(function(ret, err){
  3. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

subVolume

减少音量

subVolume({callback(ret))

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isSupportDanmuku

是否支持弹幕

isSupportDanmuku({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.isSupportDanmuku(function(ret, err){
  3. alert(JSON.stringify(ret));//返回值result数字型,1支持,0不支持
  4. });

可用性

Android系统

可提供的1.0.0及更高版本

setInteractiveAdListener

设置广告监听

setInteractiveAdListener({callback(ret))

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. leBoCastDemo.setInteractiveAdListener(function(ret, err){
  3. alert(JSON.stringify(ret));///返回值result数字型, 1设置成功,1失败
  4. });

可用性

Android系统

可提供的1.0.0及更高版本

onInteractiveAdShow

广告播放上报

onInteractiveAdShow({callback(ret))

params

status:

  • 类型:数字型
  • 描述:上报状态值,1成功,0失败

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {
  3. status:1,//上报状态值,数字型,1成功,0失败
  4. };
  5. leBoCastDemo.onInteractiveAdShow(param,function(ret, err){
  6. alert(JSON.stringify(ret));//1上报成功
  7. });

可用性

Android系统

可提供的1.0.0及更高版本

onInteractiveAdClosed

广告播放完成上报

onInteractiveAdClosed({callback(ret))

params

status:

  • 类型:数字型
  • 描述:上报状态值,1成功,0失败

duration:

  • 类型:数字型
  • 描述:广告播放时长,秒为单位

示例代码

  1. var leBoCastDemo = api.require('leBoCast');
  2. var param = {
  3. status:1,//上报状态值,数字型,1成功,0失败
  4. duration:5//广告播放时长,秒为单位
  5. };
  6. leBoCastDemo.onInteractiveAdClosed(param,function(ret, err){
  7. alert(JSON.stringify(ret));//1上报成功
  8. });

可用性

Android系统

可提供的1.0.0及更高版本