将UI重定向/复制到外部输出

时间:2011-02-01 23:04:55

标签: android

Android框架中是否可以复制主显示屏(UI)上显示的内容?

我有一种情况需要向很多人展示我的应用程序,如果我可以将屏幕内容复制到外部显示器/电视,那将会更容易。我与使用HDMI端口的想法没有结合,如果需要,我很乐意通过Wi-Fi或蓝牙或USB这样做。我正在寻找的是看看我是否可以做类似于Windows在连接第二台显示器时默认执行的操作。

我一直在浏览开发人员的文档,并且找不到任何可以让我这样做的东西,但这不是我第一次错过任何东西。具体来说,我需要使用HTC Evo

2 个答案:

答案 0 :(得分:4)

您的选择有限,主要是您选择的设备。 HTC EVO的HDMI端口仅通过内置的Gallery应用程序(视频和静态照片)播放应用程序。

您需要使用Droid@Screen之类的“软件投影仪” - 将您的EVO连接到连接到投影仪的配备Android SDK的笔记本电脑。 Droid @ Screen将在笔记本上显示EVO的屏幕(从那里,在投影机上)。但是,由于Droid @ Screen利用的SDK工具的限制,帧速率限制在大约5-6 fps。

或者,开始使用HTC Droid Incredible,它通过特殊的线缆支持主显示器上任何东西的电视输出。根据我迄今为止的实验,三星Galaxy Tab还支持任何不涉及SurfaceView的任何内容。三星Galaxy S的某些版本也支持这一点,至少在某种程度上。

或者,使用网络摄像头。

或者,使用ELMO(基本上是为文档或设备投影设计的网络摄像头)。

答案 1 :(得分:1)

您可以在jni中编写一个UiCloningService,公开一个JNI方法来克隆显示。通常,由于Android基于Linux,它将使用Linux帧缓冲技术将显示设备表示为/dev/fb*/dev/graphics/fb*下的开发节点,其中'*'可以0,1,2,...取决于/dev/graphics/fb1关于连接的显示器数量。

由于您的设备已有HDMI端口,因此fb0会将其显示为{{1}},因为它是您的默认LCD显示屏。

在克隆服务中,您可以写入在sysfs下为HDMI端口创建的设备属性文件,如果您的设备的显示驱动程序已经实现了这些功能(最有可能的话,那么有什么指向外部) HDMI显示),驱动程序中的这些功能/功能将负责将主显示器上的Ui克隆到辅助显示器。

但是您必须在JNI中编写Ui克隆服务。(通常设备制造商提供此类方法,如果他们提供的Android SDK在该特定设备上进行开发)。

例如,我已经在下面的OMAP3平台上附加了一个UiCloningService.cpp,它具有针对Android GingerBread的克隆JNI函数:

UiCloningService.cpp