FeasyBlue SDK For Android
SDK资源包下载
SDK接入文档
对应SDK版本 |
编写日期 |
编写人员 |
---|---|---|
V3.3.1 |
2024年4月13日 |
常纪刚 |
接入方式
解压SDK,把解压的全部文件拖到工程里。
权限申请
使用SDK必须动态获取定位权限,打开手机定位开关与手机蓝牙开关才能正常使用(Android 6.0 以上如果没有动态获取定位权限并打开手机定位开关将扫描不到BLE设备,Android 的限制)
AndroidManifest.xml 中需加入以下权限
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
// Android 12 需要以下权限
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
// 需要导入Kotlin 协程环境
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
初始化
BLE初始化
// getInstance(context)与initialize()只需要执行一次,后续其他Activity 需要使用到FscBleCentralApi的地方 直接使用 FscSppCentralApiImp.getInstance()即可
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance(context);
sFscBleCentralApi.initialize();
SPP初始化
// getInstance(context)与initialize()只需要执行一次,后续其他Activity 需要使用到FscSppCentralApi的地方 直接使用 FscSppCentralApiImp.getInstance()即可
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance(context);
sFscSppCentralApi.initialize();
接口统计
BLE接口
/**
* 设置回调
* @param callback 回调
*/
void setCallbacks(FscBleCentralCallbacks callback);
/**
* 获取最后连接设备的mtu值
* @return mtu
*/
int getMtu();
/**
* 获取指定设备的mtu值
* param address 设备地址
* @return mtu
*/
int getMtu(String address);
/**
* 获取最后连接设备的当前每包最大发送数
* @return
*/
int getMaximumPacketByte();
/**
* 获取指定设备的当前每包最大发送数
* param address 设备地址
* @return
*/
int getMaximumPacketByte(String address);
/**
* 设置最后连接的特征数据
* @param ch 特征值
* @param properties 属性
* @return
*/
boolean setCharacteristic(BluetoothGattCharacteristic ch, int properties);
/**
* 设置指定设备的特征数据
* @param address 设备地址
* @param ch 特征值
* @param properties 属性
* @return
*/
boolean setCharacteristic(String address, BluetoothGattCharacteristic ch, int properties);
/**
* 读取指定特征值的信息
* @param address 设备地址
* @param ch 特征值
* @return
*/
boolean read(String address, BluetoothGattCharacteristic ch);
/**
* 获取指定设备的服务
* @param address 设备地址
*/
List<BluetoothGattService> getBluetoothGattServices(String address);
/**
* 设置最后连接的设备的mtu
* @param mtu mtu值
*/
@RequiresApi(value = Build.VERSION_CODES.LOLLIPOP)
void requestMtu(int mtu);
/**
* 设置指定设备的mtu
* @param address 设备地址
* @param mtu mtu值
*/
@RequiresApi(value = Build.VERSION_CODES.LOLLIPOP)
void requestMtu(String address, int mtu);
/**
* 绑定设备
*/
void createBond();
/**
* 检查dfu文件
* @param dfuFile dfu文件
* @return {@link DfuFileInfo}
*/
DfuFileInfo checkDfuFile(byte[] dfuFile);
SPP接口
/**
* 设置回调
* @param callback 回调
*/
void setCallbacks(FscSppCentralCallbacks callback);
/**
* 打开SDP服务,等待设备连接
*/
void openSdpService();
/**
* 关闭SDP服务,等待设备连接
*/
void closeSdpService();
/**
* 检查升级文件
* @param dfuFile dfu文件
# @return 解析后的信息
*/
DfuFileInfo checkDfuFile(byte[] dfuFile);
公用接口
/**
* 是否显示日志
* @param isEnableLog
*/
void isShowLog(boolean isEnableLog);
/**
* 初始化
* @return {@link boolean} 初始化结果
*/
boolean initialize();
/**
* 是否已开启蓝牙
* @return {@link boolean} 蓝牙开关状态
*/
boolean isEnabled();
/**
* 删除指定设备配对记录
* @return {@link boolean} 删除是否成功
*/
boolean clearDevice(String address);
/**
* 连接
* @param address 设备地址
*/
void connect(String address);
/**
* 参数修改连接(AT指令模式)
* @param address 设备地址
*/
void connectToModify(String address);
/**
* 空中升级连接
* @param address 设备地址
* @param dfuFile 升级文件
* @param reset 是否恢复出厂设置
*/
void connectToOTAWithFactory(String address, byte[] dfuFile, boolean reset);
/**
* 断开最后连接的设备
*/
void disconnect();
/**
* 断开指定设备连接
* @param address
*/
void disconnect(String address);
/**
* 获取已绑定的设备
* @return {@link FscDevice}
*/
List<FscDevice> getBondDevices();
/**
* 开始扫描
*/
void startScan();
/**
* 停止扫描
*/
void stopScan();
/**
* 是否有设备已连接
* @return
*/
boolean isConnected();
/**
* 通过设备地址查询连接状态
* @param address 设备地址
* @return
*/
boolean isConnected(String address);
/**
* 给最后连接的设备发送数据
* @param data 发送的数据
* @param sendInterval 发送间隔
* @return
*/
boolean send(String data, Long sendInterval);
/**
* 向指定设备发送信息
* @param address 设备地址
* @param data 发送的数据
* @param sendInterval 发送间隔
* @return
*/
boolean send(String address, String data, Long sendInterval);
/**
* 给最后连接的设备发送数据
* @param packet 发送的数据
* @param sendInterval 发送间隔
* @return
*/
boolean send(byte[] packet, Long sendInterval);
/**
* 向指定设备发送信息
* @param address 设备地址
* @param data 发送的数据
* @param sendInterval 发送间隔
* @return
*/
boolean send(String address, byte[] packet, Long sendInterval);
/**
* 生成指定大小的测试文件发送给最后连接的设备
* @param size 测试文件大小
* @param sendInterval 发送间隔
* @return
*/
boolean sendFile(int size, Long sendInterval);
/**
* 生成指定大小的测试文件发送给指定设备
* @param size 测试文件大小
* @param sendInterval 发送间隔
* @return
*/
boolean sendFile(String address, int size, Long sendInterval);
/**
* 发送文件给最后连接的设备
* @param byteArray 测试文件大小
* @param sendInterval 发送间隔
* @return
*/
boolean sendFile(byte[] byteArray, Long sendInterval);
/**
* 发送文件给指定设备
* @param byteArray 测试文件大小
* @param sendInterval 发送间隔
* @return
*/
boolean sendFile(String address, byte[] byteArray, Long sendInterval);
/**
* 给最后连接的设备发送命令
* @param command 命令集合
*/
void sendATCommand(Set<String> command);
/**
* 给指定设备发送命令
* @param address 设备地址
* @param command 命令集合
*/
void sendATCommand(String address, Set<String> command);
/**
* 停止最后连接的设备发送数据
*/
void stopSend();
/**
* 停止指定设备发送数据
* @param address 设备地址
*/
void stopSend(String address);
API使用
搜索
BLE搜索方法
FscBleCentralApi.start();
BLE搜索例子
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance();
sFscBleCentralApi.setCallbacks(new FscBleCentralCallbacksImp(){
@Override
public void blePeripheralFound(FscDevice device, int rssi, byte[] record) {
// 扫描到设备
}
});
sFscBleCentralApi.startScan();
BLE停止搜索方法
FscBleCentralApi.stopScan();
SPP搜索方法
FscSppCentralApi.start();
SPP搜索例子
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance();
sFscSppCentralApi.setCallbacks(new FscSppCentralCallbacksImp(){
@Override
public void sppPeripheralFound(FscDevice sppDevice, int rssi) {
// 发现设备
}
});
sFscSppCentralApi.startScan();
SPP停止搜索方法
FscSppCentralApi.stopScan();
连接
BLE连接方法
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance();
sFscBleCentralApi.setCallbacks(new FscBleCentralCallbacksImp(){
@Override
public void blePeripheralConnected(BluetoothGatt gatt, String address) {
// 连接成功
}
});
sFscBleCentralApi.connect();
SPP连接方法
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance();
sFscSppCentralApi.setCallbacks(new FscSppCentralCallbacksImp(){
@Override
public void sppPeripheralConnected(BluetoothDevice device) {
// 连接成功
}
});
sFscSppCentralApi.connect();
断开连接
BLE断开连接方法
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance();
sFscBleCentralApi.setCallbacks(new FscBleCentralCallbacksImp(){
@Override
public void blePeripheralDisconnected(BluetoothGatt gatt, String address) {
// 断开连接
}
});
sFscBleCentralApi.disconnect();
SPP断开连接方法
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance();
sFscSppCentralApi.setCallbacks(new FscSppCentralCallbacksImp(){
@Override
public void sppPeripheralDisconnected(String address) {
// 断开连接
}
});
sFscSppCentralApiImp.disconnect();
回调
BLE回调方法
/**
* 扫描到设备
* @param device 扫描出的设备
* @param rssi 信号值
* @param scanRecord 扫描到的广播信息
*/
void blePeripheralFound(FscDevice device, int rssi, byte[] scanRecord);
/**
* 发送设备
* @param gatt BluetoothGatt 对象
* @param address 设备地址
*/
void blePeripheralConnected(BluetoothGatt gatt, String address);
/**
* 断开连接
* @param gatt BluetoothGatt 对象
* @param address 设备地址
*/
void blePeripheralDisconnected(BluetoothGatt gatt, String address);
/**
* 发现服务
* @param gatt BluetoothGatt 对象
* @param address 设备地址
* @param services 服务
*/
void servicesFound(BluetoothGatt gatt, String address, List<BluetoothGattService> services);
/**
* 发现服务
* @param gatt BluetoothGatt 对象
* @param address 设备地址
* @param service 服务
* @param characteristic 特征值
*/
void characteristicForService(BluetoothGatt gatt, String address, BluetoothGattService service, BluetoothGattCharacteristic characteristic);
/**
* 读特征值信息
* @param address 设备地址
* @param ch 特征值
* @param strValue 读到的数据
* @param hexString 读到的十六进制数据
* @param rawValue 原数据
*/
void readResponse(String address, BluetoothGattCharacteristic ch, String strValue, String hexString, byte[] rawValue);
/**
* mtu 变更
* @param mtu 请求后的mtu值
* @param status 请求mtu 的状态
*/
void bleMtuChanged(int mtu, int status);
SPP回调方法
/**
* 扫描到设备
* @param sppDevice 设备地址
*/
void sppPeripheralFound(FscDevice sppDevice, int rssi);
/**
* 连接成功
* @param device 连接成功的设备
*/
void sppPeripheralConnected(BluetoothDevice device);
/**
* 断开连接
* @param address 设备地址
*/
void sppPeripheralDisconnected(String address);
/**
* 发送数据
* @param address 设备地址
* @param strValue 发送的数据
* @param hexString 发送的十六进制数据
* @param data 原数据
*/
void packetSend(String address, String strValue, String hexString, byte[] data);
相同回调方法
/**
* 开始扫描回调
*/
void startScan();
/**
* 停止扫描
*/
void stopScan();
/**
* 收到数据
* @param address 设备地址
* @param strValue 字符串
* @param dataHexString 十六进制
* @param data 源数据
*/
void packetReceived(String address, String strValue, String dataHexString, byte[] data);
/**
* 发送数据
* @param address 设备地址
* @param strValue 字符串
* @param data 源数据
*/
void packetSend(String address, String strValue, byte[] data);
/**
* 发送文件进度
* @param address 设备地址
* @param percentage 进度
* @param data 源数据
*/
void sendPacketProgress(String address, int percentage, byte[] data);
/**
* OTA 升级进度
* @param address 设备地址
* @param percentage 进度
* @param status 状态
*/
void otaProgressUpdate(String address, int percentage, int status);
/**
* AT 指令模式通讯回调
* @param command 发送的命令
* @param parameter 收到的回复
* @param type 类型
* @param status 状态
*/
void atCommandCallBack(String command, String parameter, int type, int status);
/**
* AT 指令发送结束时触发
*/
void endATCommand();
/**
* 开始发送AT指令时触发
*/
void startATCommand();
发送数据
BLE发送数据方法
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance();
sFscBleCentralApiImp.send("abc");
SPP发送数据方法
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance();
sFscSppCentralApiImp.send("abc");
空中升级
BLE空中升级方法
FscBleCentralApi sFscBleCentralApi = FscBleCentralApiImp.getInstance();
sFscBleCentralApi.setCallbacks(new FscBleCentralCallbacksImp(){
public void otaProgressUpdate(address: String, percentage: Int, status: Int) {
// 升级进度
}
});
sFscBleCentralApi.connectToOTAWithFactory(
fscDevice.getAddress(),
dfuByte,
reset
);
SPP空中升级方法
FscSppCentralApi sFscSppCentralApi = FscSppCentralApiImp.getInstance();
sFscSppCentralApi.setCallbacks(new FscSppCentralCallbacksImp(){
public void otaProgressUpdate(address: String, percentage: Int, status: Int) {
// 升级进度
}
});
sFscSppCentralApi.connectToOTAWithFactory(
fscDevice.getAddress(),
dfuByte,
reset
);
附件
下载PDF版本
下载PDF版本