diff --git a/library/build.gradle b/library/build.gradle index 12d7d23..f6fb58b 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -8,7 +8,7 @@ signing { sign configurations.archives } -def lib_version = '1.3.6' +def lib_version = '1.3.7' def user_name = 'wandersnail' def lib_group = 'cn.wandersnail' def lib_artifact = 'easyble-x' diff --git a/library/src/main/java/cn/wandersnail/ble/ConnectionConfiguration.java b/library/src/main/java/cn/wandersnail/ble/ConnectionConfiguration.java index 3f1cca3..7f29584 100644 --- a/library/src/main/java/cn/wandersnail/ble/ConnectionConfiguration.java +++ b/library/src/main/java/cn/wandersnail/ble/ConnectionConfiguration.java @@ -38,7 +38,7 @@ public class ConnectionConfiguration { */ boolean useAutoConnectAfterConnectionFailure = true; @RequiresApi(Build.VERSION_CODES.M) - int transport = BluetoothDevice.TRANSPORT_LE; + int transport = BluetoothDevice.TRANSPORT_AUTO; @RequiresApi(Build.VERSION_CODES.O) int phy = BluetoothDevice.PHY_LE_1M_MASK; @NonNull diff --git a/library/src/main/java/cn/wandersnail/ble/ConnectionImpl.java b/library/src/main/java/cn/wandersnail/ble/ConnectionImpl.java index b712abb..3c34def 100644 --- a/library/src/main/java/cn/wandersnail/ble/ConnectionImpl.java +++ b/library/src/main/java/cn/wandersnail/ble/ConnectionImpl.java @@ -355,6 +355,7 @@ private void doOnConnectionStateChange(int status, int newState) { logE(Logger.TYPE_CONNECTION_STATE, "GATT error! [status: %d, name: %s, addr: %s]", status, device.name, device.address); connectFailed = true; + notifyConnectionError(status); if (status == 133) { doClearTaskAndRefresh(); } else { @@ -382,6 +383,7 @@ private void doOnServicesDiscovered(int status) { } } else { connectFailed = true; + notifyConnectionError(status); doClearTaskAndRefresh(); logE(Logger.TYPE_CONNECTION_STATE, "GATT error! [status: %d, name: %s, addr: %s]", status, device.name, device.address); @@ -982,6 +984,14 @@ private void logD(int type, String format, Object... args) { log(Log.DEBUG, type, format, args); } + private void notifyConnectionError(int status) { + MethodInfo info = MethodInfoGenerator.onConnectionError(status); + observable.notifyObservers(info); + if (observer != null) { + posterDispatcher.post(observer, info); + } + } + private void notifyRequestFailed(GenericRequest request, int failType) { MethodInfo info = MethodInfoGenerator.onRequestFailed(request, failType, request.value); handleCallbacks(request.callback, info); diff --git a/library/src/main/java/cn/wandersnail/ble/EventObserver.java b/library/src/main/java/cn/wandersnail/ble/EventObserver.java index 914f8cd..63550c8 100644 --- a/library/src/main/java/cn/wandersnail/ble/EventObserver.java +++ b/library/src/main/java/cn/wandersnail/ble/EventObserver.java @@ -143,4 +143,11 @@ default void onConnectFailed(@NonNull Device device, int failType) { */ default void onConnectTimeout(@NonNull Device device, int type) { } + + /** + * 连接错误 + * + * @param status 状态码 + */ + default void onConnectionError(int status) {} } diff --git a/library/src/main/java/cn/wandersnail/ble/MethodInfoGenerator.java b/library/src/main/java/cn/wandersnail/ble/MethodInfoGenerator.java index 7717697..80e4b0a 100644 --- a/library/src/main/java/cn/wandersnail/ble/MethodInfoGenerator.java +++ b/library/src/main/java/cn/wandersnail/ble/MethodInfoGenerator.java @@ -23,6 +23,10 @@ static MethodInfo onConnectFailed(Device device, int failType) { new MethodInfo.Parameter(int.class, failType)); } + static MethodInfo onConnectionError(int status) { + return new MethodInfo("onConnectionError", new MethodInfo.Parameter(int.class, status)); + } + static MethodInfo onConnectTimeout(Device device, int type) { return new MethodInfo("onConnectTimeout", new MethodInfo.Parameter(Device.class, device), new MethodInfo.Parameter(int.class, type));