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) {