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。

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

相关推荐
sky北城1 小时前
You are not able to choose some of the languages, because locales for them a
android
儿歌八万首1 小时前
Jetpack Compose 实战:打造高性能轮播图 (Carousel) 组件
android·前端·kotlin
QING6181 小时前
Kotlin Flow 防抖(Debounce)详解
android·kotlin·android jetpack
QING6181 小时前
Kotlin Flow 防抖(Debounce)、节流(Throttle)、去重(distinctUntilChanged) —— 新手指南
android·kotlin·android jetpack
AI视觉网奇2 小时前
android yolo12 android 实战笔记
android·笔记·yolo
海上飞猪2 小时前
【Mysql】Mysql的安装部署和使用
android·mysql·adb
我是好小孩2 小时前
【Android】项目的组件化搭建
android
aqi003 小时前
FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC
android·ffmpeg·kotlin·音视频·直播·流媒体
马 孔 多 在下雨3 小时前
Android 组件化开发基础实践
android
技术摆渡人3 小时前
Android 系统技术探索(2)构建大脑(System Services & PMS)
android