diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6e0a8c8f0..73736edf2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -87,7 +87,7 @@ android { applicationId = packageName minSdk = 28 targetSdk = 34 - versionCode = 60000 + versionCode = 600000 // 6.00.000 versionName = "6.0.0" manifestPlaceholders["appAuthRedirectScheme"] = "org.linphone" diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 88dad8960..26fd91c2c 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -132,6 +132,12 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C @WorkerThread override fun onGlobalStateChanged(core: Core, state: GlobalState, message: String) { Log.i("$TAG Global state changed [$state]") + + if (state == GlobalState.On) { + // Wait for GlobalState.ON as some settings modification won't be saved + // in RC file if Core isn't ON + onCoreStarted() + } } @WorkerThread @@ -366,48 +372,57 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C @WorkerThread fun startCore() { - Log.i("$TAG Configuring Core") - core.videoCodecPriorityPolicy = CodecPriorityPolicy.Auto - - val oldVersion = corePreferences.linphoneConfigurationVersion - if (oldVersion < CorePreferences.CURRENT_VERSION) { - Log.i( - "$TAG Migrating configuration from [$oldVersion] to [${CorePreferences.CURRENT_VERSION}]" - ) - val policy = core.videoActivationPolicy.clone() - policy.automaticallyInitiate = false - policy.automaticallyAccept = true - policy.automaticallyAcceptDirection = MediaDirection.RecvOnly - core.videoActivationPolicy = policy - - core.isFecEnabled = true - } - - val videoPolicy = core.videoActivationPolicy - Log.i( - "$TAG Core's video policy is: auto initiate [${videoPolicy.automaticallyInitiate}], auto accept [${videoPolicy.automaticallyAccept}], accept direction [${videoPolicy.automaticallyAcceptDirection}]" - ) - + Log.i("$TAG Starting Core") updateFriendListsSubscriptionDependingOnDefaultAccount() - computeUserAgent() - Log.i("$TAG Core has been configured with user-agent [${core.userAgent}], starting it") - core.start() - - contactsManager.onCoreStarted(core) - telecomManager.onCoreStarted(core) - notificationsManager.onCoreStarted(core) - val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager audioManager.registerAudioDeviceCallback(audioDeviceCallback, coreThread) - corePreferences.linphoneConfigurationVersion = CorePreferences.CURRENT_VERSION + computeUserAgent() + Log.i("$TAG Core has been configured with user-agent [${core.userAgent}], starting it") + core.start() + } - Log.i("$TAG Report Core created and started") + @WorkerThread + fun onCoreStarted() { + Log.i("$TAG Core started, updating configuration if required") + core.videoCodecPriorityPolicy = CodecPriorityPolicy.Auto + + val currentVersion = BuildConfig.VERSION_CODE + val oldVersion = corePreferences.linphoneConfigurationVersion + Log.w("$TAG Current configuration version is [$oldVersion]") + + if (oldVersion < currentVersion) { + Log.w("$TAG Migrating configuration to [$currentVersion]") + + if (oldVersion < 600000) { // 6.0.0 initial release + val policy = core.videoActivationPolicy.clone() + policy.automaticallyInitiate = false + policy.automaticallyAccept = true + policy.automaticallyAcceptDirection = MediaDirection.RecvOnly + core.videoActivationPolicy = policy + Log.i( + "$TAG Updated video activation policy to disable auto initiate, enable auto accept with media direction RecvOnly" + ) + + core.isFecEnabled = true + Log.i("$TAG Video FEC has been enabled") + } + + corePreferences.linphoneConfigurationVersion = currentVersion + Log.w( + "$TAG Core configuration updated to version [${corePreferences.linphoneConfigurationVersion}]" + ) + } if (corePreferences.keepServiceAlive) { startKeepAliveService() } + + contactsManager.onCoreStarted(core) + telecomManager.onCoreStarted(core) + notificationsManager.onCoreStarted(core, oldVersion < 600000) // Re-create channels when migrating from a non 6.0 version + Log.i("$TAG Started contacts, telecom & notifications managers") } @WorkerThread diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 7b8b02788..39e97252c 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -32,7 +32,6 @@ class CorePreferences @UiThread constructor(private val context: Context) { private const val TAG = "[Preferences]" const val CONFIG_FILE_NAME = ".linphonerc" - const val CURRENT_VERSION = 60000 } private var _config: Config? = null @@ -140,7 +139,7 @@ class CorePreferences @UiThread constructor(private val context: Context) { @get:WorkerThread @set:WorkerThread var linphoneConfigurationVersion: Int - get() = config.getInt("app", "config_version", 50200) + get() = config.getInt("app", "config_version", 52005) set(value) { config.setInt("app", "config_version", value) } diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index 656339a63..1334e6f7d 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -63,7 +63,6 @@ import org.linphone.core.Core import org.linphone.core.CoreForegroundService import org.linphone.core.CoreKeepAliveThirdPartyAccountsService import org.linphone.core.CoreListenerStub -import org.linphone.core.CorePreferences import org.linphone.core.Friend import org.linphone.core.MediaDirection import org.linphone.core.tools.Log @@ -450,13 +449,11 @@ class NotificationsManager @MainThread constructor(private val context: Context) } @WorkerThread - fun onCoreStarted(core: Core) { + fun onCoreStarted(core: Core, clearChannels: Boolean) { Log.i("$TAG Core has been started") - val rcVersion = corePreferences.linphoneConfigurationVersion - val clearPreviousChannels = rcVersion < CorePreferences.CURRENT_VERSION coreContext.postOnMainThread { - createChannels(clearPreviousChannels) + createChannels(clearChannels) } core.addListener(coreListener)