2014-04-01 17 views
10

Eines meiner Android-Projekte muss von Zeit zu Zeit zwischen zwei HDMI-Eingängen wechseln, möglicherweise einmal pro Minute. Ein HDMI-Eingang stammt vom HDMI-Ausgang eines Android-Geräts und einer von einer externen, nicht kontrollierbaren Quelle.Android - deaktivieren HDMI

Ich habe einen HDMI-Schalter gefunden, der automatisch zwischen zwei Quellen schaltet, wenn das Signal verfügbar wird. Meine Frage ist, gibt es eine Möglichkeit, vorübergehend (zB eine Minute) die HDMI-Ausgabe meines Android-Gerätes zu schneiden, damit der Switch automatisch den zweiten HDMI-Eingang nutzen kann? Dann muss ich den HDMI-Ausgang wiederherstellen, damit der Schalter den HDMI-Ausgang meines Geräts anzeigt.

Ich fand diese question, aber ich bin mir nicht sicher, ich muss HDMI-Ausgang deaktivieren, sondern eher die Anzeige in irgendeiner Weise umleiten und es nach 1 Minute wiederherstellen.

UPDATE

ich eine Prämie beginnen soll, damit ich meine Bitte etwas klarstellen: Ich habe einen HDMI-fähigen Fernseher mit 2 Ports. Mein Android-Gerät ist an Port 1 angeschlossen, ein anderes Gerät ist an Port 2 angeschlossen. Das Fernsehgerät schaltet automatisch auf den nächsten HDMI-Port um, an dem ein Signal anliegt.

Zum Beispiel, wenn HDMI1 und HDMI2 Signale haben, stelle ich meinen Fernseher auf HDMI1. Wenn das erste Gerät seinen HDMI-Ausgang "schließt", schaltet das Fernsehgerät auf HDMI2 um. Nach einer Weile (5 Minuten) "öffnet" das erste Gerät HDMI1 wieder (dh das erste Gerät aktiviert seinen HDMI-Ausgang) und das zweite Gerät "schließt" seinen HDMI-Ausgang, so dass das Fernsehgerät wieder auf HDMI1 schaltet. Auf diese Weise kann ich eine Mischung aus Videos erstellen.

Die technische Schwierigkeit, mit der ich konfrontiert bin, ist die Steuerung der HDMI-Ausgabe in Android-Systemen. Mein Android-Gerät hat nur eine HDMI-Schnittstelle zur Anzeige, es hat keinen eigenen Bildschirm.

Das einzige Zeug in der Nähe von dem, was ich brauche, ist this SO post, aber es hilft nicht wirklich in meinem Fall.

+0

"Meine Frage ist, gibt es eine Möglichkeit, vorübergehend (eine Minute zum Beispiel) HDMI-Ausgabe von meinem Android-Gerät zu schneiden, so dass der Schalter automatisch den zweiten HDMI-Eingang verwenden kann?" - Fragen Sie den Hersteller des Geräts. Dafür gibt es nichts in Android selbst, außer dem Schreiben eines eigenen ROM und vielleicht auch nicht dann. – CommonsWare

+0

@CommonsWare könnte es ein unmögliches Problem sein zu lösen (Ich suche eine Nicht-ROM-Lösung); Wie auch immer, hat jemand es geschafft, es zu lösen? – Adi

Antwort

8

Der beste Ansatz besteht darin, den Befehlssatz für DisplayID zu verwenden, mit dem Sie nach Anzeigen suchen können, die hinzugefügt, geändert oder entfernt werden sollen.

Hier ist ein kleines Beispiel, wie es Ihre Anzeige zu ändern geht/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(); 
     } 
    }; 

Und hier, wie alle Geräte Ihre HDMI/Display anschließen zur Verfügung zu bekommen:

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); 
    } 

Um unregister Sie verwenden:

//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(); 
} 

Über "ungültig" HDMI-Ausgang, wenn es schließlich auftritt, nur re zeichne es. Dies sollte "invalidate" lösen, falls es passiert.

Sie könnten nützlich sein, weitere documentation zu überprüfen.

+0

ok und wie kann ich ein Display abmelden?Das ist der Teil, der mich interessiert – Adi

+0

Danke, aber denkst du, dass dies meine HDMI-Ausgabe "ungültig machen" wird? Ich werde es versuchen und sehen – Adi

+0

noch nicht sicher, ob dies funktioniert, wie ich es will, aber ich werde Ihnen die Prämie geben; immer noch muss ich es testen, aber ich schätze deine Hilfe – Adi