是否可以在Android屏幕和通过HDMI连接的屏幕上显示不同的内容?
我想知道是否可以开发一个应用程序,在其中我可以将主要内容显示在通过 HDMI 连接到 Android 的大屏幕上,并使用 Android 的触摸屏作为显示不同内容的控制器。
到目前为止,我看过的有关 Android HDMI 功能的视频仅将手机屏幕镜像到大屏幕。
I'm wondering if I can develop an application, where I can have the main content displayed on a big screen connected to my Android via HDMI and use the Android's touchscreen as a controller displaying different content.
So far the videos I've seen about Android's HDMI feature only mirror the phone's screen to the big screen.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 Android 演示 API (API 17)。
效果很好。
您的演示文稿连接到一个活动,它允许您在电视上显示实时流(例如通过 HDMI)并使用手机的显示屏作为遥控器。我已经在一个应用程序中完成了此操作,并且出于懒惰,还为第二部手机添加了第二个应用程序,该应用程序用作蓝牙遥控器。
希望这能回答您的问题。
You can use the Android Presentation API (API 17).
Works very well.
Your presentation is connected to an Activity, which lets you display e.g a Live Stream on the TV (through e.g HDMI) and use phone's display as a remote. I've done this in an app, and also out of laziness added a second app for a second phone which is used as a bluetooth remote control.
Hope this answers your question.
Surface flinger 只能看到两种不同类型的图形缓冲区,即用于正常 ui 显示的帧缓冲区和用于视频和相机预览的覆盖缓冲区。因此,当插入 hdmi 电缆时,帧缓冲区(或覆盖缓冲区)应由显示控制器传输到 hdmi。但不幸的是,没有公共 api 来控制这种数据流。它高度依赖于芯片组供应商或设备制造商如何实现硬件覆盖或 HDMI 设备驱动程序。
Surface flinger only sees two different kind of graphic buffers, frame buffers for normal ui display and overlay buffers for videos and camera previews. So frames buffers (or overlay buffers) should be transferred to hdmi by display controller when hdmi cable is plugged in. But unfortunately there isn't public api to control this kind of data flow. It is highly dependent on how hardware overlay or hdmi device drivers are implemented by chipset vendor or device manufacturer.
我认为您无法做到这一点,除非您为供应商发布了 HDMI API 的设备(例如某些摩托罗拉设备)进行开发。对于其余部分,它们通常有一些 hdmi 操作系统服务(应用程序无法访问),使用 ioctl 和 /dev/ 访问权限进行 hdmi 控制(同样,未签名的应用程序无法访问)。
I dont think you can do this, unless you develop for a device for which vendor published HDMI API, like for some Motorola devices. For the rest, they typically have some hdmi OS service (not accessible to apps) that uses ioctls and /dev/ access for hdmi control (again, not accessible to unsigned apps).
您可以利用 HDMI 覆盖通信中的缺陷来实现此目的。您的视频输入直接进入 Android 输出,但您可以使用另一种屏幕布局,由于覆盖问题,该屏幕布局在 HDMI 中不可见。
You can exploit the flaw in HDMI overlay communication to achieve this. Your video input goes directly to the android output but you can use another layout for the screen which will not be visible in HDMI due to overlay issue.