-
Notifications
You must be signed in to change notification settings - Fork 1.2k
FastBle操作说明
Lijian edited this page Jan 1, 2019
·
3 revisions
`void notify(BleDevice bleDevice,
String uuid_service,
String uuid_notify,
BleNotifyCallback callback)`
`void notify(BleDevice bleDevice,
String uuid_service,
String uuid_notify,
boolean useCharacteristicDescriptor,
BleNotifyCallback callback)`
BleManager.getInstance().notify(
bleDevice,
uuid_service,
uuid_characteristic_notify,
new BleNotifyCallback() {
@Override
public void onNotifySuccess() {
// 打开通知操作成功
}
@Override
public void onNotifyFailure(BleException exception) {
// 打开通知操作失败
}
@Override
public void onCharacteristicChanged(byte[] data) {
// 打开通知后,设备发过来的数据将在这里出现
}
});
`boolean stopNotify(BleDevice bleDevice,
String uuid_service,
String uuid_notify)`
`boolean stopNotify(BleDevice bleDevice,
String uuid_service,
String uuid_notify,
boolean useCharacteristicDescriptor)`
BleManager.getInstance().stopNotify(uuid_service, uuid_characteristic_notify);
`void indicate(BleDevice bleDevice,
String uuid_service,
String uuid_indicate,
BleIndicateCallback callback)`
`void indicate(BleDevice bleDevice,
String uuid_service,
String uuid_indicate,
boolean useCharacteristicDescriptor,
BleIndicateCallback callback)`
BleManager.getInstance().indicate(
bleDevice,
uuid_service,
uuid_characteristic_indicate,
new BleIndicateCallback() {
@Override
public void onIndicateSuccess() {
// 打开通知操作成功
}
@Override
public void onIndicateFailure(BleException exception) {
// 打开通知操作失败
}
@Override
public void onCharacteristicChanged(byte[] data) {
// 打开通知后,设备发过来的数据将在这里出现
}
});
`boolean stopIndicate(BleDevice bleDevice,
String uuid_service,
String uuid_indicate)`
`boolean stopIndicate(BleDevice bleDevice,
String uuid_service,
String uuid_indicate,
boolean useCharacteristicDescriptor)`
BleManager.getInstance().stopIndicate(uuid_service, uuid_characteristic_indicate);
`void write(BleDevice bleDevice,
String uuid_service,
String uuid_write,
byte[] data,
BleWriteCallback callback)`
`void write(BleDevice bleDevice,
String uuid_service,
String uuid_write,
byte[] data,
boolean split,
BleWriteCallback callback)`
`void write(BleDevice bleDevice,
String uuid_service,
String uuid_write,
byte[] data,
boolean split,
boolean sendNextWhenLastSuccess,
long intervalBetweenTwoPackage,
BleWriteCallback callback)`
BleManager.getInstance().write(
bleDevice,
uuid_service,
uuid_characteristic_write,
data,
new BleWriteCallback() {
@Override
public void onWriteSuccess(int current, int total, byte[] justWrite) {
// 发送数据到设备成功
}
@Override
public void onWriteFailure(BleException exception) {
// 发送数据到设备失败
}
});
Tips:
- 在没有扩大MTU及扩大MTU无效的情况下,当遇到超过20字节的长数据需要发送的时候,需要进行分包。参数`boolean split`表示是否使用分包发送;无`boolean split`参数的`write`方法默认对超过20字节的数据进行分包发送。
- 关于`onWriteSuccess`回调方法: `current`表示当前发送第几包数据,`total`表示本次总共多少包数据,`justWrite`表示刚刚发送成功的数据包。
- 对于分包发送的辅助策略,可以选择发送上一包数据成功之后发送下一包,或直接发送下一包,参数`sendNextWhenLastSuccess`表示是否待收到`onWriteSuccess`之后再进行下一包的发送。默认true。
- 参数`intervalBetweenTwoPackage`表示延时多长时间发送下一包,单位ms,默认0。
`void read(BleDevice bleDevice,
String uuid_service,
String uuid_read,
BleReadCallback callback)`
BleManager.getInstance().read(
bleDevice,
uuid_service,
uuid_characteristic_read,
new BleReadCallback() {
@Override
public void onReadSuccess(byte[] data) {
// 读特征值数据成功
}
@Override
public void onReadFailure(BleException exception) {
// 读特征值数据失败
}
});
-
void readRssi(BleDevice bleDevice, BleRssiCallback callback)
BleManager.getInstance().readRssi( bleDevice, new BleRssiCallback() { @Override public void onRssiFailure(BleException exception) { // 读取设备的信号强度失败 } @Override public void onRssiSuccess(int rssi) { // 读取设备的信号强度成功 } });
Tips:
- 获取设备的信号强度,需要在设备连接之后进行。
- 某些设备可能无法读取Rssi,不会回调onRssiSuccess(),而会因为超时而回调onRssiFailure()。
-
void setMtu(BleDevice bleDevice, int mtu, BleMtuChangedCallback callback)
BleManager.getInstance().setMtu(bleDevice, mtu, new BleMtuChangedCallback() { @Override public void onSetMTUFailure(BleException exception) { // 设置MTU失败 } @Override public void onMtuChanged(int mtu) { // 设置MTU成功,并获得当前设备传输支持的MTU值 } });
Tips:
- 设置MTU,需要在设备连接之后进行操作。
- 默认每一个BLE设备都必须支持的MTU为23。
- MTU为23,表示最多可以发送20个字节的数据。
- 在Android 低版本(API-17 到 API-20)上,没有这个限制。所以只有在API21以上的设备,才会有拓展MTU这个需求。
- 该方法的参数mtu,最小设置为23,最大设置为512。
- 并不是每台设备都支持拓展MTU,需要通讯双方都支持才行,也就是说,需要设备硬件也支持拓展MTU该方法才会起效果。调用该方法后,可以通过onMtuChanged(int mtu)查看最终设置完后,设备的最大传输单元被拓展到多少。如果设备不支持,可能无论设置多少,最终的mtu还是23。
-
boolean requestConnectionPriority(BleDevice bleDevice,int connectionPriority)
Tips:
- 设置连接的优先级,一般用于高速传输大量数据的时候可以进行设置。 Must be one of{@link BluetoothGatt#CONNECTION_PRIORITY_BALANCED}, {@link BluetoothGatt#CONNECTION_PRIORITY_HIGH} or {@link BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER}.
-
void disconnect(BleDevice bleDevice)
BleManager.getInstance().disconnect(bleDevice);
-
void disconnectAllDevice()
BleManager.getInstance().disconnectAllDevice();
-
void destroy()
BleManager.getInstance().destroy();
如果你有技术方面问题与想法想与我沟通,可以通过下面的方式联系我。
QQ: 1033526540
Email: [email protected]
如果此框架对你帮助很大,并且你很想支持库的后续开发和维护,那么你可以扫描下方捐赠二维码支持我一下,我将不胜感激。