Improved starting/stopping of recording play
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.tutpro.baresip
|
package com.tutpro.baresip
|
||||||
|
|
||||||
|
import android.media.MediaPlayer
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
@@ -11,6 +12,8 @@ class CallDetailsActivity : AppCompatActivity() {
|
|||||||
private lateinit var binding: ActivityCallDetailsBinding
|
private lateinit var binding: ActivityCallDetailsBinding
|
||||||
private lateinit var aor: String
|
private lateinit var aor: String
|
||||||
private lateinit var peer: String
|
private lateinit var peer: String
|
||||||
|
private val decPlayer = MediaPlayer()
|
||||||
|
private val encPlayer = MediaPlayer()
|
||||||
private var position = 0
|
private var position = 0
|
||||||
|
|
||||||
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
||||||
@@ -38,7 +41,8 @@ class CallDetailsActivity : AppCompatActivity() {
|
|||||||
headerView.text = headerText
|
headerView.text = headerText
|
||||||
|
|
||||||
val listView = binding.calls
|
val listView = binding.calls
|
||||||
listView.adapter = CallDetailsAdapter(this, CallsActivity.uaHistory[position].details)
|
listView.adapter = CallDetailsAdapter(this, CallsActivity.uaHistory[position].details,
|
||||||
|
decPlayer, encPlayer)
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
|
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
|
||||||
}
|
}
|
||||||
@@ -65,6 +69,10 @@ class CallDetailsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private fun goBack() {
|
private fun goBack() {
|
||||||
BaresipService.activities.remove("call_details,$aor,$peer,$position")
|
BaresipService.activities.remove("call_details,$aor,$peer,$position")
|
||||||
|
decPlayer.stop()
|
||||||
|
decPlayer.release()
|
||||||
|
encPlayer.stop()
|
||||||
|
encPlayer.release()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,9 @@ import java.text.SimpleDateFormat
|
|||||||
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class CallDetailsAdapter(private val ctx: Context, private val rows: ArrayList<CallRow.Details>) :
|
class CallDetailsAdapter(private val ctx: Context, private val rows: ArrayList<CallRow.Details>,
|
||||||
ArrayAdapter<CallRow.Details>(ctx, R.layout.call_detail_row, rows) {
|
private val decPlayer: MediaPlayer, private val encPlayer: MediaPlayer) :
|
||||||
|
ArrayAdapter<CallRow.Details>(ctx, R.layout.call_detail_row, rows) {
|
||||||
|
|
||||||
private val layoutInflater =
|
private val layoutInflater =
|
||||||
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||||
@@ -78,14 +79,15 @@ class CallDetailsAdapter(private val ctx: Context, private val rows: ArrayList<C
|
|||||||
val recording = rows[position].recording
|
val recording = rows[position].recording
|
||||||
if (recording[0] != "") {
|
if (recording[0] != "") {
|
||||||
viewHolder.durationView.typeface = Typeface.DEFAULT_BOLD
|
viewHolder.durationView.typeface = Typeface.DEFAULT_BOLD
|
||||||
var players: Array<MediaPlayer>? = null
|
|
||||||
viewHolder.durationView.setOnClickListener {
|
viewHolder.durationView.setOnClickListener {
|
||||||
if (players == null || (!players!![0].isPlaying && !players!![1].isPlaying)) {
|
if (!decPlayer.isPlaying && !encPlayer.isPlaying) {
|
||||||
players = Utils.playRecording(ctx, recording)
|
decPlayer.reset()
|
||||||
} else {
|
encPlayer.reset()
|
||||||
players!![0].stop()
|
Utils.playRecording(ctx, viewHolder.durationView, recording, decPlayer, encPlayer)
|
||||||
players!![1].stop()
|
} else if (decPlayer.isPlaying && encPlayer.isPlaying) {
|
||||||
players = null
|
decPlayer.stop()
|
||||||
|
encPlayer.stop()
|
||||||
|
viewHolder.durationView.setTextColor(ContextCompat.getColor(ctx, R.color.colorItemText))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -995,10 +995,9 @@ object Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun playRecording(ctx: Context, recording: Array<String>): Array<MediaPlayer> {
|
fun playRecording(ctx: Context, textView: TextView, recording: Array<String>,
|
||||||
Log.d(TAG, "Playing recording $recording")
|
decPlayer: MediaPlayer, encPlayer: MediaPlayer) {
|
||||||
val decPlayer = MediaPlayer()
|
Log.d(TAG, "Playing recordings ${recording[0]} and ${recording[1]}")
|
||||||
val encPlayer = MediaPlayer()
|
|
||||||
decPlayer.apply {
|
decPlayer.apply {
|
||||||
setAudioAttributes(
|
setAudioAttributes(
|
||||||
AudioAttributes.Builder()
|
AudioAttributes.Builder()
|
||||||
@@ -1017,12 +1016,13 @@ object Utils {
|
|||||||
setOnPreparedListener {
|
setOnPreparedListener {
|
||||||
it.start()
|
it.start()
|
||||||
decPlayer.start()
|
decPlayer.start()
|
||||||
|
textView.setTextColor(ContextCompat.getColor(ctx, R.color.colorAccent))
|
||||||
Log.d(TAG, "Started players")
|
Log.d(TAG, "Started players")
|
||||||
}
|
}
|
||||||
setOnCompletionListener {
|
setOnCompletionListener {
|
||||||
Log.d(TAG, "Stopping encPlayer")
|
Log.d(TAG, "Stopping encPlayer")
|
||||||
it.stop()
|
it.stop()
|
||||||
it.release()
|
textView.setTextColor(ContextCompat.getColor(ctx, R.color.colorItemText))
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
val file = recording[0]
|
val file = recording[0]
|
||||||
@@ -1042,7 +1042,6 @@ object Utils {
|
|||||||
setOnCompletionListener {
|
setOnCompletionListener {
|
||||||
Log.d(TAG, "Stopping decPlayer")
|
Log.d(TAG, "Stopping decPlayer")
|
||||||
it.stop()
|
it.stop()
|
||||||
it.release()
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
val file = recording[1]
|
val file = recording[1]
|
||||||
@@ -1058,7 +1057,7 @@ object Utils {
|
|||||||
Log.e(TAG, "decPlayer Exception: $e")
|
Log.e(TAG, "decPlayer Exception: $e")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return arrayOf(encPlayer, decPlayer)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
|
|||||||
Reference in New Issue
Block a user