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。

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

相关推荐
潜龙952718 分钟前
第6.2节 Android Agent开发<二>
android·python·覆盖率数据
网安Ruler1 小时前
代码审计-PHP专题&原生开发&SQL注入&1day分析构造&正则搜索&语句执行监控&功能定位
android
paid槮3 小时前
MySql基础:数据类型
android·mysql·adb
用户2018792831674 小时前
AMS和app通信的小秘密
android
用户2018792831674 小时前
ThreadPoolExecutor之市场雇工的故事
android
诺诺Okami4 小时前
Android Framework-Launcher-InvariantDeviceProfile
android
Antonio9156 小时前
【音视频】Android NDK 与.so库适配
android·音视频
sun00770014 小时前
android ndk编译valgrind
android
AI视觉网奇15 小时前
android studio 断点无效
android·ide·android studio
jiaxi的天空15 小时前
android studio gradle 访问不了
android·ide·android studio