2011-12-27 15 views
11

Bir HDMI cihazının bağlı olup olmadığını veya Android cihazıma bağlı olup olmadığını tespit etmem gerekiyor. Bunun için bir BroadcastReceiver kullanıyorum ve bunu da algılayabiliyorum. Ancak BroadcastReceiver Uygulamamın başlamasından önce bile HDMI cihazı bağlandığında senaryoyu kullanamıyorum. Bu durumda BroadcastReceiver, herhangi bir HDMI cihazının bağlı olup olmadığını bulamıyor. Herhangi bir HDMI cihazının bağlı olup olmadığını öğrenmek için herhangi bir yol var mı?Android'de HDMI cihazı bağlantı durumu nasıl kontrol edilir?

+0

Yayın alıcı kodunuzu paylaşın. Motorola cihazları için çalışmak için tasarlanmıştır ... –

+0

[This] (https://stackoverflow.com/a/21383495/1921481) cevap benim için çalıştı, sadece niyetini değiştirmek zorunda kaldı. "Android.intent.action.HDMI_PLUGGED" yerine "android.intent.action.HDMI_HW_PLUGGED" olmalıdır. (Bu cevaba daha fazla yorum yapılması gerekiyordu ama itibarım benim yorum yapmama izin vermiyor). –

cevap

6

ben başka bir yerden diğer cevaplar kullanarak bu ve bazı ile geldi:

/** 
* 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; 
    } 
} 

sık sık kontrol ediyorsanız, sonucunu saklamak ve @ Hamen en dinleyici ile güncelleyin isterdim .

0

çek dosyası/sys/class/switch/HDMI/devlet, bir HDMI

+0

, bu cihazın köklenmesi gerektiğini varsayalım? – Adi

+0

no, aygıtın köklenmesine gerek yok –

4

bağlı olduğundan .sonyericsson.intent.action.HDMI_EVENT" sonunda bu çıktı. S3 ve S4 üzerinde çalışıyor. Herhangi bir 4+ Android sürümü ile çalışmalıdır.

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 uygulama etiketine bu ihtiyacı:

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

Bu, hdmi'nin bağlı veya bağlantısının kesildiğini algılamamda bana yardımcı oldu, ancak uygulamayı çalıştırmadan önce hdmi'nin bağlı olduğunu bilmemek. – jch

4

Sen /sys/class/display/display0.hdmi/connect veri alabilir. Dosyanın içeriği 0 ise, HDMI bağlı değildir, aksi halde 1 ise, HDMI bağlanır.

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

, cihazın köklenmesi gerektiğini varsayar mı? – Adi

+0

Cihazın köklenmesine gerek olmadığını düşünüyorum. –

İlgili konular