¿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?
- ¿Es posible mostrar contenido diferente en la pantalla de Android y la pantalla conectada a través de HDMI?
- Android desactivar la salida HDMI?
- Enviar comando CEC de TV a Android
- Obtenga datos EDID HDMI
- Aplicación para enviar el comando hdmi cec
- ¿Es posible enviar comandos HDMI CEC desde un dispositivo Android?
- Pantalla secundaria de Android: persistencia a través de la invocación de actividad
- Detectar el puerto HDMI en el dispositivo Android
- ¿Es posible cambiar la fuente de entrada de TV de forma programática?
- Android - deshabilitar HDMI
- Android no puede usar hdmi en la pestaña creativa y necesita ser notificado en todos los dispositivos (máximo) tan pronto como hdmi esté conectado
- Programación de salida HDMI para pantalla dual
- Cómo utilizar HdmiControlService
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 serializar ArrayList en android
- Android: ¿Cómo hacer que el lanzador abra siempre la actividad principal en lugar de la actividad infantil? (o de otro modo)