diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c8e941ad..cbfb9194 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -77,7 +77,6 @@ dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(libs.androidx.activity.ktx)
implementation(libs.androidx.fragment.ktx)
- implementation(libs.androidx.media)
implementation(libs.coil.compose)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.navigation.runtime.android)
diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt
index 6930feee..c8ab2b34 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt
@@ -54,9 +54,9 @@ class Account(val accp: Long, virtualAor: String? = null) {
if (ob != "") {
outbound.add(ob)
i++
- } else {
- break
}
+ else
+ break
}
i = 0
diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt
index 39cd69f3..3ac3d14b 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt
@@ -21,6 +21,7 @@ import android.database.ContentObserver
import android.graphics.ImageDecoder
import android.media.AudioAttributes
import android.media.AudioDeviceInfo
+import android.media.AudioFocusRequest
import android.media.AudioManager
import android.media.AudioManager.MODE_IN_COMMUNICATION
import android.media.AudioManager.MODE_NORMAL
@@ -1092,6 +1093,8 @@ class BaresipService: Service() {
if (call != null) {
stopRinging()
stopMediaPlayer()
+ if (!Call.inCall())
+ abandonAudioFocus(this)
val newCall = call.newCall
if (newCall != null) {
newCall.onHoldCall = null
@@ -2495,6 +2498,7 @@ class BaresipService: Service() {
}
stopRinging()
stopMediaPlayer()
+ abandonAudioFocus(this)
uas.value = emptyList()
uasStatus.value = emptyMap()
callHistory.clear()
@@ -2587,7 +2591,7 @@ class BaresipService: Service() {
private var ns: NoiseSuppressor? = null
private var recorderSessionId = 0
private var btAdapter: BluetoothAdapter? = null
- private var audioFocusRequest: androidx.media.AudioFocusRequestCompat? = null
+ private var audioFocusRequest: AudioFocusRequest? = null
var rt: Ringtone? = null
@@ -2630,20 +2634,16 @@ class BaresipService: Service() {
return true
}
val am = ctx.getSystemService(AUDIO_SERVICE) as AudioManager
- val attributes = androidx.media.AudioAttributesCompat.Builder()
- .setUsage(androidx.media.AudioAttributesCompat.USAGE_VOICE_COMMUNICATION)
- .setContentType(androidx.media.AudioAttributesCompat.CONTENT_TYPE_SPEECH)
+ val attributes = AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
audioFocusRequest =
- androidx.media.AudioFocusRequestCompat.Builder(androidx.media.AudioManagerCompat.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE)
+ AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE)
.setAudioAttributes(attributes)
.setOnAudioFocusChangeListener { }
.build()
- if (androidx.media.AudioManagerCompat.requestAudioFocus(
- am,
- audioFocusRequest!!
- ) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED
- ) {
+ if (am.requestAudioFocus(audioFocusRequest!!) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.d(TAG, "requestAudioFocus granted")
}
else {
@@ -2653,6 +2653,18 @@ class BaresipService: Service() {
return audioFocusRequest != null
}
+ fun abandonAudioFocus(ctx: Context) {
+ if (audioFocusRequest != null) {
+ Log.d(TAG, "Abandoning audio focus")
+ val am = ctx.getSystemService(AUDIO_SERVICE) as AudioManager
+ if (am.abandonAudioFocusRequest(audioFocusRequest!!) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ audioFocusRequest = null
+ } else {
+ Log.e(TAG, "Failed to abandon audio focus")
+ }
+ }
+ }
+
private fun isBluetoothScoOn(am: AudioManager): Boolean {
return if (VERSION.SDK_INT < 31)
@Suppress("DEPRECATION")
diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
index cfd32164..aed2c973 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
@@ -12,6 +12,7 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.graphics.Bitmap
+import android.graphics.Color
import android.graphics.PorterDuff
import android.graphics.PorterDuffXfermode
import android.media.AudioAttributes
@@ -852,9 +853,12 @@ object Utils {
}
fun randomColor(): Int {
- val rnd = Random()
- return android.graphics.Color.argb(255, rnd.nextInt(256), rnd.nextInt(256),
- rnd.nextInt(256))
+ return Color.argb(
+ 255,
+ kotlin.random.Random.nextInt(256),
+ kotlin.random.Random.nextInt(256),
+ kotlin.random.Random.nextInt(256)
+ )
}
fun requestDismissKeyguard(activity: Activity) {
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index ea477a90..6faf9ac7 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -525,7 +525,7 @@
Siirtäjä …
siirtäjä
Tilille \'%1$s\' ei ole konfiguroitu puhelinpalvelun
- tarjoajaa
+ tarjoajaalog
Mobiilipuhelu voidaan tehdä vain puhelinnumeroon
Videopuhelu
Videopyyntö
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d67c5d09..49f9d35e 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,6 @@ lifecycleProcess = "2.10.0"
lifecycleRuntimeCompose = "2.10.0"
lifecycleViewmodelKtx = "2.10.0"
material = "1.13.0"
-media = "1.7.1"
navigationCompose = "2.9.8"
preferenceKtx = "1.2.1"
ui = "1.11.0"
@@ -37,7 +36,6 @@ androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref
androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "lifecycleProcess" }
androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeCompose" }
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
-androidx-media = { module = "androidx.media:media", version.ref = "media" }
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" }
androidx-ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }