From fae73293d727680ea32be207aad666d2bbd62827 Mon Sep 17 00:00:00 2001 From: Koen Date: Fri, 19 Jan 2024 15:16:41 +0100 Subject: [PATCH] Fixed crash where it would fail to unregister audio noisy receiver. Fixed crash where system brightness setting does not exist. --- .../futo/platformplayer/states/StateApp.kt | 13 +++++++++-- .../views/behavior/GestureControlView.kt | 23 +++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt index d3e2f158..144c1dc9 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt @@ -13,6 +13,7 @@ import android.net.NetworkRequest import android.net.Uri import android.provider.DocumentsContract import android.util.DisplayMetrics +import android.util.Log import androidx.documentfile.provider.DocumentFile import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope @@ -473,7 +474,11 @@ class StateApp { Logger.i(TAG, "MainApp Started: Initialize [Noisy]"); _receiverBecomingNoisy?.let { _receiverBecomingNoisy = null; - context.unregisterReceiver(it); + try { + context.unregisterReceiver(it); + } catch (e: Throwable) { + Log.e(TAG, "Failed to unregister receiver.", e) + } } _receiverBecomingNoisy = AudioNoisyReceiver(); context.registerReceiver(_receiverBecomingNoisy, IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY)); @@ -639,7 +644,11 @@ class StateApp { Logger.i(TAG, "App ended"); _receiverBecomingNoisy?.let { _receiverBecomingNoisy = null; - context.unregisterReceiver(it); + try { + context.unregisterReceiver(it); + } catch (e: Throwable) { + Log.e(TAG, "Failed to unregister receiver.", e) + } } Logger.i(TAG, "Unregistered network callback on connectivityManager.") diff --git a/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt b/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt index c37d32aa..966c0586 100644 --- a/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt +++ b/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt @@ -24,6 +24,7 @@ import androidx.core.animation.doOnStart import androidx.core.view.GestureDetectorCompat import com.futo.platformplayer.R import com.futo.platformplayer.Settings +import com.futo.platformplayer.UIDialogs import com.futo.platformplayer.constructs.Event0 import com.futo.platformplayer.constructs.Event1 import com.futo.platformplayer.constructs.Event2 @@ -739,15 +740,23 @@ class GestureControlView : LinearLayout { if (isFullScreen) { if (Settings.instance.gestureControls.useSystemBrightness) { - _originalBrightnessMode = android.provider.Settings.System.getInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE) + try { + _originalBrightnessMode = android.provider.Settings.System.getInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE) - val brightness = android.provider.Settings.System.getInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS) - _brightnessFactor = brightness / 255.0f; - Log.i(TAG, "Starting brightness brightness: $brightness, _brightnessFactor: $_brightnessFactor, _originalBrightnessMode: $_originalBrightnessMode") + val brightness = android.provider.Settings.System.getInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS) + _brightnessFactor = brightness / 255.0f; + Log.i(TAG, "Starting brightness brightness: $brightness, _brightnessFactor: $_brightnessFactor, _originalBrightnessMode: $_originalBrightnessMode") - _originalBrightnessFactor = _brightnessFactor - android.provider.Settings.System.putInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); - } else { + _originalBrightnessFactor = _brightnessFactor + android.provider.Settings.System.putInt(context.contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); + } catch (e: Throwable) { + Settings.instance.gestureControls.useSystemBrightness = false + Settings.instance.save() + UIDialogs.toast(context, "useSystemBrightness disabled due to an error") + } + } + + if (!Settings.instance.gestureControls.useSystemBrightness) { _brightnessFactor = 1.0f; }