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

Android-我可以使用什么API来查看设备是否支持BLE中央模式?

谷梁楷
2023-03-14

https://developer.android.com/guide/topics/connectivity/bluetooth-le#roles

中央与外围。这适用于BLE连接本身。处于中心角色的设备扫描、查找广告,处于外围角色的设备制作广告。

为了检查设备是否支持“外围”/广告模式,我似乎可以使用getBluetoothLeAdvertiser()

获取蓝牙Le广告商

添加在API级别21公开

BluetoothLeAdvertiser getBluetoothLeAdvertiser()返回蓝牙LE广告操作的BluetoothLeAdvertiser对象。如果蓝牙已关闭或此设备不支持蓝牙LE广告,则将返回null。

在调用此方法之前,请使用IsMultiConcevertizementSupported()检查此设备上是否支持LE广告。

现在,我听到一些传言说,一些设备实际上可以为您提供BluetoothLeAdvertiser,但在ismultipleConvertizementSupported()上返回false,这本身就是另一个问题,但在核心方面,文档什么也没说!

我错过了什么吗?https://developer.android.com/reference/android/bluetooth/BluetoothAdapter没有说任何关于中央模式的事情。我在这里错过了一些基本的东西吗?感谢任何帮助。我听说蓝牙在Android上是一个痛苦,这是我第一天探索这些API。

共有1个答案

严扬
2023-03-14

简短的回答

正如DigitalNinja所指出的那样,Android手机在默认情况下始终支持中心角色功能,因此如果你的手机支持BLE,那么它肯定可以在中心角色中运行

长答案

你说得对,API可能不是直截了当的,但这要归功于蓝牙低功耗(BLE)API是如何添加到Android的,甚至还要归功于BLE技术本身的历史。

当BLE首次引入时,其目的是仅用于传感器(例如温度计、心率、接近度等)和与这些传感器对话的设备。在这种情况下,传感器是外围设备,与这些传感器通信的设备是中心设备。外围设备是真正的低能耗(LE)设备,因为它们只是偶尔发布和发送数据。另一方面,Central的能效不是很高,因为它们必须不断扫描设备,连接到这些设备,并负责维护和监控该连接,这意味着与外围设备相比,收音机的开启时间要长得多。

当蓝牙低功耗(BLE)API添加到Android时,它仅支持Central角色。换句话说,您可以编写一个Android应用程序来扫描并连接到外围设备(传感器),但Android设备本身不能充当外围设备(因为假设您不需要Android设备充当传感器)。这是在Android 4.3(API 18)中完成的。

随着人们开始更频繁地使用BLE,技术也越来越成熟,它开始被用于各种不同的应用(例如,虚拟串口、数据传输、信标等)。此外,独立的中央设备开始出现在市场上,需要将其与手机一起使用,或者至少在开发阶段与手机/平板电脑进行测试。因此,中央和外围设备之间的区别开始变得越来越模糊,人们要求Android开始支持外围设备的角色。这是当BLE API被更新以引入外围角色功能时,这发生在Android 5.0(API 21)中。

因此,为了回答您的问题,如果Android设备支持BLE,那么可以安全地声明它将默认支持中心角色,因为这是Android BLE功能的基础。但是,后来引入了API来支持外围角色,这就是为什么并非所有支持BLE的Android设备都支持外围角色。

最后,请注意ismultipledgevertisementsupported是一个不同的功能,它指示您的设备是否支持同时发送多个广告。一些设备支持同时发送不同的广告,而其他设备则不支持。然而,这并不意味着他们根本不支持广告。支持的设备肯定会支持BluetoothLeAdvertiser,但不能保证反过来。

总之,检查您的设备是否支持中央和/或外围角色的最安全方法是通过Android版本和使用的API级别,如上面的两个链接所示。在Android 5(API 21)之后的版本中,您可以编写同时支持中央和外围角色的应用程序,而在此之前,您只能为中央角色编写应用程序。

我希望这有帮助。

 类似资料:
  • 问题内容: 我的应用使用,但是较旧的设备(特别是支持iOS 8的iPad 2和3)不支持模糊处理。 我想检查用户设备是否支持模糊。我该怎么做? 问题答案: 有一种看似有希望的内部方法,但是您的应用程序当然会被Apple拒绝。让我们创建自己的方法: 首先,我们需要知道我们正在使用的确切设备类型: 例如,这将返回iPad 2。这是iDevice型号的更新列表:https : //theiphonewi

  • 这篇来自radius networks的博客文章讨论了Android设备如何还不能用作iBeacons(又名:BLE外设模式),即使设备的硬件支持BLE,因为Android没有用于BLE外设模式的API。 注:BLE表示蓝牙低能量 我非常需要来自Android的BLE外设模式支持,目前我会同意黑客的一些东西,希望Android最终会支持这个功能集,顺便说一下,这已经是一个功能请求

  • **目前已知设备概述:Nexus 6、Nexus 9、Moto E 4G LTE、LG G4、Galaxy S6、三星Galaxy S5(SM-G900M型)、Nexus 5X、索尼Xperia Z5 Compact、三星Galaxy Tab S2** **另请参见https://altbeacon.github.io/android-beacon-library/beacon-transmitt

  • 问题内容: 我正在使用JDBC做一个Android应用程序,而不使用任何Web服务将数据发送到数据库。我使用Android 2.2模拟器进行了实验,并且能够将数据发送到MySQL DB(LOCALHOST)。之后,我尝试使用Android 2.2设备进行发送,然后更改了with 的路径 。 xx.xx.xx.xx来自我的本地主机。但是它在设备中不起作用。可能是什么原因。 主要疑问: Android

  • 我需要自定义web应用程序,无论它是在笔记本电脑还是手机上使用,发现ios或android检测,所以如果我只是这样做,它会工作吗 下面的解决方案解决方案给了我一个错误,但是这个包帮助了我: https://pub.dev/packages/universal_io 或者

  • Android有一个选项,可以使用设备所有者的Kiosk应用程序来管理单一用途的设备。现在有各种设备供应方式来使Kiosk应用程序成为设备所有者。方法之一是使用官方的Android EMM解决方案并注册设备。 另一个简单且快速使用的方法是对根设备和非根设备使用命令。根设备可以使用权限运行此命令,并使所需的Kiosk应用程序成为设备所有者,非根设备也可以使用adb命令成为设备所有者。 如以下问题所问