Android Bluetooth Low Energy 蓝牙快速开发框架。
使用简单的方式进行搜索、连接、读写、通知的订阅与取消等一系列蓝牙操作,并实时地得到操作反馈。
<dependency>
<groupId>com.clj.fastblegroupId>
<artifactId>FastBleLibartifactId>
<version>1.2.1version>
<type>pomtype>
dependency>
or Gradle:
compile 'com.clj.fastble:FastBleLib:1.2.1'
FastBle requires at minimum Java 7 or Android 4.0.
If you are using ProGuard you might need to add the following options:
-dontwarn com.clj.fastble.**
-keep public class com.clj.fastble.**{*;}
如果想快速预览所有功能,可以直接下载apk作为测试工具使用:FastBLE.apk
onServicesDiscovered
的异步回调方法中,延时100ms,再切换到主线程,再去调用notify、write等方法。这就是一个基本的操作。onDisConnected
方法。onDisConnected
方法,而是会延迟一段时间才会通知连接断开,开发时需注意,假如对实时性要求较高的程序,可能需要借助其他辅助方法来判断设备是否中断,比如心跳包等。void onDisConnected(BluetoothGatt gatt, int status, BleException exception)
调用boolean gatt.connect()
方法即可,当外设再次处于可连接状态时,就会自动连上。void closeBluetoothGatt()
清空一下状态,并延迟一段时间等待复位,否则会把gatt阻塞,导致手机不重启蓝牙就再也无法连接任何设备的严重情况。bleManager.closeBluetoothGatt()
之后,最好不要紧接着调用bleManager = null
,因为Android原生蓝牙API中的gatt.close()
方法需要一段时间保证完成,我们建议延迟一段时间。延时操作在Android蓝牙开发中是一个重要的技巧。后续的所有操作方法,均通过当前所创建的BleManager对象来完成
public BleManager(Context context)
bleManager = new BleManager(this);
boolean isSupportBle()
void enableBluetooth()
void disableBluetooth()
boolean isBlueEnable()
boolean isInScanning()
boolean isConnectingOrConnected()
boolean isConnected()
boolean isServiceDiscovered()
void handleException(BleException exception)
bleManager.handleException(exception);
普通扫描的Callback
long timeoutMillis: 本次扫描的时间
void onScanning(ScanResult result): 当前正在扫描状态,且搜索到一个外围设备的回调
void onScanComplete(ScanResult[] results): 扫描时间到或手动取消扫描后的回调
ScanResult: 表示返回的扫描结果对象
BluetoothDevice getDevice(): 蓝牙设备对象
byte[] getScanRecord(): 广播数据;
int getRssi(): 信号强度
扫描并连接的Callback
void onFoundDevice(ScanResult scanResult): 找到设备的回调;
void onConnecting(BluetoothGatt gatt, int status): 正在连接的回调;
void onConnectError(BleException exception): 连接未成功的回调,通过解析BleException来判断具体未成功的原因;
void onConnectSuccess(BluetoothGatt gatt, int status): 连接成功的回调;
void onServicesDiscovered(BluetoothGatt gatt, int status): 发现服务的回调;
void onDisConnected(BluetoothGatt gatt, int status, BleException exception): 连接断开的回调,特指连接之后的断开。
Characteristic操作的Callback
void onSuccess(BluetoothGattCharacteristic characteristic): 数据传输回调;
void onFailure(BleException exception): 操作或数据传输过程中出错;
void onInitiatedResult(boolean result): 操作成功与否的回调;
读Rssi操作的Callback
void onSuccess(int rssi): 得到rssi数据的回调;
void onFailure(BleException exception): 操作或数据传输过程中出错;
void onInitiatedResult(boolean result): 操作成功与否的回调;
int getCode(): 获取异常码;
String getDescription(): 获取异常描述;
异常码:
可获得周围蓝牙设备对象数组
boolean scanDevice(ListScanCallback callback)
返回值表示扫描操作是否成功,具体扫描结果会显示在ListScanCallback的回调方法中。
bleManager.scanDevice(new ListScanCallback(TIME_OUT) {
@Override
public void onScanning(ScanResult result) {
}
@Override
public void onScanComplete(ScanResult[] results) {
}
});
当搜索到周围设备之后,可以选择选择某一个设备和其连接
void connectDevice(ScanResult scanResult, boolean autoConnect, BleGattCallback callback)
bleManager.connectDevice(scanResult, true, new BleGattCallback() {
@Override
public void onConnecting(BluetoothGatt gatt, int status) {
}
@Override
public void onConnectError(BleException exception) {
}
@Override
public void onConnectSuccess(BluetoothGatt gatt, int status) {
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
}
@Override
public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {
}
});
扫描周围指定广播名称的设备,搜索到第一个即连接
void scanNameAndConnect(String deviceName, long time_out, boolean autoConnect, BleGattCallback callback)
bleManager.scanNameAndConnect(
DEVICE_NAME,
TIME_OUT,
false,
new BleGattCallback() {
@Override
public void onFoundDevice(ScanResult scanResult) {
}
@Override
public void onConnecting(BluetoothGatt gatt, int status) {
}
@Override
public void onConnectError(BleException exception) {
}
@Override
public void onConnectSuccess(BluetoothGatt gatt, int status) {
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
}
@Override
public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {
}
});
扫描周围指定广播名称的设备,搜索到第一个即连接
void scanfuzzyNameAndConnect(String fuzzyName, long time_out, boolean autoConnect, BleGattCallback callback)
bleManager.scanfuzzyNameAndConnect(
DEVICE_NAME,
TIME_OUT,
false,
new BleGattCallback() {
@Override
public void onFoundDevice(ScanResult scanResult) {
}
@Override
public void onConnecting(BluetoothGatt gatt, int status) {
}
@Override
public void onConnectError(BleException exception) {
}
@Override
public void onConnectSuccess(BluetoothGatt gatt, int status) {
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
}
@Override
public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {
}
});
扫描周围指定MAC地址的设备,搜索到第一个即连接
void scanMacAndConnect(String deviceMac, long time_out, boolean autoConnect, BleGattCallback callback)
bleManager.scanMacAndConnect(
DEVICE_MAC,
TIME_OUT,
false,
new BleGattCallback() {
@Override
public void onFoundDevice(ScanResult scanResult) {
}
@Override
public void onConnecting(BluetoothGatt gatt, int status) {
}
@Override
public void onConnectError(BleException exception) {
}
@Override
public void onConnectSuccess(BluetoothGatt gatt, int status) {
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
}
@Override
public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) {
}
});;
取消扫描操作
void cancelScan()
bleManager.cancelScan();
boolean notify(String uuid_service, String uuid_notify, BleCharacterCallback callback)
返回值表示notify操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.notify(
UUID_SERVICE,
UUID_NOTIFY,
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattCharacteristic characteristic) {
}
@Override
public void onFailure(BleException exception) {
}
@Override
public void onInitiatedResult(boolean result) {
}
});
boolean stopNotify(String uuid_service, String uuid_notify)
返回值表示stopNotify操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.stopNotify(UUID_SERVICE, UUID_NOTIFY);
boolean indicate(String uuid_service, String uuid_indicate, BleCharacterCallback callback)
返回值表示indicate操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.indicate(
UUID_SERVICE,
UUID_INDICATE,
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattCharacteristic characteristic) {
}
@Override
public void onFailure(BleException exception) {
}
@Override
public void onInitiatedResult(boolean result) {
}
});
boolean stopIndicate(String uuid_service, String uuid_notify)
返回值表示stopIndicate操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.stopIndicate(UUID_SERVICE, UUID_INDICATE);
boolean writeDevice(String uuid_service, String uuid_write, byte[] data, BleCharacterCallback callback)
返回值表示write操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.writeDevice(
UUID_SERVICE,
UUID_WRITE,
HexUtil.hexStringToBytes(SAMPLE_WRITE_DATA),
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattCharacteristic characteristic) {
}
@Override
public void onFailure(BleException exception) {
}
@Override
public void onInitiatedResult(boolean result) {
}
});
boolean readDevice(String uuid_service, String uuid_read, BleCharacterCallback callback)
返回值表示read操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.readDevice(
UUID_SERVICE,
UUID_READ,
new BleCharacterCallback() {
@Override
public void onSuccess(BluetoothGattCharacteristic characteristic) {
}
@Override
public void onFailure(BleException exception) {
}
@Override
public void onInitiatedResult(boolean result) {
}
});
boolean readRssi(BleRssiCallback callback)
返回值表示readRssi操作是否成功,BleCharacterCallback()中的onInitiatedResult也表示本次操作是否成功,功能一致,便于不同情况下的用途。
bleManager.readRssi(new BleRssiCallback() {
@Override
public void onSuccess(int rssi) {
}
@Override
public void onFailure(BleException exception) {
}
@Override
public void onInitiatedResult(boolean result) {
}
});
void stopListenCharacterCallback(String uuid)
不再监听这个特征的数据变化,适用于移除notify、indicate、write、read对应的callback。
bleManager.stopListenCharacterCallback(uuid_sample);
void closeBluetoothGatt()
bleManager.closeBluetoothGatt();
Copyright 2016 chenlijian
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
版本:1.2.1 |
Source code(tar.gz) |
Source code(zip) |
发布时间:1月前 |
Watchers:64 |
Star:1230 |
Fork:346 |
创建时间: 2016-08-23 10:06:33 |
最后Commits: 8天前 |
分类:蓝牙(Bluetooth) |
收录时间:2016-08-24 16:12:40 |
|