Version 1.17.2
- Fixed log tags generation on builds with Proguard enabled (dariuszseweryn#814)
Version 1.17.1
- No changes over 1.17.0. Mistake release.
Version 1.17.0
- Changed RxBleConnection.GATT_MTU_MAXIMUM to 515 to fix Android 13, thanks @marsounjan! (dariuszseweryn#808)
Version 1.16.0
- Added
ScanSettingsBuilder#setLegacy
option, thanks @danielstuart14! (dariuszseweryn#801)
Version 1.15.2
- Fixed
RxBleDevice#toString
crashing when runtime permission BLUETOOTH_CONNECT is not granted on API 31 (Android 12) (dariuszseweryn#800) - Added granted permissions cache (dariuszseweryn#802)
- Updated
RxBleClient#getBondedDevices
Javadoc for usage on API 31 (Android 12) (dariuszseweryn#804)
Version 1.15.1
- Fixed duplicate 'META-INF/com.google.dagger_dagger.version' file (regression) (dariuszseweryn#794)
Version 1.15.0
- No functional changes. First release of RxAndroidBle based on RxJava 3. RxJava 2 version is still supported. (dariuszseweryn#793)
Version 1.14.1
- Fixed duplicate 'META-INF/com.google.dagger_dagger.version' file (dariuszseweryn#790)
Version 1.14.0
- Added
RxBleClient#getConnectedPeripherals
for retrieving all BLE peripherals connected to the device, thanks @DaBs! (dariuszseweryn#765) - Updated URL for native GATT statuses in
BleGattException
, thanks @ariccio! (dariuszseweryn#779) - Added
BleScanResult#isConnectable
for getting info if the scanned peripheral is connectable, thanks @MartinSadovy! (dariuszseweryn#781) - Added helper functions
RxBleClient#isConnectRuntimePermissionGranted
andRxBleClient#getRecommendedConnectRuntimePermissions
(dariuszseweryn#787)
Version 1.13.1
- Fixed 'BLUETOOTH_SCAN' permission entry in Android Manifest for apps that do not build using Android 12 target (dariuszseweryn#767)
Version 1.13.0
- Changed behaviour of
RxBleClient#getRecommendedScanRuntimePermissions
(dariuszseweryn#762) - Adjusted checks for scanning in regards to API 31 (Android 12) (dariuszseweryn#762)
- Adjusted readme for new BLE permission system introduced with API 31 (dariuszseweryn#762)
Version 1.12.1
- Added a new location check for API 28+ (dariuszseweryn#747)
- Fixed requirements for location services check (dariuszseweryn#748)
Version 1.12.0
- Fixed a leak in
ScanOperationApi21
, thanks @seotrader (dariuszseweryn#708) - Added Service Solicitation UUIDs support, thanks @nrbrook! (dariuszseweryn#711)
- [mockclient] Added builder for
RxBleScanRecordMock
, thanks @nrbrook! (dariuszseweryn#703) - [mockclient] Changed
RxBleClientMock.DeviceBuilder()
=>RxBleDeviceMock.Builder
. Structural changes to creating devices, thanks @nrbrook! (dariuszseweryn#706) - [mockclient] Added builder functions to provide callbacks for characteristic/descriptor writes/reads, thanks @nrbrook! (dariuszseweryn#707)
- [mockclient] Added constructor for
RxScanRecordMock
, thanks @nrbrook! (dariuszseweryn#712) - [mockclient] Fixed behaviour of
RxBleClientMock.observeStateChanges()
(dariuszseweryn#744)
Version 1.11.1
- Fixed
NullPointerException
when logging failedBluetoothGattCharacteristic
initial reads (dariuszseweryn#679) - [mockclient] Added support for
BluetoothDevice
inRxBleDeviceMock
(dariuszseweryn#676)
Version 1.11.0
- Added workaround for scans with settings match found and/or lost but no filters (dariuszseweryn#612)
- Fixed typo in
BleCharacteristicNotFoundException
(dariuszseweryn#625) - Added scan permission helper functions (dariuszseweryn#642)
Version 1.10.5
- Fixed possibly incorrect order of notifications and operation completions (dariuszseweryn#639)
- Fixed possibility of library being stalled on operation cancelling (dariuszseweryn#650)
- Fixed a silenced
IllegalStateException
after a scan is stopped becauseBluetoothAdapter
being disabled (dariuszseweryn#649)
Version 1.10.4
- Fixed location permission check for Android 10 (dariuszseweryn#640)
Version 1.10.3
- Fixed
RxBleConnection.observeConnectionParametersUpdates()
not working in obfuscated apps. Added consumerproguard-rules.pro
Proguard config file. (dariuszseweryn#634) - Fixed log statement on reading RSSI of connection (dariuszseweryn#631)
- Fixed log statement on setting
CONNECTION_PRIORITY_HIGH
(dariuszseweryn#623)
Version 1.10.2
- Fixed possible
UndeliverableException
when scan subscription is quickly disposed (dariuszseweryn#609) - Minor allocation decrease in
ScanSetupBuilderImplApi21
(dariuszseweryn#613)
Version 1.10.1
- Fixed
IllegalStateException
inRxBleAdapterStateObservable
(dariuszseweryn#596)
Version 1.10.0
- Added possibility to disable logs of scanned peripherals via
LogOptions.Builder.setShouldLogScannedPeripherals()
(dariuszseweryn#579) - Added
RxBleConnection.observeConnectionParametersUpdates()
function (dariuszseweryn#565) - Minor allocation decrease in
LocationServicesOkObservable
(dariuszseweryn#574) - Fixed leaking
RxBleAdapterStateObservable
(dariuszseweryn#575)
Version 1.9.2
- Fixed
IllegalArgumentException
inLocationServicesOkObservableApi23Factory
(dariuszseweryn#573)
Version 1.9.1
- Fixed
RxBleClient.observeStateChanges()
emissions (dariuszseweryn#556) - Fixed
RxBleDevice.establishConnection(boolean, Timeout)
Javadoc (dariuszseweryn#558)
Version 1.9.0
- Added possibility to disable Location Services check before scan (dariuszseweryn#533)
- Reworked library logging API and behaviour (dariuszseweryn#551)
Version 1.8.2
- Fixed sporadic NullPointerException in DisconnectionRouter (dariuszseweryn#553)
Version 1.8.1
- Added more GATT status descriptions (dariuszseweryn#543)
Version 1.8.0
- Added
NotificationSetupMode.QUICK_SETUP
for devices which start notifying right after CCC descriptor write (dariuszseweryn#478) - Migrated to androidx usage (dariuszseweryn#497)
Version 1.7.2
- Fixed stalled library (race condition) when trying to connect while BluetoothAdapter is OFF (dariuszseweryn#522)
- Fixed logs in DisconnectionRouter (dariuszseweryn#523)
Version 1.7.1
- Fixed possible
IllegalArgumentException
while parsing UUIDs from advertisements (dariuszseweryn#485) - Fixed
NullPointerException
when callingBackgroundScanner
start / stop scan whileBluetoothAdapter
was not turned ON (dariuszseweryn#487)
Version 1.7.0
- Introduced a new API that allows for background scanning in modern Android OS versions (dariuszseweryn#369)
- Fixed LocationServicesOkObservable (dariuszseweryn#438)
- Added GATT status code to
BleDisconnectionException
(dariuszseweryn#405) - Fixed possible concurrent access to
DisconnectionRouter
(dariuszseweryn#442) - Fixed race condition in
CharacteristicLongWriteOperation
(dariuszseweryn#465)
Version 1.6.0
- Deprecated ConnectionSharingAdapter (dariuszseweryn#397)
- Fixed unexpected behaviour of LocationServicesOkObservable if unsubscribed immediately after first emission (dariuszseweryn#430)
- Added possibility to modify CustomOperation priority (dariuszseweryn#414)
- Fixed stalled library if a just started operation was already unsubscribed (dariuszseweryn#428)
Version 1.5.0
- Added possibility to change default operation timeout (dariuszseweryn#321)
- Fixed Dagger2 compatibility (dariuszseweryn#342 dariuszseweryn#348)
- Fixed DisconnectionRouter leaking subscription to RxBleAdapterStateObservable (dariuszseweryn#353)
- Improved Location Services status check (dariuszseweryn#327)
- Added logger that prints out GATT server structure on a successful discovery. The log is generated when the logger is in a VERBOSE level (dariuszseweryn#355)
- Enhanced operation logger so it displays how long the operation performed. (dariuszseweryn#356)
- Added retry strategies for long write operations (dariuszseweryn#357)
- Introduced API in RxJava2
- Removed deprecated establishConnection method
- Removed deprecated writeCharacteristic method
- Introduced BleDescriptorNotFoundException
Version 1.5.0 (RxJava1)
- Added possibility to change default operation timeout (dariuszseweryn#321)
- Fixed Dagger2 compatibility (dariuszseweryn#342 dariuszseweryn#348)
- Fixed DisconnectionRouter leaking subscription to RxBleAdapterStateObservable (dariuszseweryn#353)
- Improved Location Services status check (dariuszseweryn#327)
- Added logger that prints out GATT server structure on a successful discovery. The log is generated when the logger is in a VERBOSE level (dariuszseweryn#355)
- Enhanced operation logger so it displays how long the operation performed. (dariuszseweryn#356)
- Added retry strategies for long write operations (dariuszseweryn#357)
Version 1.4.3 (RxJava1)
- Log informing that the underlying semaphore in a QueueSemaphore has been interrupted will be printed only when the situation was unexpected.(dariuszseweryn#317)
- Fixed possible race condition when calling
.doOnSubscribe()
and.doOnUnsubscribe()
which lead to callingConnectionOperationQueueImpl.onConnectionUnsubscribed()
before the.onConnectionSubscribed()
has returned. (dariuszseweryn#308) - Updated RxJava dependency (dariuszseweryn#312)
- Updated to Gradle 3.0.0/Android Studio 3.0 (dariuszseweryn#302)
- Nicer exception messages (dariuszseweryn#303)
Version 1.4.2 (RxJava1)
- Fixed MTU value not being updated when changed by the peripheral (dariuszseweryn#293)
- Added info logs regarding start/stop of scans (dariuszseweryn#295)
- Fixed routing of the actual disconnection error to all queued operations (dariuszseweryn#297)
Version 1.4.1 (RxJava1)
- Fixed issue hasObservers conditional for Output class (dariuszseweryn#283)
Version 1.4.0 (RxJava1)
- Added native callback usage support in custom operations. You may consider this API if your implementation is performance critical. (dariuszseweryn#165)
- Added pre-scan verification for excessive scan (undocumented Android 7.0 "feature") (dariuszseweryn#227)
- Adjusted
BleCannotSetCharacteristicNotificationException
to contain the cause exception if available.RxBleConnection.setupNotification()
/RxBleConnection.setupIndication()
will now throw the cause of disconnection if subscribed after connection was disconnected. (dariuszseweryn#225) - Changed Behaviour of
RxBleDevice.observeConnectionStateChanges()
- does not emit initial state and reflects bestBluetoothGatt
state. (dariuszseweryn#50) - Added support for a custom Logger
RxBleLog.setLogger(Logger)
as alternative to Logcat (dariuszseweryn#248) - Added a warning log if user tries to use a characteristic against it's properties (dariuszseweryn#224)
- Changed Behaviour —
BluetoothGatt
is now called on a single background thread instead of the main thread (dariuszseweryn#255) - Decoupled command queues for different connections. (dariuszseweryn#250)
Version 1.3.4 (RxJava1)
- Added @Nullable annotation to
RxBleDevice.getName()
. (dariuszseweryn#263) - Fixed connection not being disconnected when
DeadObjectException
was raised. (dariuszseweryn#275)
Version 1.3.3 (RxJava1)
- Fixed scan filtering by name on API <21 (dariuszseweryn#243)
- Fixed race condition (which would cause the library to hang) when using
.first()
on calls toRxBleConnection
that emit a single result. (dariuszseweryn#244)
Version 1.3.2 (RxJava1)
- Fixed completing the
Observable<byte[]>
emitted byRxBleConnection.setupNotification()
/RxBleConnection.setupIndication()
when unsubscribed (dariuszseweryn#231)
Version 1.3.1 (RxJava1)
- Fixed unsubscribing from operations before
onComplete()
/onError()
causing the library to hang. (dariuszseweryn#218)
Version 1.3.0 (RxJava1)
- Changed Behaviour of
RxBleConnection
- connection is no longer closed on individual operation errors. (dariuszseweryn#26) - Added partial support for API 21 BLE scan in a backwards compatible manner. (dariuszseweryn#16)
- Added support for filtering by Manufacturer Data (dariuszseweryn#127)
- Added RxBleClient State observing for determining what functionality of the library may work (dariuszseweryn#55)
- Added
ValueInterpreter
for interpreting standardized (Bluetooth Specification) int/float/String values from byte[] (dariuszseweryn#199) - Added support for requesting connection priority on API 21+ (dariuszseweryn#111)
Version 1.2.4 (RxJava1)
- Lowered memory pressure caused by
RxBleLog
when logs are disabled (dariuszseweryn#212)
Version 1.2.3 (RxJava1)
- Fixed scan when filter with 32-bit UUID was specified (dariuszseweryn#207)
- Fixed memory leak of scan operation (and potentially any other that would emit an infinite stream of events) (dariuszseweryn#194)
- Lowered memory pressure when using functions that accept
UUID
. - Changed
RxBleConnectionState
from a class to an enum for convenience. - Minor optimisations to
RxBleRadio
queue processing time. - Updated
RxJava
to 1.3.0
Version 1.2.2 (RxJava1)
- Fixed visibility of
UUIDUtil
. Deprecated it. IntroducedAdvertisedServiceUUIDExtractor
helper, thanks @marciogranzotto! (dariuszseweryn#184)
Version 1.2.1 (RxJava1)
- Added
ByteArrayBatchObservable
helper for splitting long byte arrays - Fixed behaviour in non-Bluetooth environments. (dariuszseweryn#158)
- Fixed
RxBleConnectionMock
overwritingBluetoothCharacteristic
value on setting notification. (dariuszseweryn#160) - Fixed default payload size of Long Write operation when non-standard MTU was negotiated (dariuszseweryn#161)
- Added possibility to get the current MTU value of
RxBleConnection
(dariuszseweryn#166) - Fixed retrying of
RxBleClient.scanBleDevices(UUID...)
, thanks @BharathMG! (dariuszseweryn#174) - Fixed connection not being noticed as established due to a race condition (dariuszseweryn#178)
- Fixed
BleBluetoothGattCallbackTimeout
macAddress being null on connection (dariuszseweryn#178) - Fixed disconnect operation behaviour in an edge case situation (dariuszseweryn#178)
Version 1.2.0 (RxJava1)
- Added Proguard rules for the library. (dariuszseweryn#104)
- Added support for MTU negotiation, thanks @pregno!
- Fixed connecting with autoConnect = true on Android 7.0.0+, thanks @JIUgia!
- Fixed notifications for characteristics with the same UUID
- Adjusted scan location services check for various scenarios (dariuszseweryn#106)
- Fixed occasional out-of-order emissions from notifications (dariuszseweryn#75)
- Fixed stalled operations by adding timeouts (dariuszseweryn#118)
- Added
LocationServicesOkObservable
helper for observing if scan can be successfully started - Added Jack compatibility (dariuszseweryn#123)
- Added compatibility mode for notifications on characteristic that do not contain a Client Characteristic Config descriptor
- Fixed logic of UUID filtering during scan
- Added long write support (dariuszseweryn#68)
- Fixed issue with a stalled library when write operations were too quick (dariuszseweryn#135)
- Optimised logging
- Added support for custom
BluetoothGatt
operations (dariuszseweryn#137) - Updated
RxJava
to 1.2.9 - Added support for scanning on Android Wear
- Internal refactoring introducing Dagger2 support
Version 1.1.0 (RxJava1)
- Fixed issue that sometimes happened where
RxBleRadioOperationConnect
was not yet subscribed while running. (dariuszseweryn#94) - Fixed issue with descriptor writing using parent characteristic write type. (dariuszseweryn#93)
- Added
BleScanException.toString()
for a more descriptive stacktrace. - Added a workaround for a bug while discovering services. (dariuszseweryn#86)
- Added a timeout for discovering services. (dariuszseweryn#86)
- Fixed calling
BluetoothGatt.disconnect()
on a correct thread. (dariuszseweryn#84) - Fixed library stuck if disconnection happened during operation execution. (dariuszseweryn#81)
- Removed reflection call to
BluetoothGatt.connect()
on Android 7.0.0+. (dariuszseweryn#83) - Removed android.support.v4 dependency.
- Added cancelling of connection establishing process.
- Reduced method count.
- Fixed
RejectedExecutionException
when processingBluetoothGattCallback
. (dariuszseweryn#25) (dariuszseweryn#75)
Version 1.0.2 (RxJava1)
- Added Mock RxAndroidBle to the repository
- Added indications handling on RxBleConnection
- Fixed scan operation concurrency issue (dariuszseweryn#17)
- Exposed android.bluetooth.BluetoothDevice in RxBleDevice (dariuszseweryn#23)
- Fixed stale RxBleRadio on RxBleOperation unhandled throw (dariuszseweryn#18)
- Fixed possible BluetoothCharacteristic value overwrites with multiple writes (dariuszseweryn#27)
- Updated
RxJava
(1.1.0 -> 1.1.7) andRxAndroid
(1.1.0 -> 1.2.1) libraries dependency - Added interface methods for usage with BluetoothCharacteristic object (dariuszseweryn#38)
- Fixed lost connection when BluetoothAdapter disabled before the connection established (dariuszseweryn#45)
- Added RxBleClient.getBondedDevices() method, thanks @fracturedpsyche! (dariuszseweryn#46)
Version 1.0.1 (RxJava1)
- Fixed scan operation concurrency issue, thanks @artem-zinnatullin! (dariuszseweryn#5)
- Fixed location permission requirement check (Android >=6.0)
Version 1.0.0 (RxJava1)
- Changed RxBleClient factory method name.
- After this version the public API will be maintained to avoid conflicts.
Version 0.0.4 (RxJava1)
- Removed duplicated API for connection state from RxBleConnection
- Renamed API for connection state observation in RxBleDevice
- Renamed API for notification setup, not it is RxBleConnection#setupNotification(UUID)
- Added convenience method to check current connection state
- Added ability to filter scan results with one service more easily
- Reject establishConnection calls if connection is already established
- Added adapter for sharing connections
Version 0.0.3 (RxJava1)
- Added location permission for APIs >=23
- Check if location permission is granted and location services are enabled on Android 6.0
- Fixed error callback notifying about disconnects
Version 0.0.2 (RxJava1)
- Bugfixes
- Changed API for instantiation of the client
- Added caches in sensitive places
Version 0.0.1 (RxJava1)
Initial release
- Support for main bluetooth operations (discovery, connection, read, write, notifications)