常见问题答疑
记录客户比较经常遇到的问题,通过归纳和梳理,进行答疑记录,方便客户快速检索问题解答。
1. 提问格式
问题描述: XXXXXX
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 1. xxxx 2. xxxx 3.xxxx
复现概率: 必现, 1/20, n / m
公版Demo是否复现: 是,否
问题出现时间段: yyyy/MM/dd hh:mm - yyyy/MM/dd hh:mm 例如: 2022/05/28 17:00 - 2022/05/28 17:02
备注: xxxx
Important
开发前,请阅读 杰理之家SDK开发文档(Android)
2. 常见问题
2.1 蓝牙连接问题
2.1.1 如何设置不过滤设备?
问题描述: 如何设置不过滤设备?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下
BluetoothOption option = BluetoothOption.createDefaultOption();
option.setBleScanStrategy(BluetoothConstant.NONE_FILTER); //设置无过滤规则
// option.setSkipNoNameDev(false); //是否跳过无名称的设备
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
参考 2.2.1 扫描蓝牙设备
2.1.2 如何修改过滤设备规则?
问题描述: 如何修改过滤设备规则?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下
BluetoothOption option = BluetoothOption.createDefaultOption()
.setBleScanStrategy(BluetoothConstant.NONE_FILTER) //设置无过滤规则
.setSkipNoNameDev(false); //是否跳过无名称的设备
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
//添加事件监听
RCSPController.getInstance().addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onDiscoveryStatus(boolean bBle, boolean bStart) {
//回调搜索状态
if (!bStart) {
RCSPController.getInstance().removeBTRcspEventCallback(this);
}
}
@Override
public void onDiscovery(BluetoothDevice device, BleScanMessage bleScanMessage) {
if (null == bleScanMessage) return;
final byte[] rawData = bleScanMessage.getRawData(); //广播数据
//TODO: 自行实现过滤规则
}
});
//执行扫描BLE设备
RCSPController.getInstance().startBleScan(30 * 1000);
参考 2.2.1 扫描蓝牙设备
2.1.3 如何只连接BLE,不连接经典蓝牙?
问题描述: 如何只连接BLE,不连接经典蓝牙?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下
BluetoothOption option = BluetoothOption.createDefaultOption();
option.setEnterLowPowerMode(true) //设置无过滤规则
.setMandatoryUseBLE(true); //设置无过滤规则
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
参考 2.2.2 连接设备
2.1.4 为什么手机蓝牙界面显示已连接,SDK返回设备未连接?
问题描述: 为什么手机蓝牙界面显示已连接,SDK返回设备未连接?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答:
因为SDK判断设备是否连接的依据是通讯服务是否连接。通讯服务特指BLE和SPP,不包含经典蓝牙服务。而手机系统蓝牙界面连接的是经典蓝牙服务,所以SDK不会返回对应设备已连接。
如果想判断设备的经典蓝牙状态, 代码如下:
BluetoothDevice device = BluetoothUtil.getRemoteDevice("设备的经典蓝牙地址");
if(null == device) return;
int state = RCSPController.getInstance().getBtOperation().isConnectedByProfile(device);
//state有如下值:
// BluetoothProfile.STATE_DISCONNECTED --- 未连接
// BluetoothProfile.STATE_CONNECTING --- 连接中
// BluetoothProfile.STATE_CONNECTED --- 已连接
// BluetoothProfile.STATE_DISCONNECTING --- 正在断开
2.1.5 如何修改通讯UUID?
问题描述: 如何修改通讯UUID?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下:
修改连接BLE的通讯UUID
BluetoothOption option = BluetoothOption.createDefaultOption();
option.setBleUUID(UUID.fromString("你的服务UUID"),
UUID.fromString("你的写特征UUID"),
UUID.fromString("你的通知特征UUID"));
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
修改连接SPP的通讯UUID
BluetoothOption option = BluetoothOption.createDefaultOption();
option.setSppUUID(UUID.fromString("你的自定义SPP UUID"));
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
2.1.6 如何使用其他UUID通讯?
问题描述: 如何使用其他UUID通讯?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答:
参考示例工程中的test包的示例代码。位置: 源码工程/btsmart/test/java/com/jieli/btsmart/demo/bluetooth/CustomUuidDemo.java
2.1.7 如何配置支持一键连接的设备?
问题描述: 如何配置支持一键连接的设备?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下:
BluetoothOption option = BluetoothOption.createDefaultOption();
option.setSupportCTKD(true); //设置支持一键连接功能
//配置SDK参数
// Context context = null;
// RCSPController.init(context, option);
RCSPController.getInstance().configure(option);
2.2 文件操作问题
2.2.1 如何设置每页请求信息数量?
问题描述: 如何设置每页请求信息数量?
测试环境: 固件: AC693N_soundbox_SDK_Vxxx 或 AC696N_soundbox_SDK_Vxxx 或 JL700N_soundbox_SDK_Vxxx
SDK版本: jl_bluetooth_rcsp_Vxxx
复现步骤: 无
复现概率: 必现
公版Demo是否复现: 是
问题出现时间段: 无
解答: 代码设置如下
int pageSize = 30; //每页请求条目数量, 建议每页数量不超过30
//需要在文件浏览前设置才会生效
FileBrowseManager.getInstance().setPageSize(pageSize);