Android BLE ERROR CODE

蓝牙错误状态码解析
本文列举了由硬件开发者如Nordic记录的蓝牙错误状态码及其含义,包括连接失败、资源不足等多种情况,并解释了常见错误的状态码。

So here is a list of commands that aredocumented by hardware developers, such as Nordic and codes I figured outmyself. List is to be completed.


Status

Status Hex

Description

Explanation

0

0x00

BLE_HCI_STATUS_CODE_SUCCESS

Everything ok.

1

0x01

BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND

2

0x02

BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER

5

0x05

BLE_HCI_AUTHENTICATION_FAILURE

6

0x06

BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING

7

0x07

BLE_HCI_MEMORY_CAPACITY_EXCEEDED

8

0x08

BLE_HCI_CONNECTION_TIMEOUT

Could not establish a connection in specified period. Maybe device is currently connected to something else?

the connection got lost because no synchronization packet was received from the remote device within the specified supervision timeout value. Normally this happens due to that the devices got out of range from each other

12

0x0C

BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED

18

0x12

BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS

19

0x13

BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION

Remote device has forced a disconnect.

20

0x14

BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES

21

0x15

BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF

22

0x16

BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION

26

0x1A

BLE_HCI_UNSUPPORTED_REMOTE_FEATURE

30

0x1E

BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS

31

0x1F

BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR

34

0x22

BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT

36

0x24

BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED

40

0x28

BLE_HCI_INSTANT_PASSED

41

0x29

BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED

42

0x2A

BLE_HCI_DIFFERENT_TRANSACTION_COLLISION

58

0x3A

BLE_HCI_CONTROLLER_BUSY

59

0x3B

BLE_HCI_CONN_INTERVAL_UNACCEPTABLE

60

0x3C

BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT

61

0x3D

BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE

62

0x3E

BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED

128

0x80

GATT_NO_RESSOURCES

129

0x81

GATT_INTERNAL_ERROR

130

0x82

GATT_WRONG_STATE

131

0x83

GATT_DB_FULL

132

0x84

GATT_BUSY

133

0x85

GATT_ERROR

Can be anything, from device not in Range to a random error.

135

0x87

GATT_ILLEGAL_PARAMETER

137

0x89

GATT_AUTH_FAIL


Sources:
Nordic
Android Source

Link:https://allmydroids.blogspot.jp/2015/06/android-ble-error-status-codes-explained.html

Android 平台上通过 BLE(低功耗蓝牙)监听广播数据,主要依赖于 `BluetoothLeScanner` 类。该类提供了扫描 BLE 设备广播数据的能力,并支持多种扫描模式和过滤条件。 ### 初始化蓝牙适配器 首先需要获取系统的 `BluetoothManager` 实例,并从中获取 `BluetoothAdapter`: ```java BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); ``` 如果设备不支持 BLE 或者蓝牙未启用,则无法进行后续操作。 ### 获取 BluetoothLeScanner 通过 `BluetoothAdapter` 获取 `BluetoothLeScanner` 实例: ```java BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); ``` ### 配置扫描参数 使用 `ScanSettings.Builder` 设置扫描模式、回调类型等参数: ```java ScanSettings scanSettings = new ScanSettings.Builder() .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) .build(); ``` 常见的扫描模式包括: - `SCAN_MODE_LOW_POWER`: 低功耗模式,适用于后台扫描。 - `SCAN_MODE_LOW_LATENCY`: 低延迟模式,适用于前台主动扫描。 ### 设置扫描过滤器(可选) 可以通过 `ScanFilter.Builder` 添加过滤器以减少不必要的扫描结果: ```java ScanFilter scanFilter = new ScanFilter.Builder() .setDeviceAddress("00:11:22:33:44:55") .build(); ScanSettings scanSettingsWithFilter = new ScanSettings.Builder() .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) .build(); ScanFilter[] filters = new ScanFilter[]{scanFilter}; ``` ### 实现扫描回调 定义一个继承自 `ScanCallback` 的类来处理扫描到的设备信息: ```java public class MyScanCallback extends ScanCallback { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); BluetoothDevice device = result.getDevice(); int rssi = result.getRssi(); byte[] scanRecord = result.getScanRecord().getBytes(); // 处理广播数据 } @Override public void onBatchScanResults(List<ScanResult> results) { super.onBatchScanResults(results); for (ScanResult result : results) { // 处理批量扫描结果 } } @Override public void onScanFailed(int errorCode) { super.onScanFailed(errorCode); // 错误处理 } } ``` ### 启动和停止扫描 启动扫描时,传入配置好的 `ScanSettings` 和 `ScanCallback`: ```java bluetoothLeScanner.startScan(Arrays.asList(scanFilter), scanSettings, myScanCallback); ``` 停止扫描: ```java bluetoothLeScanner.stopScan(myScanCallback); ``` ### 注意事项 - 在 Android 6.0 及以上版本中,应用需要请求位置权限(`ACCESS_FINE_LOCATION`),因为 BLE 扫描涉及到定位功能[^2]。 - 需要动态申请权限并确保用户授权后才能开始扫描。 - 对于 Android 8.0 及更高版本,还需要注意后台执行限制,长时间运行的扫描任务可能受到影响。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值