mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2025-12-20 16:04:22 +01:00
Close service after disconnect event
This commit is contained in:
@@ -92,6 +92,13 @@ abstract class BleProfileService : Service() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun stopIfDisconnected(status: BleManagerStatus) {
|
||||||
|
if (status == BleManagerStatus.DISCONNECTED) {
|
||||||
|
scope.close()
|
||||||
|
stopSelf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onBind(intent: Intent?): IBinder? {
|
override fun onBind(intent: Intent?): IBinder? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,7 @@ internal class CGMService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
@@ -25,9 +25,7 @@ internal class CSCService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import kotlinx.coroutines.flow.launchIn
|
|||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import no.nordicsemi.android.hrs.data.HRSRepository
|
import no.nordicsemi.android.hrs.data.HRSRepository
|
||||||
import no.nordicsemi.android.service.BleManagerStatus
|
import no.nordicsemi.android.service.BleManagerStatus
|
||||||
import no.nordicsemi.android.service.BleServiceStatus
|
|
||||||
import no.nordicsemi.android.service.ForegroundBleService
|
import no.nordicsemi.android.service.ForegroundBleService
|
||||||
import no.nordicsemi.android.utils.exhaustive
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
@@ -24,9 +22,7 @@ internal class HRSService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package no.nordicsemi.android.hrs.viewmodel
|
package no.nordicsemi.android.hrs.viewmodel
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
@@ -24,6 +25,7 @@ internal class HRSViewModel @Inject constructor(
|
|||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
val state = repository.data.combine(repository.status) { data, status ->
|
val state = repository.data.combine(repository.status) { data, status ->
|
||||||
|
Log.d("AAATESTAAA", "data: $data, status: $status")
|
||||||
when (status) {
|
when (status) {
|
||||||
BleManagerStatus.CONNECTING -> LoadingState
|
BleManagerStatus.CONNECTING -> LoadingState
|
||||||
BleManagerStatus.OK,
|
BleManagerStatus.OK,
|
||||||
|
|||||||
@@ -24,9 +24,7 @@ internal class HTSService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
package no.nordicsemi.android.prx.repository
|
package no.nordicsemi.android.prx.repository
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import no.nordicsemi.android.prx.data.AlarmLevel
|
import no.nordicsemi.android.prx.data.*
|
||||||
import no.nordicsemi.android.prx.data.DisableAlarm
|
|
||||||
import no.nordicsemi.android.prx.data.Disconnect
|
|
||||||
import no.nordicsemi.android.prx.data.EnableAlarm
|
|
||||||
import no.nordicsemi.android.prx.data.PRXRepository
|
|
||||||
import no.nordicsemi.android.service.BleManagerStatus
|
import no.nordicsemi.android.service.BleManagerStatus
|
||||||
import no.nordicsemi.android.service.BleServiceStatus
|
import no.nordicsemi.android.service.BleServiceStatus
|
||||||
import no.nordicsemi.android.service.ForegroundBleService
|
import no.nordicsemi.android.service.ForegroundBleService
|
||||||
@@ -43,6 +38,7 @@ internal class PRXService : ForegroundBleService() {
|
|||||||
BleServiceStatus.OK -> BleManagerStatus.OK
|
BleServiceStatus.OK -> BleManagerStatus.OK
|
||||||
BleServiceStatus.DISCONNECTED -> {
|
BleServiceStatus.DISCONNECTED -> {
|
||||||
scope.close()
|
scope.close()
|
||||||
|
stopSelf()
|
||||||
BleManagerStatus.DISCONNECTED
|
BleManagerStatus.DISCONNECTED
|
||||||
}
|
}
|
||||||
BleServiceStatus.LINK_LOSS -> null
|
BleServiceStatus.LINK_LOSS -> null
|
||||||
|
|||||||
@@ -24,9 +24,7 @@ internal class RSCSService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
@@ -25,9 +25,7 @@ internal class UARTService : ForegroundBleService() {
|
|||||||
status.onEach {
|
status.onEach {
|
||||||
val status = it.mapToSimpleManagerStatus()
|
val status = it.mapToSimpleManagerStatus()
|
||||||
repository.setNewStatus(status)
|
repository.setNewStatus(status)
|
||||||
if (status == BleManagerStatus.DISCONNECTED) {
|
stopIfDisconnected(status)
|
||||||
scope.close()
|
|
||||||
}
|
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
|
||||||
repository.command.onEach {
|
repository.command.onEach {
|
||||||
|
|||||||
Reference in New Issue
Block a user