use ringtone instead of mediaplayer to play ringtone
This commit is contained in:
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user