Observing connection state with RXAndroidBlEHow do save an Android Activity state using save instance state?RxAndroidBle keeping a persistant connection + Write/Notification handlingnotification is sometimes not called in notify/write observable with RxAndroidBleRxAndroidBle scanBleDevices(UUID…) not firingError message from RxAndroidBleRxAndroidBle connection timeoutRxAndroidBle - Auto connect issueObserve many times from same Observable (RxAndroidBle)How to create Bond or Pairing in BLE using RxAndroidBLERxAndroidBle: JustWorks bonding and operation timeout issue
What's the difference between 'rename' and 'mv'?
What is the most common color to indicate the input-field is disabled?
Is "remove commented out code" correct English?
When a company launches a new product do they "come out" with a new product or do they "come up" with a new product?
Does a druid starting with a bow start with no arrows?
Can one be a co-translator of a book, if he does not know the language that the book is translated into?
Is there a hemisphere-neutral way of specifying a season?
How to model explosives?
1960's book about a plague that kills all white people
What is the word for reserving something for yourself before others do?
Why is Collection not simply treated as Collection<?>
Combinations of multiple lists
Is it unprofessional to ask if a job posting on GlassDoor is real?
Twin primes whose sum is a cube
Infinite Abelian subgroup of infinite non Abelian group example
Did Shadowfax go to Valinor?
I Accidentally Deleted a Stock Terminal Theme
What mechanic is there to disable a threat instead of killing it?
Where does SFDX store details about scratch orgs?
90's TV series where a boy goes to another dimension through portal near power lines
What does it mean to describe someone as a butt steak?
If human space travel is limited by the G force vulnerability, is there a way to counter G forces?
Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?
Were any external disk drives stacked vertically?
Observing connection state with RXAndroidBlE
How do save an Android Activity state using save instance state?RxAndroidBle keeping a persistant connection + Write/Notification handlingnotification is sometimes not called in notify/write observable with RxAndroidBleRxAndroidBle scanBleDevices(UUID…) not firingError message from RxAndroidBleRxAndroidBle connection timeoutRxAndroidBle - Auto connect issueObserve many times from same Observable (RxAndroidBle)How to create Bond or Pairing in BLE using RxAndroidBLERxAndroidBle: JustWorks bonding and operation timeout issue
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm trying to listen to whether my app is connected to a bluetooth device. I'm trying to print the connectionState
result but the application is not even reaching the first println
so I can't check what they may be. I want to enumerate the possible connection states, and then to adjust the UI in response. How can I do this?
val rxBleClient = RxBleClient.create(this.context!!)
val bleDevice = rxBleClient.getBleDevice("34:81:F4:3C:2D:7B")
val disposable = bleDevice.establishConnection(true) // <-- autoConnect flag
.subscribe(
rxBleConnection ->
// All GATT operations are done through the rxBleConnection.
bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
println("Connection State: $connectionState")
if (connectionState != null)
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable ->
Log.d("Error: ", throwable.toString())
)
,
throwable ->
// Handle an error here.
Log.d("Error: ", throwable.toString())
)
// When done... dispose and forget about connection teardown :)
disposable.dispose()
android kotlin bluetooth-lowenergy rx-android rxandroidble
add a comment |
I'm trying to listen to whether my app is connected to a bluetooth device. I'm trying to print the connectionState
result but the application is not even reaching the first println
so I can't check what they may be. I want to enumerate the possible connection states, and then to adjust the UI in response. How can I do this?
val rxBleClient = RxBleClient.create(this.context!!)
val bleDevice = rxBleClient.getBleDevice("34:81:F4:3C:2D:7B")
val disposable = bleDevice.establishConnection(true) // <-- autoConnect flag
.subscribe(
rxBleConnection ->
// All GATT operations are done through the rxBleConnection.
bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
println("Connection State: $connectionState")
if (connectionState != null)
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable ->
Log.d("Error: ", throwable.toString())
)
,
throwable ->
// Handle an error here.
Log.d("Error: ", throwable.toString())
)
// When done... dispose and forget about connection teardown :)
disposable.dispose()
android kotlin bluetooth-lowenergy rx-android rxandroidble
add a comment |
I'm trying to listen to whether my app is connected to a bluetooth device. I'm trying to print the connectionState
result but the application is not even reaching the first println
so I can't check what they may be. I want to enumerate the possible connection states, and then to adjust the UI in response. How can I do this?
val rxBleClient = RxBleClient.create(this.context!!)
val bleDevice = rxBleClient.getBleDevice("34:81:F4:3C:2D:7B")
val disposable = bleDevice.establishConnection(true) // <-- autoConnect flag
.subscribe(
rxBleConnection ->
// All GATT operations are done through the rxBleConnection.
bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
println("Connection State: $connectionState")
if (connectionState != null)
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable ->
Log.d("Error: ", throwable.toString())
)
,
throwable ->
// Handle an error here.
Log.d("Error: ", throwable.toString())
)
// When done... dispose and forget about connection teardown :)
disposable.dispose()
android kotlin bluetooth-lowenergy rx-android rxandroidble
I'm trying to listen to whether my app is connected to a bluetooth device. I'm trying to print the connectionState
result but the application is not even reaching the first println
so I can't check what they may be. I want to enumerate the possible connection states, and then to adjust the UI in response. How can I do this?
val rxBleClient = RxBleClient.create(this.context!!)
val bleDevice = rxBleClient.getBleDevice("34:81:F4:3C:2D:7B")
val disposable = bleDevice.establishConnection(true) // <-- autoConnect flag
.subscribe(
rxBleConnection ->
// All GATT operations are done through the rxBleConnection.
bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
println("Connection State: $connectionState")
if (connectionState != null)
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable ->
Log.d("Error: ", throwable.toString())
)
,
throwable ->
// Handle an error here.
Log.d("Error: ", throwable.toString())
)
// When done... dispose and forget about connection teardown :)
disposable.dispose()
android kotlin bluetooth-lowenergy rx-android rxandroidble
android kotlin bluetooth-lowenergy rx-android rxandroidble
asked Mar 8 at 23:43
Martin ErlicMartin Erlic
2,15353978
2,15353978
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
There are two things to the above code:
disposable.dispose()
should be called when the flow that was subscribed is no longer needed. If the dispose method is called right after subscription nothing will actually happen. That is why even the firstprintln
does not show up.- The
bleDevice.establishConnection()
andbleDevice.observeConnectionStateChanges()
are not dependent on each other functionally. Connection does not have to be established to observe changes. Even if one would start observing the changes after the connection is on it will only get info when the connection is closed (because it is the first change since then)
A better way would be to decouple the observing connection changes flow and the actual connection. An example code:
val observingConnectionStateDisposable = bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
Log.d("Connection State: $connectionState")
if (connectionState == RxBleConnectionState.CONNECTED) // fixed the check
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable -> Log.d("Error: ", throwable.toString())
)
val connectionDisposable = bleDevice.establishConnection(false)
.subscribe(
Log.d("connection established") , // do your thing with the connection
throwable -> Log.d("Error on connection: $throwable")
)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55072523%2fobserving-connection-state-with-rxandroidble%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There are two things to the above code:
disposable.dispose()
should be called when the flow that was subscribed is no longer needed. If the dispose method is called right after subscription nothing will actually happen. That is why even the firstprintln
does not show up.- The
bleDevice.establishConnection()
andbleDevice.observeConnectionStateChanges()
are not dependent on each other functionally. Connection does not have to be established to observe changes. Even if one would start observing the changes after the connection is on it will only get info when the connection is closed (because it is the first change since then)
A better way would be to decouple the observing connection changes flow and the actual connection. An example code:
val observingConnectionStateDisposable = bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
Log.d("Connection State: $connectionState")
if (connectionState == RxBleConnectionState.CONNECTED) // fixed the check
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable -> Log.d("Error: ", throwable.toString())
)
val connectionDisposable = bleDevice.establishConnection(false)
.subscribe(
Log.d("connection established") , // do your thing with the connection
throwable -> Log.d("Error on connection: $throwable")
)
add a comment |
There are two things to the above code:
disposable.dispose()
should be called when the flow that was subscribed is no longer needed. If the dispose method is called right after subscription nothing will actually happen. That is why even the firstprintln
does not show up.- The
bleDevice.establishConnection()
andbleDevice.observeConnectionStateChanges()
are not dependent on each other functionally. Connection does not have to be established to observe changes. Even if one would start observing the changes after the connection is on it will only get info when the connection is closed (because it is the first change since then)
A better way would be to decouple the observing connection changes flow and the actual connection. An example code:
val observingConnectionStateDisposable = bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
Log.d("Connection State: $connectionState")
if (connectionState == RxBleConnectionState.CONNECTED) // fixed the check
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable -> Log.d("Error: ", throwable.toString())
)
val connectionDisposable = bleDevice.establishConnection(false)
.subscribe(
Log.d("connection established") , // do your thing with the connection
throwable -> Log.d("Error on connection: $throwable")
)
add a comment |
There are two things to the above code:
disposable.dispose()
should be called when the flow that was subscribed is no longer needed. If the dispose method is called right after subscription nothing will actually happen. That is why even the firstprintln
does not show up.- The
bleDevice.establishConnection()
andbleDevice.observeConnectionStateChanges()
are not dependent on each other functionally. Connection does not have to be established to observe changes. Even if one would start observing the changes after the connection is on it will only get info when the connection is closed (because it is the first change since then)
A better way would be to decouple the observing connection changes flow and the actual connection. An example code:
val observingConnectionStateDisposable = bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
Log.d("Connection State: $connectionState")
if (connectionState == RxBleConnectionState.CONNECTED) // fixed the check
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable -> Log.d("Error: ", throwable.toString())
)
val connectionDisposable = bleDevice.establishConnection(false)
.subscribe(
Log.d("connection established") , // do your thing with the connection
throwable -> Log.d("Error on connection: $throwable")
)
There are two things to the above code:
disposable.dispose()
should be called when the flow that was subscribed is no longer needed. If the dispose method is called right after subscription nothing will actually happen. That is why even the firstprintln
does not show up.- The
bleDevice.establishConnection()
andbleDevice.observeConnectionStateChanges()
are not dependent on each other functionally. Connection does not have to be established to observe changes. Even if one would start observing the changes after the connection is on it will only get info when the connection is closed (because it is the first change since then)
A better way would be to decouple the observing connection changes flow and the actual connection. An example code:
val observingConnectionStateDisposable = bleDevice.observeConnectionStateChanges()
.subscribe(
connectionState ->
Log.d("Connection State: $connectionState")
if (connectionState == RxBleConnectionState.CONNECTED) // fixed the check
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_on) // Change image
deviceConnected.setText(R.string.connected_to_hooplight) // Changed text
else
enableBluetooth.setBackgroundResource(R.drawable.bluetooth_off) // Change image
deviceConnected.setText(R.string.connect_to_hooplight) // Changed text
,
throwable -> Log.d("Error: ", throwable.toString())
)
val connectionDisposable = bleDevice.establishConnection(false)
.subscribe(
Log.d("connection established") , // do your thing with the connection
throwable -> Log.d("Error on connection: $throwable")
)
answered Mar 10 at 19:20
Dariusz SewerynDariusz Seweryn
2,0241818
2,0241818
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55072523%2fobserving-connection-state-with-rxandroidble%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown