遇到一个检查蓝牙设备连接状态问题,困扰许久。在网上查询良久,尝试了多种方案,也没有很好的解决,最终经“高人指点”,小有所获,在此小记。

网上查询的主要方法为以下两种:

1.getProfileConnectionState()

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

int state = adapter .getProfileConnectionState(int profile)

调用BluetoothAdapter 中的,getProfileConnectionState()方法通过检查是否有使用 HEALTH HEADSET A2DP三种profile的设备存在来判断当前是否存在设备连接。详细内容请参考下文

android 获取蓝牙各种连接状态

2.getConnectionState()

Class bluetoothAdapterClass = BluetoothAdapter.class;

try {

Method method = bluetoothAdapterClass.getDeclaredMethod("getConnectionState", (Class[]) null);

method.setAccessible(true);

int state = (int) method.invoke(adapter, (Object[]) null);

} catch (Exception e) {

e.printStackTrace();

}

调用BluetoothAdapter中的getConnectionState()方法,直接检查是否存在连接状态的蓝牙设备存在,由于getConnectionState()为 @hide 的方法,所以使用了反射的机制来调用。详细内容请参考下文:

Android开发 获取系统已连接蓝牙设备

但是以上两个方法让我感觉到了淡淡的忧伤:以上两种方法貌似只能检查到低功耗蓝牙的连接状态,对于经典蓝牙无能为力。无奈之下只能按照上面两种思路,写了下面这种检查经典蓝牙的方法。

3.isConnected()(检查经典蓝牙连接情况)

public boolean isBtConDeviceByMac(String strCurBtMac) {

if (mBtAdapter == null) {

return false;

}

Set set = mBtAdapter.getBondedDevices();

BluetoothDevice device = null;

for (BluetoothDevice dev : set) {

if (dev.getAddress().equalsIgnoreCase(strCurBtMac)) {

device = dev;

break;

}

}

if (device == null) {

return false;

}

//得到BluetoothDevice的Class对象

Class bluetoothDeviceClass = BluetoothDevice.class;

try {//得到连接状态的方法

Method method = bluetoothDeviceClass.getDeclaredMethod("isConnected", (Class[]) null);

//打开权限

method.setAccessible(true);

return (boolean) method.invoke(device, (Object[]) null);

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

该方法使用了BluetoothDevice类中的isConnected()方法,同理也是使用了反射的形式。通过BluetoothAdapter获取当前的匹配状态的Bluetooth,检查对应MAC地址的设备是为连接状态(PS:将检查写在循环内可以形成以上两篇文章类似的效果)。

android检测蓝牙设备连接不上,Android检查设备连接状态相关推荐

  1. 在Linux下adb连接不上android手机的终极解决方案

    2013-07-25 17:19:15|  分类: android|举报|字号 订阅 1.做android开发的过程,碰到了Linux下adb识别不了android设备的问题,刚开始在网上google ...

  2. 网易MuMu模拟器连接不上Android Studio

    近期开发一个项目,折腾了好久,编写完程序后,真机上运行没有异常,而在MuMu模拟器上运行,程序总是中断(MuMu模拟器连接不上,只能打包好apk再放到MuMu上测试,有点蠢萌-),没办法调试,就获取不 ...

  3. android8carlife连接不上,carlife为什么连接不上汽车 连接不上汽车解决方法

    使用 CarLife 互联之前,请确认手机车机都同时装有 CarLife(去官网下载). 一. Android 有线连接准备 ①手机设置→②打开开发者选项→③勾选 USB 调试→④允许 USB 调试→ ...

  4. 电信宽带连接不上无线可连接服务器,电信宽带wifi连不上网的解决方法

    电信宽带出错那是常有的事,出现连接不上网络一般会提示错误代码,原因可能是系统设置问题,也可能是网络运营商那边出现问题.下面是学习啦小编为大家整理的关于电信宽带wifi连不上网,一起来看看吧! 电信宽带 ...

  5. 电信宽带连接不上无线可连接服务器,电信宽带连接为什么无线连接上宽带连接连不上...

    无线连上了,说明无线网卡和无线信号都没有问题.宽带连接不上,可能是线路的故障,有时甚至是电信的故障,你可以与电信客服联系一下,同时你也应该再用的用户名和密码再试试连接,有时也可能是自己输入的错误. 那 ...

  6. linux服务器开启远程连接不上,远程SSH连接服务与基本排错经验总结

    为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器 ...

  7. 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql

    我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...

  8. 无线宝服务器连接不上,无线网络连接不上怎么办 为什么无线网络连接不上

    1.第一步:点击刷新网络列表时出现"Windows无法配置此连接"的提示,则打开金山卫士的"系统优化"功能,点击"开机加速"选项卡,点击&q ...

  9. 计算机连接不上蓝牙鼠标,蓝牙鼠标连接不上电脑怎么办_蓝牙鼠标连接不上电脑的解决办法...

    如果我们的电脑安装的是蓝牙鼠标的话,在使用过程中可能会出现的一些问题.近日就有用户反映说自己遇到了蓝牙鼠标连接不上电脑的问题,不知道怎么办,所以今天小编就来为大家分享关于蓝牙鼠标连接不上电脑的解决办法 ...

  10. u盘和计算机无法连接不上,U盘连接不上电脑怎么办

    有些时候我们将U盘插入电脑,会发现U盘的盘符无法正常显现出来,很多网友对此非常无奈,只能通过插拔来尝试解决问题,今天学习啦小编就为大家带来了U盘连接不上电脑怎么办的解决方法,希望能够帮到大家. U盘连 ...

最新文章

  1. Difference between prop and attr in different version of jquery
  2. Linux的load导入语句,LOAD DATA INFILE语句导入数据进入MySQL的一些注意事项
  3. 双系统XP和ubuntu,升级ubuntu出现no such device grub rescue
  4. internship research notes
  5. 如何发表自己的第一篇SCI?
  6. [ZOJ 4024] Peak
  7. java取两个10_30的随机整数_产生10个[30,90]区间上的随机整数,然后对其用选择法...
  8. 关于人生的十句经典的话! .
  9. 给博客园添加live2d看板娘(转)
  10. 安装Win10操作系统-纯净版
  11. 数据结构实验报告:顺序表基本操作的实现
  12. 行为主义心理学在游戏领域的10年发展
  13. NAS(Network Attached Storage)协议
  14. 004:Python爬虫实战 由易到难(图文解析)
  15. VG vs SS WE vs IM [20160815]
  16. 计算机内存类型包括什么,计算机内存类型是什么
  17. 域名过期后还能续费域名吗?
  18. Python字串(string)基础与20种常见操作
  19. STM32C8T6 流水灯的实现(库函数版)
  20. java kdj_基于java语言开发的个性化股票分析技术:随机指数(kdj).doc

热门文章

  1. 只要5分钟用数据可视化带你看遍11月份新闻热点事件
  2. 带你彻彻底底搞懂朴素贝叶斯公式
  3. 基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)
  4. [Pytorch]基于混和精度的模型加速
  5. IP SOC与Camera ISP
  6. nvGRAPH API参考分析(二)
  7. 使用卷积神经网络的自动心电图诊断
  8. 汽车车灯灯具系统(下)
  9. Android布局优化之include、merge、ViewStub
  10. Django 缓存6.2