如何在 android 之前检测外部显示器 API 17

How to detect external displays in android prior API 17

我正在使用的应用程序包含受版权保护的视频,这些视频只能在 Android 设备上使用,而不能在通过 HDMI 或无线连接的外部显示器上使用。我发现 API Presentation and DisplayManager 非常适合检测和控制要在外部显示器上显示的内容,但此 API 仅在 API 17 (android 4.2 ) 和加上。关于如何在 android 4.2 或至少检测连接的显示器并收到通知的任何想法。

问题 #2: 如果 android 设备连接到 PC 进行屏幕录制呢? Presentation or DisplayManager API 可以帮助检测吗?

回到 API 16 你可以使用 MediaRouter class。参见 android 开发者网站。

To get the default display for your presentation, call MediaRouter.getSelectedRoute() and pass it ROUTE_TYPE_LIVE_VIDEO. This returns a MediaRouter.RouteInfo object that describes the system’s currently selected route for video presentations. If the MediaRouter.RouteInfo is not null, call getPresentationDisplay() to get the Display representing the connected display.

完整来源: http://developer.android.com/about/versions/android-4.2.html#SecondaryDisplays

Any idea in how to do this below android 4.2 or at least to detect and be notified for connected displays.

除了 Distwo 的回答中指出的 API 级别 16 中可能 MediaRouter 之外,旧版本 Android 中不支持对外部显示器的应用程序级访问。相对较少的设备甚至支持外接显示器;那些只提供 OS 级别的屏幕镜像。

你最好的选择,如果你想这样称呼它,那就是尝试一些这样的设备,看看是否有任何常见的 LogCat 消息表明存在外部显示器,或者 可能 /proc 中的一些 Linux 级别的东西。但是,很有可能这些最终会因制造商和设备而异。

What about if android device is connected to PC for screen recording. Can Presentation or DisplayManager API help to detect that?

没有