Comments (3)
- What the best practice to unsubscribe connection if I want to connect to many devices and communicate ? in Activity#onDestory? or like the following code
Observable<RxBleConnection> connectionSrc = rxBleScanResult
.getBleDevice()
.establishConnection(activity, false);
// 6/8/16 when found the device, stop scanning
subscribe.unsubscribe();
// TODO: 6/8/16 when un-subscribe this
Subscription conSubscription = connectionSrc
.flatMap(new Func1<RxBleConnection, Observable<byte[]>>() {
@Override
public Observable<byte[]> call(final RxBleConnection rxBleConnection) {
return rxBleConnection.readCharacteristic(BLE.BLE_CHAT_UUID);
}
})
.subscribe(new Action1<byte[]>() {
@Override
public void call(byte[] bytes) {
// read bytes
**conSubscription.unsubscribe();**
}
});
from rxandroidble.
- read write combined vs simple read then simple write
The following code is blog's code for read/write combined.
device.establishConnection(context, false)
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUuid)
.doOnNext(bytes -> {
// Process read data.
})
.flatMap(bytes -> rxBleConnection.writeCharacteristic(characteristicUuid, bytesToWrite))
).subscribe(writeBytes -> {
// Written data.
});
What is the difference between the following code:
Observable<RxBleConnection> connectionSrc = device.establishConnection(activity, false);
connectionSrc
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID))
.subscribe(characteristicValue -> {
// Read characteristic value.
});
connectionSrc
.flatMap(rxBleConnection -> rxBleConnection.writeCharacteristic(characteristicUUID, bytesToWrite))
.subscribe(characteristicValue -> {
// Characteristic value confirmed.
});
from rxandroidble.
The answer is to unsubscribe from the scanning as soon as you're no longer interested in it. For instance if you're interested in connecting to a fixed amount of devices that are meeting your requirements:
CompositeSubscription compositeSubscription = new CompositeSubscription
Subscription scanSubscription = rxBleClient.scanBleDevices()
.filter(scanResult -> /* filter the devices you're interested in */)
.take(/* number of devices you want to scan */) // this operator will automatically unsubscribe from scanSubscription once the number of scanResults will be taken
.map(scanResult -> scanResult.getBleDevice())
.subscribe(bleDevice -> connectToDevice(bleDevice))
compositeSubscription.add(scanSubscription)
where:
void connectToDevice(RxBleDevice device) {
Subscription connectFlowSubscription = device.establishConnection(context, false)
.flatMap(connection -> /* do what you need to do */)
.subscribe()
compositeSubscription.add(connectFlowSubscription)
}
and you should clear the compositeSubscription when you're no longer using the app. For instance onPause of the Activity.
from rxandroidble.
Related Issues (20)
- Does RxAndroidBle support the use of Bluetooth Gatt's connect method? HOT 4
- Building fork help HOT 6
- It is not possible to disconnect the Bluetooth while it is in the process of connecting. HOT 1
- BleGattCharacteristicException while readCharacteristic HOT 12
- scanResult.bleDevice.name not showing Ble updated name HOT 1
- BLUETOOTH_SCAN set usesPermissionFlags="neverForLocation",Is there a problem? HOT 2
- GenericFailure<CharacteristicValueUpdateError> HOT 11
- Send long bytes twice HOT 2
- Write request is not processed in the random order HOT 2
- Long Bytes Send HOT 8
- Creating a Fork HOT 2
- Set Preferred PHY / Read PHY HOT 2
- RxBleClient mulit connections HOT 4
- Is the library still maintained? HOT 3
- Android 14 breaking change HOT 15
- Google Pixel 5 loses bonding info after BT adapter cycle HOT 4
- Metode readcharacteristic not stream HOT 2
- Unable to readCharacteristic after writeCharacteristic HOT 5
- In the case of unsuccessful Bluetooth connection, actively disconnect without executing context. unregisterReceiver (receiver); At this point, there may be multiple Bluetooth broadcast registrarReceivers, which may crash on some Huawei phones due to a broadcast limit of approximately 1000. Suggest fixing this issue. HOT 2
- Can't scan after connect dispose/clear HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rxandroidble.