对与最近主要做的是电视机盒子端的开发,其中涉及到设备的状态监听比较繁琐,所以对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;

}

}

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

android hdmi 监听,对于HDMI设备连接状态的监听相关推荐

  1. 安卓网络连接全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓网络连接情况全解:包括网络连接状态的监听.网络数据使用状态的监听.获取当前网络连接情况.启动wifi.获取当前连接wifi的网络情况.扫描wifi ...

  2. Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(二)

    这是Managing Device Awake State的下半篇,上半篇请看:Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(一) 在了解接下 ...

  3. Android之判断USB传输模式与USB连接状态

    1.监听UsbManager.ACTION_USB_STATE public class UsbManager {private static final String TAG = "Usb ...

  4. linux探测i2c设备连接状态,手把手教你写Linux I2C设备驱动

    Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...

  5. android 连接蓝牙键盘事件监听

    记一次通过蓝牙键盘触发事件,在对应的Activity复写onKeyUp每次按键或长按保证只触发一次 @Overridepublic boolean onKeyUp(int keyCode, KeyEv ...

  6. Android蓝牙开发教程(二)——连接蓝牙设备

    在上一篇中已经介绍如何搜索附近可连接的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(一)--搜索蓝牙设备 获取到设备后就可以开始处理蓝牙设备之间的连接. 在上一篇教程中我 ...

  7. 爱思助手刷机中断,无法退出恢复模式的解决方案(越狱出现卡在“等待苹果设备连接到开机模式”提示)

    问题 博主高中时用的一款iPhone4到现在依然没有寿终正寝,开机键坏了,随着ios系统的不断更新,很多软件也无法下载,我时长在午夜听到小机机的呐喊:我觉得我还可以抢救一下!于是拆了机,把关机键卸了下 ...

  8. android 10.0 监听Soft Ap热点连接与断开

    1.概述 在10.0的系统产品开发中,在定制化银行设备时,需要设备开机后打开热点,然后监听顾客连接设备和断开设备 那么SoftApManager.java 就主要负责热点连接的管理,就需要分析它的相关 ...

  9. Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC

    获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...

最新文章

  1. 安徽计算机中专学校有哪些,安徽2021年中专学校里面都有什么专业
  2. Dell服务器常用管理命令总结
  3. 【Bit-Z月报】11月送出182.4万美元活动奖励,真是豪气
  4. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
  5. SecureCRT报错ImportError: No module named itertools(解决方案无法复现)
  6. 使用Spring Security保护REST服务
  7. leetcode:Excel Sheet Column Number
  8. 中国大学MOOC“Python程序设计基础”第6次开课时间
  9. linux释放内存后设备起不来,Linux-Memory小记
  10. 第一次点击button, view视图出现;第二次点击button,view视图消失
  11. 大数据技术原理与应用(第一章,大数据概述)
  12. vue结合vue-amap调用高德地图行政区划分并添加标记点
  13. 2022最新PHP微信/QQ域名防封直连系统源码
  14. 5个最好用的GIF制作软件
  15. zookeeper指北
  16. 最强内存稳定性测试软件,内存稳定性测试软件TM5
  17. 计算机运行内存和显卡内存不足,系统提示显卡内存不足怎么办?-解决系统提示显卡内存不足的方法 - 河东软件园...
  18. 渗透测试-burp suite实战
  19. 彩票模拟程序 [福利彩票-双色球] [体育彩票 - 大乐透]
  20. 【转】WebRTC多人音视频解决方案

热门文章

  1. 青云志服务器修改,青云志—【公告】关服公告
  2. ENVI中出现tif文件无法直接打开
  3. python脚本计算STM32的bxCAN的波特率
  4. 区块链游戏中的网络效应:内容仍为王
  5. 下载模板引擎art-template时出现的问题及解决方案
  6. 傲游创始人陈明杰创业故事
  7. 架设Hmailserver+webmail邮件服务器
  8. ***虚拟专用网技术
  9. 蒙特卡洛方法的使用:计算pi值与积分计算
  10. 每日加瓦,终成栋房6-展望未来(SpringBoot)