优化投屏服务的建议标准:DLNA代理
天下|
知乎| 2025-07-14
【流媒体网】摘要:DLNA扩展标准实现"投应用"新体验,优化传统投屏操作流程。
这是一个建议的DLNA扩展标准,是在之前思路基础上的进一步完善,目的是用“投应用”的方式优化“投屏”体验。用户投屏后,在大屏端操作快应用,而不是操作媒体流。
手机端在搜索可用投屏设备时,获得支持超级投屏的设备(服务)列表,同时也得到传统DLNA投屏设备列表,用户可以选择投到哪个服务上。直接上DLNA的XML定义代码吧。
1)服务列表
<root xmlns="urn:schemas-upnp-org:device-1-0"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <device> <deviceType>urn:schemas-upnp-org:device:QuickTVApp:1</deviceType> <friendlyName>设备(53d)</friendlyName> <manufacturer>某某电视厂商</manufacturer> <modelDescription>该设备支持超级投屏协议</modelDescription> <modelName>QuickTVApp</modelName> <modelNumber>1</modelNumber> <UDN>uuid:615e4aa359eb40ddb3d56b66c4e3053d</UDN> <serviceList> <service> !-- 自定义服务名称 --> <serviceType>urn:schemas-upnp-org:service:QuickTVApp:1</serviceType> <serviceId>urn:upnp-org:serviceId:QuickTVApp</serviceId> <SCPDURL>/upnp/dev/615e4aa359eb40ddb3d56b66c4e3053d/svc/upnp-org/QuickTVApp/desc</SCPDURL> <controlURL>/upnp/dev/615e4aa359eb40ddb3d56b66c4e3053d/svc/upnp-org/QuickTVApp/action</controlURL> <eventSubURL>/upnp/dev/615e4aa359eb40ddb3d56b66c4e3053d/svc/upnp-org/QuickTVApp/event</eventSubURL> </service> </serviceList> </device> </root>
2)服务定义
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>RunApp</name>
<argumentList>
<argument>
<name>Data</name>
<direction>in</direction>
<relatedStateVariable>Data</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>Data</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
</scpd>
3)接收端协议配置。
public interface QuickTVAppConfiguration {
/**
* 日志输出级别, 默认为 {@link java.util.logging.Level#ALL}
* @return {@link java.util.logging.Level }
*/
Level getLogLevel();
/**
* 获取该平台使用的底座包名
* @return 底座包名,如果没有安装,会调用 {@link #requestInstallApp(String)} 方法
*/
String getRuntimeAppPackageName(String wantPackageName);
/**
* 获取该平台对应的视听应用包名
* @return 包名,如果没有安装,会调用 {@link #requestInstallApp(String)} 方法
*/
String getNativeAppPackageName(String wantPackageName);
/**
* 请求安装应用
* @param packageName 底座包名
*/
void requestInstallApp(String packageName);
}
4)客户端调用示例
// 启动快应用
QuickIntent intent = new QuickIntent();
intent.setRunAppType(Action.RunAppType.QUICK_APP);
// 希望拉起的底座包名
intent.setPackage("com.extscreen.runtime");
intent.setData((uri.parse( uriString: "esapp://es.skill.weather.tv?from=cmd"));
// 转换json并发送
action.setInput("Data", QuickTVAppHelper.toJson(intent));
// 启动原生应用(以B站为例)
QuickIntent intent = new QuickIntent();
intent.setRunAppType(Action.RunAppType.NATIVE_APP);
intent.setPackage("com.xiaodianshi.tv.yst");
intent.setClassName("com.xiaodianshi.tv.yst", "com.xiaodianshi.tv.yst.ui.transition.TransitionActivity");
intent.putExtra("type", "3");
JSONObject value = new JSONObject();
try {
value.put("isBangumi", "1");
value.put("seasonId", "24583");
value.put("epId", "232280");
value.put("progress", "0");
} catch (JSONException ignore) {
}
intent.putExtra("value", value.toString());
intent.putExtra("from", "appName");
intent.putExtra("resource", "2");
// 转换json并发送
action.setInput("Data", QuickTVAppHelper.toJson(intent));
责任编辑:凌美
版权声明:凡注明来源“流媒体网”的文章,版权均属流媒体网所有,转载需注明出处。非本站出处的文章为转载,观点供业内参考,不代表本站观点。文中图片均来源于网络收集整理,仅供学习交流,版权归原作者所有。如涉及侵权,请及时联系我们删除!
24小时热文
流 • 视界
专栏文章更多
- [常话短说] 【重要】广电“壮士断腕”! 2025-12-11
- [常话短说] 【解局】广电降本增效“大有空间”?! 2025-12-10
- [勾正科技] 短剧榜单|电商,美妆行业持续发力,精品定制短剧推动品牌高声量 2025-12-09
- [探显家] CTV 广告从“注意力”转向“可验证的结果” 2025-12-09
- [常话短说] 【解局】这家广电网络公司宣布提前完成任务! 2025-12-09


