From c49870d29e66726723a9b56df58f434a2ff89653 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Sun, 13 Dec 2020 10:07:53 +0200 Subject: [PATCH] Improved handling of volume up/down keys --- .../kotlin/com/tutpro/baresip/MainActivity.kt | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index d96d4a1a..e9b3d0c4 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -10,7 +10,6 @@ import android.media.AudioManager import android.os.Build import android.os.Bundle import android.os.CountDownTimer -import android.os.Handler import android.text.InputType import android.text.TextWatcher import android.text.method.HideReturnsTransformationMethod @@ -49,6 +48,7 @@ class MainActivity : AppCompatActivity() { internal lateinit var aorSpinner: Spinner private lateinit var imm: InputMethodManager private lateinit var nm: NotificationManager + private lateinit var am: AudioManager private lateinit var kgm: KeyguardManager private lateinit var serviceEventReceiver: BroadcastReceiver internal lateinit var quitTimer: CountDownTimer @@ -96,6 +96,7 @@ class MainActivity : AppCompatActivity() { imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + am = getSystemService(AUDIO_SERVICE) as AudioManager serviceEventReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -254,7 +255,6 @@ class MainActivity : AppCompatActivity() { String.format(getString(R.string.invalid_sip_uri), uri)) } else { callUri.isFocusable = false - val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager if (am.mode != AudioManager.MODE_IN_COMMUNICATION) am.mode = AudioManager.MODE_IN_COMMUNICATION callButton.visibility = View.INVISIBLE @@ -603,6 +603,21 @@ class MainActivity : AppCompatActivity() { super.onPause() } + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + when (keyCode) { + KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_VOLUME_UP -> { + Log.d("Baresip", "Adjusting volume $keyCode of stream ${volumeControlStream}") + am.adjustStreamVolume(volumeControlStream, + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) + AudioManager.ADJUST_LOWER else + AudioManager.ADJUST_RAISE, + AudioManager.FLAG_SHOW_UI) + return true + } + } + return super.onKeyDown(keyCode, event) + } + private fun handleServiceEvent(event: String, params: ArrayList) { if (taskId == -1) { Log.d("Baresip", "Omit service event '$event' for task -1") @@ -662,7 +677,7 @@ class MainActivity : AppCompatActivity() { Toast.LENGTH_LONG).show() } "call ringing", "call progress" -> { - volumeControlStream = AudioManager.STREAM_VOICE_CALL + volumeControlStream = AudioManager.STREAM_MUSIC } "call rejected" -> { if (aor == aorSpinner.tag) { @@ -690,7 +705,7 @@ class MainActivity : AppCompatActivity() { } } "call established" -> { - volumeControlStream = AudioManager.STREAM_VOICE_CALL + volumeControlStream = AudioManager.STREAM_MUSIC if (aor == aorSpinner.tag) { dtmf.setText("") dtmf.hint = getString(R.string.dtmf) @@ -1392,6 +1407,7 @@ class MainActivity : AppCompatActivity() { dtmf.visibility = View.INVISIBLE dialpadButton.isEnabled = true infoButton.visibility = View.INVISIBLE + volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE } else { val call = Call.uaCalls(ua, "")[0] callUri.isFocusable = false @@ -1412,6 +1428,7 @@ class MainActivity : AppCompatActivity() { dtmf.visibility = View.INVISIBLE dialpadButton.isEnabled = false infoButton.visibility = View.INVISIBLE + volumeControlStream = AudioManager.STREAM_MUSIC } "incoming" -> { callTitle.text = getString(R.string.incoming_call_from_dots) @@ -1430,6 +1447,7 @@ class MainActivity : AppCompatActivity() { dtmf.visibility = View.INVISIBLE dialpadButton.isEnabled = false infoButton.visibility = View.INVISIBLE + volumeControlStream = AudioManager.STREAM_RING } "connected" -> { if (call.referTo != "") { @@ -1477,6 +1495,7 @@ class MainActivity : AppCompatActivity() { dialpadButton.isEnabled = false infoButton.visibility = View.VISIBLE infoButton.isEnabled = true + volumeControlStream = AudioManager.STREAM_MUSIC } } }