¿Cómo comprobar el estado de la conexión del dispositivo HDMI en Android?

Necesito detectar si un dispositivo HDMI está conectado o no a mi dispositivo Android. Para esto estoy usando un BroadcastReceiver y es capaz de detectar también. Pero con BroadcastReceiver no puedo manejar el escenario cuando el dispositivo HDMI está conectado incluso antes de que mi aplicación se iniciara. En este caso, el BroadcastReceiver no puede encontrar si hay algún dispositivo HDMI conectado o no. ¿Hay alguna manera de saber si algún dispositivo HDMI está conectado o no en algún momento?

Me ocurrió esto usando las otras respuestas y algunas de otras partes:

/** * Checks device switch files to see if an HDMI device/MHL device is plugged in, returning true if so. */ private boolean isHdmiSwitchSet() { // The file '/sys/devices/virtual/switch/hdmi/state' holds an int -- if it's 1 then an HDMI device is connected. // An alternative file to check is '/sys/class/switch/hdmi/state' which exists instead on certain devices. File switchFile = new File("/sys/devices/virtual/switch/hdmi/state"); if (!switchFile.exists()) { switchFile = new File("/sys/class/switch/hdmi/state"); } try { Scanner switchFileScanner = new Scanner(switchFile); int switchValue = switchFileScanner.nextInt(); switchFileScanner.close(); return switchValue > 0; } catch (Exception e) { return false; } } 

Si está comprobando a menudo, desea guardar el resultado y actualizarlo con el receptor de @ hamen.

Salí con esto eventualmente. Está trabajando en S3 y S4. Debe funcionar con cualquier versión Android de 4+.

 public class HdmiListener extends BroadcastReceiver { private static String HDMIINTENT = "android.intent.action.HDMI_PLUGGED"; @Override public void onReceive(Context ctxt, Intent receivedIt) { String action = receivedIt.getAction(); if (action.equals(HDMIINTENT)) { boolean state = receivedIt.getBooleanExtra("state", false); if (state) { Log.d("HDMIListner", "BroadcastReceiver.onReceive() : Connected HDMI-TV"); Toast.makeText(ctxt, "HDMI >>", Toast.LENGTH_LONG).show(); } else { Log.d("HDMIListner", "HDMI >>: Disconnected HDMI-TV"); Toast.makeText(ctxt, "HDMI DisConnected>>", Toast.LENGTH_LONG).show(); } } } } 

AndroidManifest.xml necesita esto en la etiqueta de la aplicación:

  <receiver android:name="__com.example.android__.HdmiListener" > <intent-filter> <action android:name="android.intent.action.HDMI_PLUGGED" /> </intent-filter> </receiver> 

Puede obtener los datos de /sys/class/display/display0.hdmi/connect . Si el contenido del archivo es 0 , HDMI no está conectado, de lo contrario si es 1 , HDMI está conectado.

 try { File file = new File("/sys/class/display/display0.hdmi/connect"); InputStream in = new FileInputStream(file); byte[] re = new byte[32768]; int read = 0; while ((read = in.read(re, 0, 32768)) != -1) { String string = new String(re, 0, read); Log.v("String_whilecondition", "HDMI state = " + string); result = string; } in.close(); } catch (IOException ex) { ex.printStackTrace(); } 

El mismo problema aqui. Algunos google-ing me dijo que no hay mucha esperanza con otros fabricantes, además de Motorola, sin embargo de http://developer.sonymobile.com/wp/2012/05/29/how-to-use-the-hidden-hdmi-api- Tutorial / :

Una aplicación puede detectar si el dispositivo se conecta a través de un conector HDMI escuchando la intención de difusión: "com.sonyericsson.intent.action.HDMI_EVENT"

Compruebe el archivo / sys / class / switch / hdmi / estado, si es 1 entonces está conectado a un HDMI

  • ¿Cómo puedo deshabilitar el puerto hdmi de un dispositivo Android sin enraizarlo?
  • Cómo detectar el uso de HDMI en Samsung Galaxy S II
  • Exploded retrato Salida HDMI en Android (Samsung Galaxy S III)
  • Utiliza dongle libCEC + USB en la aplicación para Android
  • Aplicación para Android que muestra diferentes diseños a la vez con hdmi
  • Android - enviar comandos HDMI CEC a TV - minix - libCEC
  • ¿Cómo detectar si el puerto HDMI de un dispositivo Android tiene HDCP habilitado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.