android hdmi 监听,对于HDMI设备连接状态的监听

对与最近主要做的是电视机盒子端的开发,其中涉及到设备的状态监听比较繁琐,所以对HDMI的连接状态的监听方法做个记录,方便后续查看。

主要通过两种方式:

(1)比较常用的广播监听

注册一个动态广播来获取HDMI接口的插拔,它的Action的name为 “android.intent.action.HDMI_PLUGGED”,具体的代码如下:

private static

BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context

context, Intent receivedIt) {

String action = receivedIt.getAction();

if

(action.equals("android.intent.action.HDMI_PLUGGED")) {

boolean state =

receivedIt.getBooleanExtra("state", false);

if (state) {

isHdmiConnect = true;

} else {

isHdmiConnect = false;

}

}

}

};

这样可以监听HDMI接口的插拔,但存在一个问题当第一次进入程序的时候是不知道HDMI的状态的需要配合第二种方式。

(2)读取系统文件中的内容

直接读取系统文件中的数据,路径为"/sys/devices/virtual/switch/hdmi/state",其中存在一些设备的存储路径不同需要做出修改具体代码如下:

private static

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;

}

}

这种方法可以直接获取状态,但如果多次频繁查询可能会出现异常抛出,建议两种方法配合使用最为稳定。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值