HDMI连接状态监测

需求:通过安卓系统获取HDMI连接状态。
安卓获取HDMI连接状态有两种方法,一种是通过系统广播监听;另一种是读取系统文件,从而判断HDMI的连接状态。

2.1 HDMI到底是啥?

HDMI(High Definition MultimediaInterface )中文名叫高清晰度多媒体接口,是一种数字化视频/音频接口技术,是适合影像传输的专用型数字化接口,其可同时传送音频和影像信号,最高数据传输速度为18Gbps(2.0版)。

2.2 HDMI传输原理

看了网上的资料后,个人对HDMI的传输原理理解为:HDMI接口中一共有19个引脚,其中每个引脚有自己的作用,中间有那么几个引脚传输信号,第18引脚是供电的,最后一个引脚(第19个引脚)是用来提供支持HDMI热拔插的(热拔插:简而言之就是在不关闭设备的情况可以对HDMI线进行拔插并且不影响设备的运行),实现热拔插的过程是电压从18引脚进,19引脚出,获取18、19两个引脚见的电压如果低于0.5V就判定为此时HDMI已断开。

2.3 安卓监测原理

网上介绍了两种监测方法,一种是通过广播来监听,另一种是通过读取系统文件来判断。监测的手段就是通过安卓底层驱动对19引脚就行监听,HDMI线的插拔会触发广播事件。通过读取文件来判断就是,底层驱动会根据HDMI的通断状态创建一个文件,文件中存放设备的信息,包括连接状态,读取文件时把这个文件中标志设备状态的状态拿出来,以此判断HDMI的连接状态。

2.3.1 通过广播监听代码实例:

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")) {//HDMI插拔的广播事件
            boolean state = receivedIt.getBooleanExtra("state", false);//事件返回一个Boolean类型的state值,根据state值可以判断其状态,true表已连接,false表断开。
            if (state) {
                isHdmiConnect = true;
            } else {
                isHdmiConnect = false;
            }
        }
    }
};

2.3.2 通过读取系统文件判断HDMI连接状态代码实例:

/**
* 广播只能监听HDMI的插拔 第一次进入程序时不知道HDMI的连接状态
* 此时需要去读系统文件去判断HDMI的连接状态
*
* @return true 连接 false 未连接
*/

public 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;
    }
}

总结:两种方法都能实现对HDMI连接状态的监听。通过广播监听时在初次进入时是监听不到的,所以在初次进入可通过第二种方法判断HDMI的连接状态;不建议直接使用第二种方法,循环定时读取系统文件来达到监听的效果,频繁的读取系统文件影响性能。以上就是本人对HDMI的一个初步认识和了解,在此记录一下。



转载自:https://www.jianshu.com/p/94095c907c6a

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值