eoe 移动开发者论坛

 找回密码
 加入eoe

QQ登录

只需一步,快速开始

查看: 4778|回复: 8
收起左侧

[Android实例] 如何为英特尔®架构手机上的 Miracast* 实现英特尔® 无线显示...

[复制链接]

该用户从未签到

58

主题

1589

帖子

4万

e币
社区认证会员 QQ认证
发表于 2013-12-10 11:40:06 | 显示全部楼层 |阅读模式
介绍
由于 Google 开始在 Android 4.2 上支持 Miracast,无线显示技术在 Android* 手机和平板电脑上正变得愈加流行起来。 借助无线显示技术,终端用户可以更轻松地扩展他们手机的 LCD 尺寸。 我认为这是独立软件开发商 (ISV) 面临的绝佳机会,有助于他们将无线显示功能集成到他们的应用之中,尤其是游戏和视频播放器。

然而,对 ISV 来说,如何为 x86 手机上的 Miracast 实现英特尔® 无线显示差异化则成为了他们面临的巨大挑战。 在本文中,我们将为您展示在 K900 上启用 iQiyi 在线视频播放器和 WPS office 软件,并藉此介绍如何为 Miracast 实现双显示差异化。 我们希望未来能够支持更多的重要应用。

什么是 Miracast
Wi-Fi 联盟在 2012 年 9 月 19 日正式宣布推出经过 Wi-Fi* 认证的 Miracast,这种开创性的解决方案无需使用电缆或网络连接就能在设备间无缝显示视频。 用户可以在大屏幕电视查看智能手机中的图片或视频,与会议室投影仪实时分享笔记本电脑屏幕内容,或者在平板电脑上观看家用电缆盒中的实况转播节目。 由于这种 Miracast 连接是通过 Wi-Fi 认证的 Wi-Fi Direct* 实现的,因此并不需要访问 Wi-Fi 网络,同时在 Miracast 认证的设备中就已经存在这种连接能力。

Miracast 的连接是一种基于 Wi-Fi direct 的对等连接。 基于 Wi-Fi 的 Miracast 架构如下所示。




图 1: Miracast* 架构


如下所示,有四种 Miracast 连接模式:




图 2: Miracast* 连接模式


借助 Miracast 连接,您无需使用 Wi-Fi AP 基础设施就能为多个设备实现连接,如 topology 1 所示。 您在连接了一个 AP 之后也可以通过一个适配器连接到一台显示器,如 topology 2 所示。 通过该模式,您可以在家中方便地观看在线视频。 如果您拥有一台可以支持 Miracast 的智能电视,您的电视、AP 和智能手机甚至可以实现彼此互联,如 topology 4 所示。

根据 Miracast 标准,源设备和显示设备的交互模式如下图所示:




图 3: Miracast* 会话管理


源设备和显示设备在连接设置之前就发现了彼此的 Miracast 功能。 这种连接是基于 Wi-Fi direct 或 TDLS 实现的。 源设备和显示设备根据能力协商为 Miracast 会话确定参数。 这种协商过程是基于 TCP 连接实现的。 源设备将根据 UDP 连接通过 MPEG2-TS 格式将内容传输给显示设备。

表 4 中列出了 Miracast 无线流支持的格式。

表 4: Miracast* 流格式





Android 4.2 上的 Miracast
Google 自 Android 4.2 版本开始支持 Miracast。 借助无线显示技术,终端用户可以分享电影、照片、YouTube 视频和高清电视屏幕上的任何内容。 外部的高清电视被视为一种外部显示设备。

当前,Android 上的 Miracast 支持克隆模式和演示模式,如下所示:




图 5: Miracast* 支持模式


借助克隆模式,我们可以将手机显示内容复制到远程显示设备上。 发送给适配器的帧数分辨率必须与本地显示器的分辨率相匹配。 在该模式中,本地和远程显示设备打开后会显示相同的内容。

在演示模式中,Android 现在已经允许您的应用在通过有线或 Wi-Fi 连接方式连接到用户设备上的附加屏幕上显示独特的内容。 而前提条件就是必须对这些应用进行修改使其支持该模式,否则应用在默认情况下只能支持克隆模式。

为英特尔架构 (IA) 手机上的 Miracast 开发差异化
英特尔在 Android 手机和平板电脑上的无线显示解决方案可完全兼容 Miracast。 我们也可以为 IA 手机上的 Miracast 开发一些具备差异化用途的应用程序。

第一个应用将用于支持 iQiyi 实现视频背景流功能。 用户可以使用一款支持背景流的 iQiyi 应用将视频发送到分辨率为 1080p 的远程显示器上,此时用户就可以在本地屏幕上播放 1080p 视频或者使用任何其他的应用,包括在不会给背景播放造成任何中断的前提下发送电子邮件或访问他们的浏览器,如下所示:




图 6: iQiyi 视频背景音乐功能


第二个应用将用于支持 WPS office 在本地和远程显示器上实现 UI 拆分功能。 在通过无线显示连接到电视之后,受支持的 WPS office 应用可以在远程屏幕上显示 PPT 幻灯片,同时在手机的屏幕上显示 PPT 注释,这种功能对发言人来说非常方便。 我们计划今后在手机的屏幕上添加一个定时器时钟,为发言人提醒时间。




图 7: WPS office 的 UI 拆分功能


这两种差异化用法是使用手机的 IA 硬件功能根据 Miracast 的演示模式开发出来的。 这两种应用现已上传到英特尔 AppUp® 上,供终端用户下载并安装到他们的 IA 手机上。

案例研究: 如何支持双显示差异化用法

在本节中,我将根据我们的 iQiyi 应用支持经验介绍如何实现视频背景流功能。

众所周知,为了实现视频背景音乐功能,关键的一点就是通过一种服务在背景中播放视频,同时正确地处理表面视图或视频视图。 当用户按下本位键时,表面视图或视频视图将被自动破坏,因此我们必须使用一个辅助显示器显示背景流视频。 程序流程图如下所示:




图 8: 背景视频流流程图


为了给辅助显示器创建出独特的内容, 拓展 Presentation 类并执行 onCreate() 回调。 在 onCreate() 中,通过调用 setContentView() 为辅助显示器指定您的 UI。 作为 Dialog 类的一个扩展,Presentation 类提供了一个位置,使您的应用可以在辅助显示器上显示一个独特的 UI。

在您的演示中可以通过两种方法使用辅助显示器。 使用 DisplayManager 或 MediaRouter API。 选择一个演示显示器的最简易方法就是使用 MediaRouter API。 媒体路由器服务负责跟踪系统上有哪些可用的音频和视频路径。 媒体路由器建议应用如果想在辅助显示器上显示内容应当使用的首选演示显示器。

此处告诉您如何通过使用媒体路由器创建演示文稿并在使用 getPresentationDisplay() 的首选演示显示器上显示该文稿。


  1. MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
  2.         MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();
  3.         if (route != null) {
  4.             Display presentationDisplay = route.getPresentationDisplay();
  5.             if (presentationDisplay != null) {
  6.                 Presentation presentation = new MyPresentation(context, presentationDisplay);
  7.                 presentation.show();
  8.             }
  9.         }
复制代码


选择一个演示显示器的另一种方法就是直接使用 DisplayManager API。 该显示管理器服务提供的函数可以列举和描述所有与系统连接的显示器,包括可以用作演示的显示器。

该显示管理器负责跟踪系统中的所有显示器。 此处告诉您如何识别适合的显示器并使用 getDisplays(String) 和 DISPLAY_CATEGORY_PRESENTATION 类显示演示文稿。


  1. DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
  2.         Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
  3.         if (presentationDisplays.length > 0) {
  4.              Display display = presentationDisplays[0];
  5.             Presentation presentation = new MyPresentation(context, presentationDisplay);
  6.             presentation.show();
  7.         }

复制代码


开发人员可以在 Android SDK 上引用演示示例代码,如下所示:

\sdk\sources\android-17\android\app\Presentation.java

总结

对于基于 IA 的手机和平板电脑来说,除了英特尔 Inside® 的卖点之外,无线显示特性可能会成为一个闪光点。 独立软件开发商应注意根据无线显示开发出更具创新性的用法,尤其是双显示差异化用法。

参考资料
http://www.wi-fi.org
http://developer.android.com/about/versions/android-4.2.html
Wi-Fi_Display_Technical_Specification_v1.0.0

英特尔公司 © 2013 年版权所有。 所有权利受到保护。

* 其他的名称和品牌可能是其他所有者的资产。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x

签到天数: 25 天

连续签到: 1 天

[LV.4]偶尔看看III

7

主题

146

帖子

1933

e币
社区认证会员 QQ认证
发表于 2013-12-19 13:54:35 | 显示全部楼层
很高深的样子...

该用户从未签到

1

主题

28

帖子

3

e币
发表于 2013-12-20 09:36:48 | 显示全部楼层
感觉好高级的东西,看了半天没看懂啥意思。

该用户从未签到

1

主题

85

帖子

42

e币
发表于 2013-12-20 11:49:26 | 显示全部楼层

该用户从未签到

0

主题

875

帖子

7

e币
发表于 2014-1-3 23:55:13 | 显示全部楼层

该用户从未签到

1

主题

336

帖子

788

e币
发表于 2014-1-8 02:50:07 | 显示全部楼层

签到天数: 2 天

连续签到: 1 天

[LV.1]初来乍到

0

主题

11

帖子

9

e币
发表于 2014-9-4 14:31:33 | 显示全部楼层
請問樓主開發有這方面的app嗎?我在寫一個影音分享的app,但具體形式不知道怎麼才好。

签到天数: 37 天

连续签到: 1 天

[LV.5]常住居民I

2

主题

318

帖子

1244

e币
发表于 2014-10-6 10:25:07 | 显示全部楼层
现在在研究这方面的知识,有一些收获

该用户从未签到

0

主题

42

帖子

65

e币
发表于 2014-10-8 14:38:24 | 显示全部楼层

感觉好高级的东西,看了半天没看懂啥意思。
*滑动验证:
您需要登录后才可以回帖 登录 | 加入eoe

本版积分规则

推荐阅读
赞助商们

QQ|联系我们|小黑屋|手机版|eoe 移动开发者论坛 ( 京ICP备11018032 京公网安11010802020210  

GMT+8, 2017-8-22 13:11 , Processed in 0.594881 second(s), 42 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
关闭

扫一扫 关注eoe官方微信