Necesito detectar si un dispositivo HDMI está conectado o no a mi dispositivo Android. Para esto estoy usando un BroadcastReceiver y también es capaz de detectar. Pero con BroadcastReceiver no puedo manejar el escenario cuando el dispositivo HDMI está conectado incluso antes de que se lanzara mi aplicación. En este caso, BroadcastReceiver no puede encontrar si hay algún dispositivo HDMI conectado o no. ¿Hay alguna forma de que pueda saber si algún dispositivo HDMI está conectado o no en algún punto?¿Cómo verificar el estado de conexión del dispositivo HDMI en Android?
Respuesta
me ocurrió esto utilizando las otras respuestas y algunos de otros lugares:
/**
* 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 usted está comprobando a menudo, usted desea almacenar el resultado y actualizarlo con oyente @ de hamen .
Mismo problema aquí. Algunos google-ción me dijo que no hay mucha esperanza con otros fabricantes, además de Motorola, sin embargo a partir 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 conecte a través de un conector HDMI escuchando la intención de difusión: "com .sonyericsson.intent.action.HDMI_EVENT"
cheque el archivo/sys/class/conmutador/HDMI/estado, si es 1, entonces está conectado a un HDMI
¿supone esto que el dispositivo debe estar rooteado? – Adi
no, el dispositivo no necesita ser rooteado –
me salió con esto a la larga. Está trabajando en S3 y S4. Debería funcionar con cualquier versión 4+ de Android.
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 esta etiqueta en la aplicación:
<receiver android:name="__com.example.android__.HdmiListener" >
<intent-filter>
<action android:name="android.intent.action.HDMI_PLUGGED" />
</intent-filter>
</receiver>
Esto me ayudó a detectar si el hdmi está conectado o desconectado, pero sin saber si el hdmi está conectado antes de ejecutar la aplicación. – jch
Usted 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();
}
¿Esto supone que el dispositivo debe estar rooteado? – Adi
, creo que no hay necesidad de rootear el dispositivo. –
- 1. ¿Cómo encontrar el estado de conexión del socket en C?
- 2. ¿Cómo verificar el estado del apartamento del hilo actual?
- 3. Conexión a localhost: 3000 se negó en el dispositivo Android
- 4. Android: verificar el nombre de la cuenta de google del dispositivo en el servidor
- 5. Verificar el estado de salida del último comando en ipython
- 6. ¿Cómo verificar la identificación del dispositivo del simulador de iPhone?
- 7. SWT: Recibir notificaciones de un cambio de dispositivo del sistema (conexión/desconexión del dispositivo USB)
- 8. ¿Cómo obtener información del dispositivo en Android
- 9. Cómo verificar el estado del servidor PostgreSQL Mac OS X
- 10. Android no puede usar hdmi en la pestaña de creatividad y necesita ser notificado en todos los dispositivos (máximo) tan pronto como se enchufa hdmi
- 11. ¿Cómo verificar la orientación del dispositivo mediante programación en iPhone?
- 12. android: ¿cómo puedo verificar, ese dispositivo admite multitouch?
- 13. Interfaz Android con conexión Ethernet
- 14. Información del dispositivo Android
- 15. ¿Cómo puedo verificar si el Android Market está instalado en el dispositivo de mi usuario?
- 16. cómo saber el estado de la pantalla en un dispositivo Android?
- 17. PyCUDA: consultar el estado del dispositivo (Memoria específicamente)
- 18. Android Cómo verificar la funcionalidad de llamada de soporte del dispositivo/tableta
- 19. Cambiar el nombre del dispositivo Bluetooth Android
- 20. Cómo detectar golpes en el micrófono del dispositivo Android
- 21. cómo ejecutar la aplicación de Android en el dispositivo?
- 22. Verificar el estado de un intermediario ActiveMQ
- 23. Identificador del dispositivo del emulador de Android
- 24. Cambiar el método de entrada del dispositivo Android programáticamente Android
- 25. Programación de salida HDMI para pantalla doble
- 26. ¿Cómo puedo verificar mi conexión svn?
- 27. ¿Cómo puedo controlar el estado de la conexión de red en Android?
- 28. (¿Cómo puede un dispositivo virtual de Android utilizar la conexión a Internet de la computadora local?
- 29. Cómo verificar la aplicación instalada en el dispositivo iPhone
- 30. Cómo verificar el dispositivo usb con instrucción if en bash
Comparta su código de receptor de difusión. ¿Está destinado a funcionar solo para dispositivos Motorola ...? –
[Esta] (https://stackoverflow.com/a/21383495/1921481) respuesta funcionó para mí, solo tuve que reemplazar el intento. En lugar de "android.intent.action.HDMI_PLUGGED" tiene que ser "android.intent.action.HDMI_HW_PLUGGED". (Se suponía que esto era más un comentario de esa respuesta, pero mi reputación no me permite comentar). –