Ensure that ringback and busy tone are played in communication mode
This commit is contained in:
@@ -1818,14 +1818,22 @@ class BaresipService: Service() {
|
|||||||
private fun playRingBack() {
|
private fun playRingBack() {
|
||||||
if (mediaPlayer == null) {
|
if (mediaPlayer == null) {
|
||||||
val name = "ringback_$toneCountry"
|
val name = "ringback_$toneCountry"
|
||||||
val resourceId = resources.getIdentifier(
|
val resourceId = resources.getIdentifier(name, "raw", packageName)
|
||||||
name,
|
|
||||||
"raw",
|
|
||||||
packageName)
|
|
||||||
if (resourceId != 0) {
|
if (resourceId != 0) {
|
||||||
mediaPlayer = MediaPlayer.create(this, resourceId)
|
val audioAttributes = AudioAttributes.Builder()
|
||||||
mediaPlayer?.isLooping = true
|
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
|
||||||
mediaPlayer?.start()
|
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
mediaPlayer = MediaPlayer().apply {
|
||||||
|
setAudioAttributes(audioAttributes)
|
||||||
|
val afd = resources.openRawResourceFd(resourceId)
|
||||||
|
setDataSource(afd.fileDescriptor, afd.startOffset, afd.length)
|
||||||
|
afd.close()
|
||||||
|
isLooping = true
|
||||||
|
prepare()
|
||||||
|
start()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "Ringback tone $name.wav not found")
|
Log.e(TAG, "Ringback tone $name.wav not found")
|
||||||
}
|
}
|
||||||
@@ -1834,19 +1842,27 @@ class BaresipService: Service() {
|
|||||||
|
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
private fun playBusy() {
|
private fun playBusy() {
|
||||||
if (mediaPlayer == null ) {
|
if (mediaPlayer == null) {
|
||||||
val name = "busy_$toneCountry"
|
val name = "busy_$toneCountry"
|
||||||
val resourceId = resources.getIdentifier(
|
val resourceId = resources.getIdentifier(name, "raw", packageName)
|
||||||
name,
|
|
||||||
"raw",
|
|
||||||
packageName)
|
|
||||||
if (resourceId != 0) {
|
if (resourceId != 0) {
|
||||||
mediaPlayer = MediaPlayer.create(this, resourceId)
|
val audioAttributes = AudioAttributes.Builder()
|
||||||
mediaPlayer?.setOnCompletionListener {
|
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
|
||||||
stopMediaPlayer()
|
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
|
||||||
ensureCommunicationMode()
|
.build()
|
||||||
|
|
||||||
|
mediaPlayer = MediaPlayer().apply {
|
||||||
|
setAudioAttributes(audioAttributes)
|
||||||
|
val afd = resources.openRawResourceFd(resourceId)
|
||||||
|
setDataSource(afd.fileDescriptor, afd.startOffset, afd.length)
|
||||||
|
afd.close()
|
||||||
|
setOnCompletionListener {
|
||||||
|
stopMediaPlayer()
|
||||||
|
ensureCommunicationMode()
|
||||||
|
}
|
||||||
|
prepare()
|
||||||
|
start()
|
||||||
}
|
}
|
||||||
mediaPlayer?.start()
|
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "Busy tone $name.wav not found")
|
Log.e(TAG, "Busy tone $name.wav not found")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user