From 1c9dcb2fda6fea2f3852f327f54e0e3bd7d00379 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Mon, 9 Jul 2018 16:29:02 +0300 Subject: [PATCH] use ringtone instead of mediaplayer to play ringtone --- .../com/tutpro/baresip/BaresipService.kt | 11 -------- .../kotlin/com/tutpro/baresip/MainActivity.kt | 27 +++++++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index 48758997..0eec86da 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -1,6 +1,5 @@ package com.tutpro.baresip -import android.app.Notification import android.app.Notification.VISIBILITY_PUBLIC import android.app.NotificationManager import android.app.PendingIntent @@ -9,7 +8,6 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter -import android.media.MediaPlayer import android.net.NetworkInfo import android.net.wifi.WifiManager import android.os.IBinder @@ -23,7 +21,6 @@ import java.io.File import java.io.FileInputStream import java.io.ObjectInputStream import android.support.v4.content.LocalBroadcastManager -import android.media.RingtoneManager class BaresipService: Service() { @@ -37,7 +34,6 @@ class BaresipService: Service() { internal lateinit var nr: BroadcastReceiver internal lateinit var wl: PowerManager.WakeLock internal lateinit var fl: WifiManager.WifiLock - internal lateinit var mp: MediaPlayer override fun onCreate() { @@ -71,11 +67,6 @@ class BaresipService: Service() { } } - val uri = RingtoneManager - .getActualDefaultRingtoneUri(applicationContext, RingtoneManager.TYPE_RINGTONE) - mp = MediaPlayer.create(getApplicationContext(), uri) - mp.isLooping = true - super.onCreate() } @@ -253,7 +244,6 @@ class BaresipService: Service() { snb.setContent(view) nm.notify(STATUS_NOTIFICATION_ID, snb.build()) } - mp.start() /* if (!Utils.isVisible()) { nm.cancel(STATUS_NOTIFICATION_ID) val cnb = NotificationCompat.Builder(this) @@ -295,7 +285,6 @@ class BaresipService: Service() { snb.setContent(view) snb.setVibrate(null) nm.notify(STATUS_NOTIFICATION_ID, snb.build()) - mp.stop() } } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 9f0ee589..5e1a00f9 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -17,6 +17,8 @@ import android.content.IntentFilter import android.content.pm.PackageManager import android.graphics.Color import android.media.AudioManager +import android.media.Ringtone +import android.media.RingtoneManager import android.support.v4.content.LocalBroadcastManager import android.support.v7.view.menu.ActionMenuItemView import android.view.inputmethod.InputMethodManager @@ -26,6 +28,7 @@ import android.widget.RelativeLayout.LayoutParams import android.widget.RelativeLayout import android.widget.* import android.view.* +import java.util.* class MainActivity : AppCompatActivity() { @@ -41,6 +44,8 @@ class MainActivity : AppCompatActivity() { internal lateinit var uaAdapter: UaSpinnerAdapter internal lateinit var aorSpinner: Spinner internal lateinit var am: AudioManager + internal lateinit var rt: Ringtone + internal var rtTimer: Timer? = null internal lateinit var imm: InputMethodManager internal lateinit var nm: NotificationManager internal lateinit var serviceEventReceiver: BroadcastReceiver @@ -69,6 +74,9 @@ class MainActivity : AppCompatActivity() { dtmf = findViewById(R.id.dtmf) as EditText am = getSystemService(Context.AUDIO_SERVICE) as AudioManager + val rtUri = RingtoneManager.getActualDefaultRingtoneUri(applicationContext, + RingtoneManager.TYPE_RINGTONE) + rt = RingtoneManager.getRingtone(applicationContext, rtUri) imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager @@ -325,6 +333,15 @@ class MainActivity : AppCompatActivity() { else addCallViews(ua, new_call, Call.uaCalls(calls, ua, "in").size * 10) am.mode = AudioManager.MODE_RINGTONE + rt.play() + rtTimer = Timer() + rtTimer!!.scheduleAtFixedRate(object : TimerTask() { + override fun run() { + if (!rt.isPlaying()) { + rt.play() + } + } + }, 1000 * 1, 1000 * 1) if (Utils.isVisible()) { Log.d("Baresip", "Baresip is visible") val i = Intent(applicationContext, MainActivity::class.java) @@ -385,6 +402,11 @@ class MainActivity : AppCompatActivity() { history.add(History(aor, call.peerURI, "in", true)) call.hasHistory = true } + if (rtTimer != null) { + rtTimer!!.cancel() + rtTimer = null + if (rt.isPlaying) rt.stop() + } am.mode = AudioManager.MODE_IN_COMMUNICATION am.isSpeakerphoneOn = false // am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, @@ -509,6 +531,11 @@ class MainActivity : AppCompatActivity() { History.aorRemoveHistory(history, aor) history.add(History(aor, call.peerURI, "in", false)) } + if (rtTimer != null) { + rtTimer!!.cancel() + rtTimer = null + if (rt.isPlaying) rt.stop() + } } else { Log.d("Baresip", "Removing outgoing call $uap/$callp/" + call.peerURI)