我需要检测HDMI设备是否连接到我的Android设备。 为此,我使用的是BroadcastReceiver,它也能够检测到。 但是,使用BroadcastReceiver时,即使在启动应用程序之前连接HDMI设备时,我也无法处理这种情况。在这种情况下,BroadcastReceiver无法找到是否连接了任何HDMI设备。 有什么方法可以知道任何HDMI设备是否连接?如何检查Android中的HDMI设备连接状态?
回答
我想出了这个用其他的答案和一些从其他地方:
/**
* 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;
}
}
如果你经常检查,你要存储的结果,并与@ hamen的监听器更新。
同样的问题在这里。一些谷歌的-ING告诉我,从http://developer.sonymobile.com/wp/2012/05/29/how-to-use-the-hidden-hdmi-api-tutorial/但没有太多的希望与其他厂商除摩托罗拉:
应用程序可以通过收听广播的意图,如果该设备通过HDMI 连接器连接检测: “COM .sonyericsson.intent.action.HDMI_EVENT”
检查文件/ SYS /班/开关/ HDMI /状态,如果是1,那么它连接到HDMI
这是否假设设备必须被植入? – Adi 2014-03-12 11:01:18
不,设备不需要根植 – 2014-03-14 22:19:24
我想出了这个最终。它正在开发S3和S4。它应该适用于任何4+ 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需要这个应用程序将标签:
<receiver android:name="__com.example.android__.HdmiListener" >
<intent-filter>
<action android:name="android.intent.action.HDMI_PLUGGED" />
</intent-filter>
</receiver>
这帮助我检测hdmi是否连接或断开连接,但不知道是在运行应用程序之前连接了hdmi。 – jch 2014-07-25 21:40:22
您可以从/sys/class/display/display0.hdmi/connect
获取数据。如果文件内容为0
,则HDMI未连接,否则如果是1
,则HDMI已连接。
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();
}
这是否假设该设备必须是植根的? – Adi 2014-03-12 11:00:53
我认为没有必要植根设备。 – 2014-03-31 08:00:23
- 1. 如何以编程方式检查Android中蓝牙设备的连接状态?
- 2. 检查Android上的USB连接状态
- 3. Android的HDMI-CEC检查电视电源状态
- 4. 如何检查互联网连接的设备的Android
- 5. 如何检查我的android设备是否有连接?
- 6. 如何检查C中的网络设备状态?
- 7. 如何检查Android设备是否连接到网络?
- 8. 如何通过3G连接检查互联网连接状态?
- 9. 检测连接到Wifi的Android设备
- 10. 我想检查每次Android设备启动时的SIM状态
- 11. 如何检查PC重启时的Windows设备状态?
- 12. 检索WiFi连接状态(Android)
- 13. 检查,如果Android设备连接到网络
- 14. 如何从android中的其他类检查套接字状态?
- 15. IE9 - 检查服务器连接状态
- 16. 产生SSH连接但检查状态?
- 17. 如何检测连接状态
- 18. 如何检测电源连接状态?
- 19. 如何在java中检查url连接状态
- 20. 后状态从Android设备
- 21. 如何检查我的WCF服务的连接状态
- 22. Androd - 检查设备具有Internet连接
- 23. 检查adb设备连接情况
- 24. Android中配对设备的状态
- 25. 如何检查Kinesis客户端的连接状态?
- 26. 如何禁用android设备的hdmi端口而不生根?
- 27. 如何查询TCP连接状态?
- 28. 检索连接状态
- 29. 如何检查/通过设置状态
分享您的广播接收器代码。是否仅为摩托罗拉设备工作??? – 2012-04-03 09:32:00
[This](https://stackoverflow.com/a/21383495/1921481)回答为我工作,只需要替换意图。而不是“android.intent.action.HDMI_PLUGGED”它必须是“android.intent.action.HDMI_HW_PLUGGED”。 (这应该是更多的评论,但我的声誉不允许我发表评论)。 – 2017-12-21 00:24:00