use ringtone instead of mediaplayer to play ringtone

This commit is contained in:
Juha Heinanen
2018-07-09 16:29:02 +03:00
parent 378214cbb0
commit 1c9dcb2fda
2 changed files with 27 additions and 11 deletions
@@ -1,6 +1,5 @@
package com.tutpro.baresip package com.tutpro.baresip
import android.app.Notification
import android.app.Notification.VISIBILITY_PUBLIC import android.app.Notification.VISIBILITY_PUBLIC
import android.app.NotificationManager import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
@@ -9,7 +8,6 @@ import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.media.MediaPlayer
import android.net.NetworkInfo import android.net.NetworkInfo
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.os.IBinder import android.os.IBinder
@@ -23,7 +21,6 @@ import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
import java.io.ObjectInputStream import java.io.ObjectInputStream
import android.support.v4.content.LocalBroadcastManager import android.support.v4.content.LocalBroadcastManager
import android.media.RingtoneManager
class BaresipService: Service() { class BaresipService: Service() {
@@ -37,7 +34,6 @@ class BaresipService: Service() {
internal lateinit var nr: BroadcastReceiver internal lateinit var nr: BroadcastReceiver
internal lateinit var wl: PowerManager.WakeLock internal lateinit var wl: PowerManager.WakeLock
internal lateinit var fl: WifiManager.WifiLock internal lateinit var fl: WifiManager.WifiLock
internal lateinit var mp: MediaPlayer
override fun onCreate() { 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() super.onCreate()
} }
@@ -253,7 +244,6 @@ class BaresipService: Service() {
snb.setContent(view) snb.setContent(view)
nm.notify(STATUS_NOTIFICATION_ID, snb.build()) nm.notify(STATUS_NOTIFICATION_ID, snb.build())
} }
mp.start()
/* if (!Utils.isVisible()) { /* if (!Utils.isVisible()) {
nm.cancel(STATUS_NOTIFICATION_ID) nm.cancel(STATUS_NOTIFICATION_ID)
val cnb = NotificationCompat.Builder(this) val cnb = NotificationCompat.Builder(this)
@@ -295,7 +285,6 @@ class BaresipService: Service() {
snb.setContent(view) snb.setContent(view)
snb.setVibrate(null) snb.setVibrate(null)
nm.notify(STATUS_NOTIFICATION_ID, snb.build()) nm.notify(STATUS_NOTIFICATION_ID, snb.build())
mp.stop()
} }
} }
} }
@@ -17,6 +17,8 @@ import android.content.IntentFilter
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.Color import android.graphics.Color
import android.media.AudioManager import android.media.AudioManager
import android.media.Ringtone
import android.media.RingtoneManager
import android.support.v4.content.LocalBroadcastManager import android.support.v4.content.LocalBroadcastManager
import android.support.v7.view.menu.ActionMenuItemView import android.support.v7.view.menu.ActionMenuItemView
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
@@ -26,6 +28,7 @@ import android.widget.RelativeLayout.LayoutParams
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.* import android.widget.*
import android.view.* import android.view.*
import java.util.*
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
@@ -41,6 +44,8 @@ class MainActivity : AppCompatActivity() {
internal lateinit var uaAdapter: UaSpinnerAdapter internal lateinit var uaAdapter: UaSpinnerAdapter
internal lateinit var aorSpinner: Spinner internal lateinit var aorSpinner: Spinner
internal lateinit var am: AudioManager internal lateinit var am: AudioManager
internal lateinit var rt: Ringtone
internal var rtTimer: Timer? = null
internal lateinit var imm: InputMethodManager internal lateinit var imm: InputMethodManager
internal lateinit var nm: NotificationManager internal lateinit var nm: NotificationManager
internal lateinit var serviceEventReceiver: BroadcastReceiver internal lateinit var serviceEventReceiver: BroadcastReceiver
@@ -69,6 +74,9 @@ class MainActivity : AppCompatActivity() {
dtmf = findViewById(R.id.dtmf) as EditText dtmf = findViewById(R.id.dtmf) as EditText
am = getSystemService(Context.AUDIO_SERVICE) as AudioManager 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 imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
@@ -325,6 +333,15 @@ class MainActivity : AppCompatActivity() {
else else
addCallViews(ua, new_call, Call.uaCalls(calls, ua, "in").size * 10) addCallViews(ua, new_call, Call.uaCalls(calls, ua, "in").size * 10)
am.mode = AudioManager.MODE_RINGTONE 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()) { if (Utils.isVisible()) {
Log.d("Baresip", "Baresip is visible") Log.d("Baresip", "Baresip is visible")
val i = Intent(applicationContext, MainActivity::class.java) val i = Intent(applicationContext, MainActivity::class.java)
@@ -385,6 +402,11 @@ class MainActivity : AppCompatActivity() {
history.add(History(aor, call.peerURI, "in", true)) history.add(History(aor, call.peerURI, "in", true))
call.hasHistory = true call.hasHistory = true
} }
if (rtTimer != null) {
rtTimer!!.cancel()
rtTimer = null
if (rt.isPlaying) rt.stop()
}
am.mode = AudioManager.MODE_IN_COMMUNICATION am.mode = AudioManager.MODE_IN_COMMUNICATION
am.isSpeakerphoneOn = false am.isSpeakerphoneOn = false
// am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, // am.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
@@ -509,6 +531,11 @@ class MainActivity : AppCompatActivity() {
History.aorRemoveHistory(history, aor) History.aorRemoveHistory(history, aor)
history.add(History(aor, call.peerURI, "in", false)) history.add(History(aor, call.peerURI, "in", false))
} }
if (rtTimer != null) {
rtTimer!!.cancel()
rtTimer = null
if (rt.isPlaying) rt.stop()
}
} else { } else {
Log.d("Baresip", "Removing outgoing call $uap/$callp/" + Log.d("Baresip", "Removing outgoing call $uap/$callp/" +
call.peerURI) call.peerURI)