当前位置: 首页 > 知识库问答 >
问题:

区分蓝牙连接到Mac或Windows/Linux设备

钮轩昂
2023-03-14

是否可以检查连接的设备是否由Apple/runs macOS制造?

我在UUID上看到了一些可能包含这些信息的信息,但我还没有找到从中提取这些信息的方法。https://www.bluetooth.com/specifications/assigned-numbers/

有分配的数字,但我还没有发现我是否可以依赖UUID始终拥有这些信息,以及它是否包含一种检查方法。

在我的例子中,我正在开发一个Android应用程序,但我想这和编程语言在这里并不重要。如果提供UUID,我如何检查它是否由苹果制造?

因此,我要么需要一种通用方法来确定UUID是否来自苹果,要么需要一种Android特定的方法来获取信息,主要是只能访问BluetoothDevice对象(没有广告或其他较低级别的东西,因为我不直接访问连接)

更具体地说,我使用BluetoothHidDevice进行连接https://developer.android.com/reference/android/bluetooth/BluetoothHidDevice

编辑:我有一个设备。UUID变量,包含多个UUID

我能用这些值做什么来检查制造商是否是苹果。toString方法按预期生成uuid字符串

举个例子,一个Windows设备有多个UUID,其中一个看起来像这样:

toString: 0000111f-0000-1000-8000-00805f9b34fb

leastSignificantBits: -9223371485494954757

mostSignificantBits: 18824841662464

提供了大约32个UUID

共有3个答案

仇承志
2023-03-14

请打开这个16位UUID数字文档。在第3页这里,您可以看到分配设备的UUID分配表。您可以使用16位UUID成员列表来知道连接了哪些设备,即Apple、Samsung、华为等。因此,我们可以找到基于Apple的16位UUID,因为Apple只是使用IOS的平台。所有其他UUID将相对于Android、Windows或Ubuntu等设备。

诸葛雨泽
2023-03-14

我认为苹果不会违反蓝牙规范,所以我认为可以安全地假设UUID中的公司标识符是可靠的信息来源。您可以检查蓝牙SIG提供的已分配公司标识符的UUID。Apple标识符是0x004C。不过,我看不出有什么方法可以获取有关操作系统的信息。也许如果您进一步描述您的用例,可能会有更方便的方法来实现您的意图。

屠瑞
2023-03-14

我找到了一种黑客方法来实现这一点,但设备必须激活蓝牙发现,使用android可以调用startDiscovery()方法,该方法允许您扫描附近的可发现设备。这允许您创建一个蓝牙名称列表,您可以使用正则表达式进行过滤,以搜索任何包含术语mac、macos、osx、macbook等的内容。考虑到大多数人并没有真正更改他们的蓝牙设备名称,这可能是一个很好的解决方案。

这是另一个问题的非常详细的答案,可能会帮助您找到所需的内容查找附近的所有蓝牙设备(耳机、电话等),而无需强制设备处于可发现模式

 类似资料:
  • 连接和断开蓝牙设备在Windows Phone/Desktop 8.1上产生了各种结果。我一直在使用命名空间和我尝试连接具有不同蓝牙版本/类的几个设备。 版本1.2(1级和2级) 每当我尝试连接到2.0或2.1设备时,都会出现问题。第一次尝试连接到每个设备时,一切都会顺利,连接也会打开。当我随后关闭连接并重新连接设备时,问题就开始了。在重新连接期间,连接将永远不会打开,调试器将抛出一个系统。例外:

  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

  • 我想连接第三方蓝牙设备到我的Android Wear手表(三星Gear Live)。我试图找到留档如何做到这一点,但我没有任何运气。所有的搜索,我似乎都认为我想连接到手机上。 有谁知道一个很好的例子来演示如何将蓝牙心率监视器(或其他设备)连接到Android Wear,以便我在手机不存在时保存历史记录?这可能吗?它是否与从手机/平板电脑上执行相同的协议?

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

  • 我正在开发一款连接蓝牙物联网设备的Flitter应用程序。我正在使用Flatter_blue图书馆。该库允许扫描附近的蓝牙设备。基于该扫描,您可以“连接”到设备。没有与设备配对的概念。 根据我以前在手机上使用蓝牙的经验(连接到我的汽车和蓝牙扬声器时),我必须在Android操作系统上配对设备。 我很好奇,从高层次上讲,配对设备和连接设备之间有什么区别。此外,更具体地说,在操作系统内配对设备与扫描并