DLNA模块实现了局域网LAN下使用WIFI连接的智能设备实现投屏功能, 本模块支持各大主流电视盒子(小米,华为,乐视,移动魔百盒等), 可以播放,暂停,快进退,调音量,退出。(有些盒子不支持:电信IPTV盒子等,未收集完全)
苹果手机升级到ios14.5系统后,使用GCDAsyncUdpSocke发送组播消息的时候提示“Error Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo=...”
1.向苹果申请组播权限
2.申请成功后在开发者账号中,对appid进行编辑,拉倒最下面会多一个Additional Capabilities的选项,将 Multicast Networking 打
3.然后在entitlements配置文件中添加com.apple.developer.networking.multicast的布尔值为yes,参考论坛
搜索设备
startSearch(callback(ret))
ret:
{
status : true, //布尔型;true
evenType : 'onStarted',//返回类型:
//开始搜索 onStarted
//搜索到设备 onDeviceListChanged
//搜索完成 onFinished
data : [{
xh : 0, //序号
name : '' //设备名称
}]
}
var obj = api.require('dlna');
obj.startSearch(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
停止搜索
stopSearch(callback(ret))
ret:
{
status : true, //布尔型;true
}
var obj = api.require('dlna');
obj.stopSearch(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
投屏事件监听
addEventListener(callback(ret))
ret:
{
status : true, //布尔型;true
evenType : 'onPreparing',//准备成功 onPreparing
//播放 onPlay
//暂停 onPause
//停止 onStop
//跳转完成 onSeekComplete
//当前音量 onVolumeChanged
//媒体总时长 onGetMediaDuration
//播放进度 onProgressUpdated
}
var obj = api.require('dlna');
obj.addEventListener(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
开始投屏
startDLNA({params}, callback(ret, err))
xh:
url:
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.startDLNA({
xh : 0,
url : 'http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4'
}, function(ret, err) {
alert(JSON.stringify(ret)+" "+JSON.stringify(err));
});
iOS、Android系统
可提供的2.0.0及更高版本
退出投屏
stopDLNA(callback(ret, err))
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.stopDLNA(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
暂停播放
pause(callback(ret, err))
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.pause(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
开始播放
resume(callback(ret, err))
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.resume(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
获取视频总时长
getDuration(callback(ret, err))
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.getDuration(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
获取播放视频时长
getPosition(callback(ret, err))
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.getPosition(function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
设置进度
seek({params}, callback(ret, err))
process:
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.seek({
process : 22,
},function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
设置音量
volume({params}, callback(ret, err))
volume:
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.volume({
volume : 20
},function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本
切换视频地址
playUrl({params}, callback(ret, err))
url:
ret:
{
status : true, //布尔型;true||false
}
err:
{
msg:""
}
var obj = api.require('dlna');
obj.playUrl({
url : 'http://7o50kb.com2.z0.glb.qiniucdn.com/c6.mp4'
},function(ret, err) {
alert(JSON.stringify(ret));
});
iOS、Android系统
可提供的2.0.0及更高版本