diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 048e3324b..dbb96d01b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ - + diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt index ae769eef9..ffd041fcf 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt @@ -30,7 +30,6 @@ import androidx.lifecycle.viewModelScope import kotlin.math.max import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import org.linphone.LinphoneApplication import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R @@ -149,7 +148,7 @@ class ControlsViewModel : ViewModel() { somethingClickedEvent.value = Event(true) coreContext.core.currentCall?.sendDtmf(key) - if (vibrator.hasVibrator() && LinphoneApplication.corePreferences.dtmfKeypadVibration) { + if (vibrator.hasVibrator() && corePreferences.dtmfKeypadVibration) { Compatibility.eventVibration(vibrator) } } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt index 254aa4901..2c44cf1f6 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt @@ -37,7 +37,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() { val vibrateOnIncomingCallListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { - prefs.vibrateWhileIncomingCall = newValue + core.isVibrationOnIncomingCallEnabled = newValue } } val vibrateOnIncomingCall = MutableLiveData() @@ -155,7 +155,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() { init { deviceRingtone.value = core.ring == null - vibrateOnIncomingCall.value = prefs.vibrateWhileIncomingCall + vibrateOnIncomingCall.value = core.isVibrationOnIncomingCallEnabled initEncryptionList() encryptionMandatory.value = core.isMediaEncryptionMandatory diff --git a/app/src/main/java/org/linphone/compatibility/Api21Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Api21Compatibility.kt index 6aa4cc6f1..0ad996427 100644 --- a/app/src/main/java/org/linphone/compatibility/Api21Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Api21Compatibility.kt @@ -56,11 +56,6 @@ class Api21Compatibility { return name } - fun vibrate(vibrator: Vibrator) { - val pattern = longArrayOf(0, 1000, 1000) - vibrator.vibrate(pattern, 1) - } - fun eventVibration(vibrator: Vibrator) { val pattern = longArrayOf(0, 100, 100) vibrator.vibrate(pattern, -1) diff --git a/app/src/main/java/org/linphone/compatibility/Api26Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Api26Compatibility.kt index 8c7346053..f4caf38cd 100644 --- a/app/src/main/java/org/linphone/compatibility/Api26Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Api26Compatibility.kt @@ -116,14 +116,6 @@ class Api26Compatibility { return WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY } - fun vibrate(vibrator: Vibrator) { - val effect = VibrationEffect.createWaveform(longArrayOf(0L, 1000L, 1000L), intArrayOf(0, VibrationEffect.DEFAULT_AMPLITUDE, 0), 1) - val audioAttrs = AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) - .build() - vibrator.vibrate(effect, audioAttrs) - } - fun eventVibration(vibrator: Vibrator) { val effect = VibrationEffect.createWaveform(longArrayOf(0L, 100L, 100L), intArrayOf(0, VibrationEffect.DEFAULT_AMPLITUDE, 0), -1) val audioAttrs = AudioAttributes.Builder() diff --git a/app/src/main/java/org/linphone/compatibility/Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Compatibility.kt index 2420db9ae..cc4b3a773 100644 --- a/app/src/main/java/org/linphone/compatibility/Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Compatibility.kt @@ -114,14 +114,6 @@ class Compatibility { } } - fun vibrate(vibrator: Vibrator) { - if (Version.sdkAboveOrEqual(Version.API26_O_80)) { - Api26Compatibility.vibrate(vibrator) - } else { - Api21Compatibility.vibrate(vibrator) - } - } - fun eventVibration(vibrator: Vibrator) { if (Version.sdkAboveOrEqual(Version.API26_O_80)) { Api26Compatibility.eventVibration(vibrator) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 364ab00de..d2f40d5c5 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -23,10 +23,8 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.graphics.PixelFormat -import android.media.AudioManager import android.os.Handler import android.os.Looper -import android.os.Vibrator import android.security.keystore.KeyGenParameterSpec import android.security.keystore.KeyProperties import android.telephony.PhoneStateListener @@ -130,7 +128,6 @@ class CoreContext(val context: Context, coreConfig: Config) { private var overlayX = 0f private var overlayY = 0f private var callOverlay: View? = null - private var isVibrating = false private var previousCallState = Call.State.Idle private val listener: CoreListenerStub = object : CoreListenerStub() { @@ -167,19 +164,6 @@ class CoreContext(val context: Context, coreConfig: Config) { return } - if (core.callsNb == 1 && corePreferences.vibrateWhileIncomingCall) { - val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - if ((audioManager.ringerMode == AudioManager.RINGER_MODE_VIBRATE || - audioManager.ringerMode == AudioManager.RINGER_MODE_NORMAL)) { - val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - if (vibrator.hasVibrator()) { - Log.i("[Context] Starting incoming call vibration") - Compatibility.vibrate(vibrator) - isVibrating = true - } - } - } - // Starting SDK 24 (Android 7.0) we rely on the fullscreen intent of the call incoming notification if (Version.sdkStrictlyBelow(Version.API24_NOUGAT_70)) { onIncomingReceived() @@ -206,13 +190,6 @@ class CoreContext(val context: Context, coreConfig: Config) { AudioRouteUtils.routeAudioToBluetooth(call) } } else if (state == Call.State.Connected) { - if (isVibrating) { - Log.i("[Context] Stopping vibration") - val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - vibrator.cancel() - isVibrating = false - } - onCallStarted() } else if (state == Call.State.StreamsRunning) { // Do not automatically route audio to bluetooth after first call @@ -234,13 +211,6 @@ class CoreContext(val context: Context, coreConfig: Config) { } } else if (state == Call.State.End || state == Call.State.Error || state == Call.State.Released) { if (core.callsNb == 0) { - if (isVibrating) { - Log.i("[Context] Stopping vibration") - val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - vibrator.cancel() - isVibrating = false - } - removeCallOverlay() } @@ -342,6 +312,12 @@ class CoreContext(val context: Context, coreConfig: Config) { core.staticPicture = corePreferences.staticPicturePath + // Migration code + if (core.config.getBool("app", "incoming_call_vibration", true)) { + core.isVibrationOnIncomingCallEnabled = true + core.config.setBool("app", "incoming_call_vibration", false) + } + initUserCertificates() computeUserAgent() diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 8d3aa5368..a399b6ab4 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -221,12 +221,6 @@ class CorePreferences constructor(private val context: Context) { /* Call */ - var vibrateWhileIncomingCall: Boolean - get() = config.getBool("app", "incoming_call_vibration", true) - set(value) { - config.setBool("app", "incoming_call_vibration", value) - } - var acceptEarlyMedia: Boolean get() = config.getBool("sip", "incoming_calls_early_media", false) set(value) {