From bed9288f21b3494c90da48afb2cad323dbb3f46a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 29 Aug 2024 10:21:01 +0200 Subject: [PATCH] Added device ID setting + fixed some wrong styles --- .../java/org/linphone/core/CoreContext.kt | 10 ++++- .../java/org/linphone/core/CorePreferences.kt | 7 +++ .../fragment/SettingsAdvancedFragment.kt | 1 + .../settings/viewmodel/SettingsViewModel.kt | 18 +++++++- .../res/layout/account_profile_fragment.xml | 10 ++--- .../res/layout/settings_advanced_fragment.xml | 44 ++++++++++++++++--- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 79 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 575792d89..2aab7404b 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -806,8 +806,14 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C } @WorkerThread - private fun computeUserAgent() { - val deviceName = AppUtils.getDeviceName(context) + fun computeUserAgent() { + if (corePreferences.deviceName.isEmpty()) { + Log.i("$TAG Device name not fetched yet, doing it now") + corePreferences.deviceName = AppUtils.getDeviceName(context) + Log.i("$TAG Fetched device name is [${corePreferences.deviceName}]") + } + val deviceName = corePreferences.deviceName + val appName = context.getString(org.linphone.R.string.app_name) val androidVersion = BuildConfig.VERSION_NAME val userAgent = "${appName}Android/$androidVersion ($deviceName) LinphoneSDK" diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 06c77597f..db0e196fb 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -90,6 +90,13 @@ class CorePreferences @UiThread constructor(private val context: Context) { config.setBool("app", "keep_service_alive", value) } + @get:WorkerThread @set:WorkerThread + var deviceName: String + get() = config.getString("app", "device", "").orEmpty().trim() + set(value) { + config.setString("app", "device", value.trim()) + } + /* Call settings */ // This won't be done if bluetooth or wired headset is used diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt index 01cd89c87..146828fca 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt @@ -95,6 +95,7 @@ class SettingsAdvancedFragment : GenericMainFragment() { } override fun onPause() { + viewModel.updateDeviceName() viewModel.updateRemoteProvisioningUrl() super.onPause() diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index a9a6fe64a..205e45c06 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -169,6 +169,7 @@ class SettingsViewModel @UiThread constructor() : GenericViewModel() { // Advanced settings val keepAliveThirdPartyAccountsService = MutableLiveData() + val deviceName = MutableLiveData() val remoteProvisioningUrl = MutableLiveData() val expandAudioDevices = MutableLiveData() @@ -252,6 +253,7 @@ class SettingsViewModel @UiThread constructor() : GenericViewModel() { keepAliveThirdPartyAccountsService.postValue(corePreferences.keepServiceAlive) + deviceName.postValue(corePreferences.deviceName) remoteProvisioningUrl.postValue(core.provisioningUri) setupAudioDevices() @@ -556,10 +558,24 @@ class SettingsViewModel @UiThread constructor() : GenericViewModel() { } } + @UiThread + fun updateDeviceName() { + coreContext.postOnCoreThread { + val newDeviceName = deviceName.value.orEmpty().trim() + if (newDeviceName != corePreferences.deviceName) { + corePreferences.deviceName = newDeviceName + Log.i( + "$TAG Updated device name to [${corePreferences.deviceName}], re-compute user-agent" + ) + coreContext.computeUserAgent() + } + } + } + @UiThread fun updateRemoteProvisioningUrl() { coreContext.postOnCoreThread { core -> - val newProvisioningUri = remoteProvisioningUrl.value.orEmpty() + val newProvisioningUri = remoteProvisioningUrl.value.orEmpty().trim() if (newProvisioningUri != core.provisioningUri) { Log.i("$TAG Updating remote provisioning URI to [$newProvisioningUri]") if (newProvisioningUri.isEmpty()) { diff --git a/app/src/main/res/layout/account_profile_fragment.xml b/app/src/main/res/layout/account_profile_fragment.xml index 2da6dae9c..312ba5e29 100644 --- a/app/src/main/res/layout/account_profile_fragment.xml +++ b/app/src/main/res/layout/account_profile_fragment.xml @@ -202,7 +202,7 @@ app:layout_constraintBottom_toBottomOf="@id/prefix"/> diff --git a/app/src/main/res/layout/settings_advanced_fragment.xml b/app/src/main/res/layout/settings_advanced_fragment.xml index 6edceb060..e5faad970 100644 --- a/app/src/main/res/layout/settings_advanced_fragment.xml +++ b/app/src/main/res/layout/settings_advanced_fragment.xml @@ -101,7 +101,7 @@ app:layout_constraintTop_toBottomOf="@id/keep_alive_service_switch" /> + + + + + app:layout_constraintTop_toBottomOf="@id/device_id"/> Paramètres avancés Garder l\'app en vie via un Service + Nom du périphérique URL de configuration distante Télécharger & appliquer Périphériques audio diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e2ff4d1c2..44e18cb51 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -281,6 +281,7 @@ Advanced settings Keep app alive using Service + Device ID Remote provisioning URL Download & apply Audio devices