From 995951f18c3562cd22a486d5f58e7975bb174100 Mon Sep 17 00:00:00 2001 From: Sandeep Raghuraman Date: Thu, 25 Mar 2021 20:15:42 +0530 Subject: [PATCH] When Bluetooth is disabled by the user, finish DeviceServiceExploreActivity and CharacteristicActivity --- .../blexplorer/ui/CharacteristicActivity.kt | 4 +++ .../ui/DeviceServiceExploreActivity.kt | 5 +++- .../java/org/ligi/blexplorer/ui/UIUtils.kt | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 android/src/main/java/org/ligi/blexplorer/ui/UIUtils.kt diff --git a/android/src/main/java/org/ligi/blexplorer/ui/CharacteristicActivity.kt b/android/src/main/java/org/ligi/blexplorer/ui/CharacteristicActivity.kt index d8eb9d6..9610e4c 100644 --- a/android/src/main/java/org/ligi/blexplorer/ui/CharacteristicActivity.kt +++ b/android/src/main/java/org/ligi/blexplorer/ui/CharacteristicActivity.kt @@ -91,6 +91,10 @@ class CharacteristicActivity : AppCompatActivity() { finish() } ) + + supportFragmentManager.beginTransaction() + .add(ExitActivityOnBluetoothDisable(), null) + .commit() } override fun onOptionsItemSelected(item: MenuItem): Boolean { diff --git a/android/src/main/java/org/ligi/blexplorer/ui/DeviceServiceExploreActivity.kt b/android/src/main/java/org/ligi/blexplorer/ui/DeviceServiceExploreActivity.kt index dd3f0d8..ac7621b 100644 --- a/android/src/main/java/org/ligi/blexplorer/ui/DeviceServiceExploreActivity.kt +++ b/android/src/main/java/org/ligi/blexplorer/ui/DeviceServiceExploreActivity.kt @@ -28,7 +28,6 @@ import org.ligi.blexplorer.R import org.ligi.blexplorer.bluetoothController import org.ligi.blexplorer.databinding.ActivityWithRecyclerBinding import org.ligi.blexplorer.databinding.ItemServiceBinding -import org.ligi.blexplorer.ui.CharacteristicActivity import org.ligi.blexplorer.util.DevicePropertiesDescriber import org.ligi.blexplorer.util.KEY_BLUETOOTH_DEVICE import org.ligi.snackengage.SnackEngage @@ -101,6 +100,10 @@ class DeviceServiceExploreActivity : AppCompatActivity() { supportFragmentManager.beginTransaction().add(ExitOnDismissAlertDialog(rxbleDevice), ExitOnDismissAlertDialog.TAG).commit() } ) + + supportFragmentManager.beginTransaction() + .add(ExitActivityOnBluetoothDisable(), null) + .commit() } override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { diff --git a/android/src/main/java/org/ligi/blexplorer/ui/UIUtils.kt b/android/src/main/java/org/ligi/blexplorer/ui/UIUtils.kt new file mode 100644 index 0000000..cdc95c0 --- /dev/null +++ b/android/src/main/java/org/ligi/blexplorer/ui/UIUtils.kt @@ -0,0 +1,28 @@ +package org.ligi.blexplorer.ui + +import android.os.Bundle +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import com.polidea.rxandroidble2.RxBleClient +import com.uber.autodispose.AutoDispose +import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider +import io.reactivex.BackpressureStrategy +import io.reactivex.android.schedulers.AndroidSchedulers +import org.ligi.blexplorer.bluetoothController + +class ExitActivityOnBluetoothDisable : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val autoDisposable = AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)) + bluetoothController.bluetoothStateEvents + .toFlowable(BackpressureStrategy.LATEST) + .filter { it == RxBleClient.State.BLUETOOTH_NOT_ENABLED } + .take(1) + .observeOn(AndroidSchedulers.mainThread()) + .`as`(autoDisposable) + .subscribe( + { activity?.finish() }, + {} + ) + } +} \ No newline at end of file