Devo rilevare se un dispositivo HDMI è collegato o meno al mio dispositivo Android. Per questo sto usando un BroadcastReceiver ed è in grado di rilevare anche. Ma con BroadcastReceiver non riesco a gestire lo scenario quando il dispositivo HDMI è collegato ancora prima che la mia applicazione venisse caricata. In questo caso BroadcastReceiver non è in grado di rilevare se un dispositivo HDMI è collegato o meno. C'è un modo per sapere se un dispositivo HDMI è collegato o no in qualsiasi momento?Come verificare lo stato della connessione del dispositivo HDMI in Android?
risposta
sono arrivato fino a questo utilizzando le altre risposte e un po 'da altrove:
/**
* 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;
}
}
Se stai controllando spesso, che ci si vuole memorizzare il risultato e aggiornarlo con ascoltatore @ di hamen .
Lo stesso problema qui. Alcuni google-ing mi ha detto che non c'è molta speranza con altri produttori oltre a Motorola, però da http://developer.sonymobile.com/wp/2012/05/29/how-to-use-the-hidden-hdmi-api-tutorial/:
Un'applicazione in grado di rilevare se il dispositivo è collegare tramite un connettore HDMI ascoltando l'intento di trasmissione: "com .sonyericsson.intent.action.HDMI_EVENT"
controllo il file/sys/class/switch/HDMI/stato, se è 1, allora è collegato a un HDMI
suppone che il dispositivo debba essere rootato? – Adi
no, il dispositivo non ha bisogno di essere rootato –
mi è uscito con questo alla fine. Funziona su S3 e S4. Dovrebbe funzionare con qualsiasi versione Android 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 ha bisogno di questo in tag applicazione:
<receiver android:name="__com.example.android__.HdmiListener" >
<intent-filter>
<action android:name="android.intent.action.HDMI_PLUGGED" />
</intent-filter>
</receiver>
Questo mi ha aiutato a scoprire se l'hdmi è connesso o disconnesso, ma non sapendo se l'hdmi è collegato prima di eseguire l'app. – jch
è possibile ottenere i dati dal /sys/class/display/display0.hdmi/connect
. Se il contenuto del file è 0
, HDMI non è collegato, altrimenti se è 1
, HDMI è connesso.
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();
}
suppone che il dispositivo debba essere rootato? – Adi
penso che non sia necessario il rooting del dispositivo. –
- 1. come scoprire lo stato della schermata su un dispositivo Android?
- 2. Javascript per verificare lo stato della connessione wireless
- 3. Come verificare lo stato della migrazione?
- 4. verifica lo stato della connessione elasticsearch in python
- 5. Come verificare lo stato di visibilità di EditText in Android?
- 6. È possibile inviare comandi HDMI CEC da un dispositivo Android.
- 7. Come posso monitorare lo stato della connessione di rete in Android?
- 8. Come ottenere lo stato della rete del sistema in Qt?
- 9. Come posso ottenere lo stato della suoneria/stato silenzioso di un dispositivo tramite Cordova?
- 10. Verificare lo stato dei dispositivi Bluetooth collegati
- 11. Come ottenere lo stato di dispositivo Android (offline o online) tramite GCM?
- 12. Esiste un modo per verificare lo stato della connessione a IBM WorkLight Server?
- 13. Come verificare lo stato di uno storyboard?
- 14. Android: rileva lo stato di Non disturbare?
- 15. stato della connessione AVRISPmkII: Stato sconosciuto 0x00
- 16. Mantenere i thread e lo stato della connessione nell'app per Android utilizzando onSaveInstanceState?
- 17. Come verificare lo sviluppo pixel-perfect (digitale) in Android?
- 18. Connessione al dispositivo Bluetooth incorporato dal dispositivo Android
- 19. Connessione del mio dispositivo Android con Visual Studio 2015 RC
- 20. La connessione non è stata chiusa, lo stato corrente della connessione è aperto
- 21. : Ottieni lo stato del provider
- 22. Come ripristinare lo stato di visualizzazione del frammento Android
- 23. verifica della connessione Internet del dispositivo utilizzando PhoneGap
- 24. Come descriveresti lo stato attuale della piattaforma Android?
- 25. Android non è in grado di utilizzare hdmi nella scheda creatività e deve essere notificato in tutti i dispositivi (massimo) non appena viene collegato hdmi
- 26. Come controllare il nome in codice del dispositivo Android?
- 27. Come rilevare se la porta HDMI su un dispositivo Android ha abilitato HDCP?
- 28. Android Wear, connessione al dispositivo bluetooth
Condividi il tuo codice di ricezione broadcast. È destinato a funzionare solo per i dispositivi Motorola ... ?? La risposta –
[questa] (https://stackoverflow.com/a/21383495/1921481) ha funzionato per me, ha dovuto solo sostituire l'intento. Invece di "android.intent.action.HDMI_PLUGGED" deve essere "android.intent.action.HDMI_HW_PLUGGED". (Questo avrebbe dovuto essere più di un commento a quella risposta, ma la mia reputazione non mi consente di commentare). –