Android中的蓝牙:BLE、经典蓝牙

BLE(Bluetooth Low Energy) 还是 经典蓝牙(Classic Bluetooth) 主要通过以下几个方面:

1. API 区分

在 Android 开发中,经典蓝牙和 BLE 使用的 API 不同。Android 提供了专门的 API 用于 BLE 和经典蓝牙设备的操作。下面是主要的区分方式。

BLE(Bluetooth Low Energy):
  • 使用 BluetoothLeScannerBluetoothGatt 来扫描、连接和与 BLE 设备通信。
  • BLE 设备通常在 GATT(Generic Attribute Profile) 协议上进行通信。

常见的 BLE 相关 API:

  • 扫描 BLE 设备:
java 复制代码
BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
bluetoothLeScanner.startScan(scanCallback);
  • 连接 BLE 设备:
java 复制代码
BluetoothGatt bluetoothGatt = device.connectGatt(context, false, gattCallback);
  • 与BLE设备交互:

BLE 使用 Gatt(Generic Attribute Profile) 来管理设备的服务、特性和读写操作。

经典蓝牙(Classic Bluetooth):
  • 使用 BluetoothSocket 来进行连接和数据传输,基于 RFCOMM 协议。
  • 经典蓝牙设备使用 SPP(Serial Port Profile) 或其他协议进行通信。

常见的经典蓝牙相关 API:

  • 连接经典蓝牙设备:
java 复制代码
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();
  • 与经典蓝牙设备交互:
  • 经典蓝牙设备通过 BluetoothSocket 对象进行数据读写。

2. 设备扫描

BLE 和经典蓝牙设备的扫描方法也有所不同。

  • 扫描 BLE 设备 :使用 BluetoothLeScanner 类。
java 复制代码
BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
bluetoothLeScanner.startScan(scanCallback);
  • 扫描经典蓝牙设备 :使用 BluetoothAdapterstartDiscovery() 方法。
java 复制代码
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
bluetoothAdapter.startDiscovery();

3. 数据传输协议

  • BLE :BLE 使用的是 GATT (Generic Attribute Profile)协议,主要用于设备间的小数据包传输,适合低功耗设备,通信方式为服务(Services)和特性(Characteristics)。BLE 主要关注 广播 (Advertising)和 连接(Connection)的交互。

    BLE 设备通常传输的数据量较小,适用于低功耗设备,如健康设备、传感器等。

  • 经典蓝牙 :经典蓝牙使用 RFCOMM 协议,支持点对点连接,适用于更高带宽需求的设备,如音频设备、文件传输等。经典蓝牙设备传输的数据量较大,适合更复杂的设备(如耳机、打印机、音响等)。

4. 连接方式

  • BLE:BLE 设备通常不需要长时间保持连接。连接建立后,设备通常在很短的时间内完成数据交换,之后就会断开,节省电池。

    • BLE 设备可以通过 广播 来主动发送信息,而无需主动连接。

    • 典型 BLE 设备与应用之间的通信通常是 短暂连接低功耗

  • 经典蓝牙:经典蓝牙设备通常需要长时间保持连接,并且在数据交换期间连接是持续的。

5. BluetoothProfile 区分

在 Android 中,经典蓝牙和 BLE 设备通常会通过 BluetoothProfile 类来区分。

  • BLE :使用 BluetoothGatt 来获取设备的服务和特性。
  • 经典蓝牙 :通过 BluetoothSocket 进行数据交换,通常使用 SPP(Serial Port Profile)

6. 支持的设备

  • BLE:目前几乎所有现代手机和设备都支持 BLE,特别是低功耗传感器、健康设备等常使用 BLE。

  • 经典蓝牙:经典蓝牙设备通常支持更高的数据传输速度和更复杂的协议,常见的设备包括耳机、音响、打印机、键盘等。

相关推荐
ModestCoder_25 分钟前
将一个新的机器人模型导入最新版isaacLab进行训练(以unitree H1_2为例)
android·java·机器人
robin_suli1 小时前
Spring事务的传播机制
android·java·spring
鸿蒙布道师2 小时前
鸿蒙NEXT开发对象工具类(TS)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
Harrison_zhu3 小时前
Ubuntu18.04 编译 Android7.1代码报错
android
CYRUS STUDIO5 小时前
Unidbg Trace 反 OLLVM 控制流平坦化(fla)
android·汇编·算法·网络安全·逆向·ollvm
扫地的小何尚5 小时前
NVIDIA工业设施数字孪生中的机器人模拟
android·java·c++·链表·语言模型·机器人·gpu
顾林海7 小时前
深度解析ArrayList工作原理
android·java·面试
安静的海岸_AI7 小时前
Android端WIFI/流量共存技术方案
android
_一条咸鱼_7 小时前
Android Compose 框架进度指示器深入剖析(五十二)
android
张风捷特烈7 小时前
Flutter 伪 3D 绘制#02 | 地平面与透视
android·flutter