Loading service/src/BleScanSettingListener.kt +10 −1 Original line number Diff line number Diff line Loading @@ -47,10 +47,14 @@ object BleScanSettingListener { notifyForDescendants, object : ContentObserver(Handler(looper)) { override fun onChange(selfChange: Boolean) { val previousValue = isScanAllowed isScanAllowed = getScanSettingValue(resolver) if (isScanAllowed) { Log.i(TAG, "Ble Scan mode is now allowed. Nothing to do") return } else if (previousValue == isScanAllowed) { Log.i(TAG, "Ble Scan mode was already considered as false. Discarding") return } else { Log.i(TAG, "Trigger callback to disable BLE_ONLY mode") callback() Loading @@ -67,6 +71,11 @@ object BleScanSettingListener { * @return whether Bluetooth should consider this radio or not */ private fun getScanSettingValue(resolver: ContentResolver): Boolean { try { return Settings.Global.getInt(resolver, Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE) != 0 } catch (e: Settings.SettingNotFoundException) { Log.i(TAG, "Settings not found. Default to false") return false } } } service/src/BleScanSettingListenerTest.kt +11 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ class BleScanSettingListenerTest { @Before public fun setup() { callbackTriggered = false enableSetting() } private fun startListener() { Loading @@ -62,6 +61,14 @@ class BleScanSettingListenerTest { callbackTriggered = true } @Test fun initialize_whenNoSettings_isOff() { startListener() assertThat(isScanAllowed).isFalse() assertThat(callbackTriggered).isFalse() } @Test fun initialize_whenSettingsOff_isOff() { disableSetting() Loading @@ -74,6 +81,7 @@ class BleScanSettingListenerTest { @Test fun initialize_whenSettingsOn_isScanAllowed() { enableSetting() startListener() assertThat(isScanAllowed).isTrue() Loading @@ -82,6 +90,7 @@ class BleScanSettingListenerTest { @Test fun changeModeToOn_whenSettingsOn_isScanAllowedAndEventDiscarded() { enableSetting() startListener() enableSetting() Loading @@ -92,7 +101,6 @@ class BleScanSettingListenerTest { @Test fun changeModeToOff_whenSettingsOff_isOffAndEventDiscarded() { disableSetting() startListener() disableSetting() Loading @@ -103,7 +111,6 @@ class BleScanSettingListenerTest { @Test fun changeModeToOn_whenSettingsOff_isScanAllowedWithoutCallback() { disableSetting() startListener() enableSetting() Loading @@ -114,6 +121,7 @@ class BleScanSettingListenerTest { @Test fun changeModeToOff_whenSettingsOn_isOffAndCallbackTriggered() { enableSetting() startListener() disableSetting() Loading Loading
service/src/BleScanSettingListener.kt +10 −1 Original line number Diff line number Diff line Loading @@ -47,10 +47,14 @@ object BleScanSettingListener { notifyForDescendants, object : ContentObserver(Handler(looper)) { override fun onChange(selfChange: Boolean) { val previousValue = isScanAllowed isScanAllowed = getScanSettingValue(resolver) if (isScanAllowed) { Log.i(TAG, "Ble Scan mode is now allowed. Nothing to do") return } else if (previousValue == isScanAllowed) { Log.i(TAG, "Ble Scan mode was already considered as false. Discarding") return } else { Log.i(TAG, "Trigger callback to disable BLE_ONLY mode") callback() Loading @@ -67,6 +71,11 @@ object BleScanSettingListener { * @return whether Bluetooth should consider this radio or not */ private fun getScanSettingValue(resolver: ContentResolver): Boolean { try { return Settings.Global.getInt(resolver, Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE) != 0 } catch (e: Settings.SettingNotFoundException) { Log.i(TAG, "Settings not found. Default to false") return false } } }
service/src/BleScanSettingListenerTest.kt +11 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ class BleScanSettingListenerTest { @Before public fun setup() { callbackTriggered = false enableSetting() } private fun startListener() { Loading @@ -62,6 +61,14 @@ class BleScanSettingListenerTest { callbackTriggered = true } @Test fun initialize_whenNoSettings_isOff() { startListener() assertThat(isScanAllowed).isFalse() assertThat(callbackTriggered).isFalse() } @Test fun initialize_whenSettingsOff_isOff() { disableSetting() Loading @@ -74,6 +81,7 @@ class BleScanSettingListenerTest { @Test fun initialize_whenSettingsOn_isScanAllowed() { enableSetting() startListener() assertThat(isScanAllowed).isTrue() Loading @@ -82,6 +90,7 @@ class BleScanSettingListenerTest { @Test fun changeModeToOn_whenSettingsOn_isScanAllowedAndEventDiscarded() { enableSetting() startListener() enableSetting() Loading @@ -92,7 +101,6 @@ class BleScanSettingListenerTest { @Test fun changeModeToOff_whenSettingsOff_isOffAndEventDiscarded() { disableSetting() startListener() disableSetting() Loading @@ -103,7 +111,6 @@ class BleScanSettingListenerTest { @Test fun changeModeToOn_whenSettingsOff_isScanAllowedWithoutCallback() { disableSetting() startListener() enableSetting() Loading @@ -114,6 +121,7 @@ class BleScanSettingListenerTest { @Test fun changeModeToOff_whenSettingsOn_isOffAndCallbackTriggered() { enableSetting() startListener() disableSetting() Loading