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