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。

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

相关推荐
Frank_HarmonyOS8 小时前
Android MVVM(Model-View-ViewModel)架构
android·架构
新子y12 小时前
【操作记录】我的 MNN Android LLM 编译学习笔记记录(一)
android·学习·mnn
lincats14 小时前
一步一步学习使用FireMonkey动画(1) 使用动画组件为窗体添加动态效果
android·ide·delphi·livebindings·delphi 12.3·firemonkey
想想吴15 小时前
Android.bp 基础
android·安卓·android.bp
写点啥呢21 小时前
Android为ijkplayer设置音频发音类型usage
android·音视频·usage·mediaplayer·jikplayer
coder_pig1 天前
🤡 公司Android老项目升级踩坑小记
android·flutter·gradle
死就死在补习班1 天前
Android系统源码分析Input - InputReader读取事件
android
死就死在补习班1 天前
Android系统源码分析Input - InputChannel通信
android
死就死在补习班1 天前
Android系统源码分析Input - 设备添加流程
android
死就死在补习班1 天前
Android系统源码分析Input - 启动流程
android