Android – 禁用HDMI

我的一个Android项目需要不时切换2个HDMIinput,可能每分钟一次。 一个HDMIinput来自Android设备的HDMI输出,另一个来自外部不可控制的信号源。

当信号变得可用时,我发现一个HDMI开关可以在两个信号源之间自动切换。 我的问题是,有没有办法暂时(例如一分钟)切断我的Android设备的HDMI输出,使交换机可以自动使用第二个HDMIinput? 然后,我需要恢复HDMI输出,以便开关将显示我的设备的HDMI输出。

我发现这个问题,但我不知道我需要禁用HDMI输出,而是以某种方式redirect显示器,并在1分钟后恢复。

UPDATE

我想开始赏金,所以我会澄清我的要求:我有一个2端口的HDMI电视。 我的android设备连接在端口1上,另一台设备连接在端口2上。电视自动切换到下一个有信号的HDMI端口。

例如,如果HDMI1和HDMI2有信号,我把电视机放在HDMI1上。 当第一个设备“closures”其HDMI输出时,电视将切换到HDMI2。 经过一段时间(5分钟),第一个设备“重新打开”HDMI1(意味着第一个设备启用其HDMI输出),第二个设备“closures”其HDMI输出,以便电视机切换回HDMI1。 这样我可以制作混合的video。

我面临的技术难题是如何控制Android系统中的HDMI输出。 我的Android设备只有HDMI接口显示,没有专用的屏幕。

唯一足够接近我需要的东西是这个SOpost ,但它并没有真正帮助我的情况。

Solutions Collecting From Web of "Android – 禁用HDMI"

最好的方法是使用与DisplayID相关的一组命令,使您可以侦听添加,更改或删除的显示。

这里是一个简单的例子,它是如何改变你的显示器/ HDMI:

private final DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() { @Override public void onDisplayAdded(int displayId) { Log.d(TAG, "Display #" + displayId + " added."); mDisplayListAdapter.updateContents(); } @Override public void onDisplayChanged(int displayId) { Log.d(TAG, "Display #" + displayId + " changed."); mDisplayListAdapter.updateContents(); } @Override public void onDisplayRemoved(int displayId) { Log.d(TAG, "Display #" + displayId + " removed."); mDisplayListAdapter.updateContents(); } }; 

在这里如何让所有的HDMI /显示设备可用连接:

  protected void onResume() { // Be sure to call the super class. super.onResume(); // Update our list of displays on resume. mDisplayListAdapter.updateContents(); // Restore presentations from before the activity was paused. final int numDisplays = mDisplayListAdapter.getCount(); for (int i = 0; i < numDisplays; i++) { final Display display = mDisplayListAdapter.getItem(i); final PresentationContents contents = mSavedPresentationContents.get(display.getDisplayId()); if (contents != null) { showPresentation(display, contents); } } mSavedPresentationContents.clear(); // Register to receive events from the display manager. mDisplayManager.registerDisplayListener(mDisplayListener, null); } 

要取消注册,请使用:

 //unregisterDisplayListener(DisplayManager.DisplayListener); @Override protected void onPause() { // Be sure to call the super class. super.onPause(); // Unregister from the display manager. mDisplayManager.unregisterDisplayListener(mDisplayListener); // Dismiss all of our presentations but remember their contents. Log.d(TAG, "Activity is being paused. Dismissing all active presentation."); for (int i = 0; i < mActivePresentations.size(); i++) { DemoPresentation presentation = mActivePresentations.valueAt(i); int displayId = mActivePresentations.keyAt(i); mSavedPresentationContents.put(displayId, presentation.mContents); presentation.dismiss(); } mActivePresentations.clear(); } 

关于“无效”HDMI输出,如果最终发生,只需重新绘制。 这应该解决任何“ 无效 ”,万一它发生。

你可能会发现有用的进一步检查文件 。