2020-08-25 12:07:20 +00:00
|
|
|
package oppen.tva.ui.audio_player
|
2020-08-25 11:57:35 +00:00
|
|
|
|
|
|
|
import android.content.Context
|
2020-08-26 16:13:26 +00:00
|
|
|
import android.content.Intent
|
2020-08-25 11:57:35 +00:00
|
|
|
import android.media.MediaMetadataRetriever
|
|
|
|
import android.media.MediaPlayer
|
2020-08-25 12:07:20 +00:00
|
|
|
import android.view.MenuInflater
|
|
|
|
import android.view.View
|
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
|
import androidx.core.view.MenuCompat
|
2020-08-25 11:57:35 +00:00
|
|
|
import oppen.tva.R
|
|
|
|
import oppen.tva.databinding.ActivityTvaBinding
|
|
|
|
import oppen.tva.io.TvaState
|
2020-08-26 16:13:26 +00:00
|
|
|
import oppen.tva.ui.CREATE_IMAGE_FILE_REQ
|
2020-08-25 11:57:35 +00:00
|
|
|
import oppen.visible
|
2020-08-26 16:13:26 +00:00
|
|
|
import java.io.File
|
2020-08-25 11:57:35 +00:00
|
|
|
|
|
|
|
object AudioPlayer {
|
|
|
|
|
2020-08-26 16:13:26 +00:00
|
|
|
fun play(context: Context,
|
|
|
|
binding: ActivityTvaBinding,
|
|
|
|
mediaPlayer: MediaPlayer,
|
|
|
|
state: TvaState.ResponseAudio,
|
|
|
|
onSaveAudio: (state: TvaState.ResponseAudio) -> Unit){
|
2020-08-25 11:57:35 +00:00
|
|
|
val metadataRetriever = MediaMetadataRetriever()
|
|
|
|
metadataRetriever.setDataSource(context, state.cacheUri)
|
|
|
|
|
|
|
|
val artist = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST)
|
|
|
|
val trackName = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE)
|
|
|
|
|
|
|
|
binding.audioTitle.text = "$trackName - $artist"
|
|
|
|
|
2020-08-26 15:41:48 +00:00
|
|
|
mediaPlayer.reset()
|
2020-08-25 11:57:35 +00:00
|
|
|
mediaPlayer.setDataSource(context, state.cacheUri)
|
|
|
|
mediaPlayer.prepare()
|
|
|
|
|
|
|
|
binding.audioPlayButton.setImageResource(R.drawable.vector_pause)
|
|
|
|
|
|
|
|
mediaPlayer.setOnCompletionListener { player ->
|
|
|
|
binding.audioPlayButton.setImageResource(R.drawable.vector_play)
|
|
|
|
}
|
|
|
|
|
|
|
|
binding.audioPlayButton.setOnClickListener {
|
|
|
|
if(mediaPlayer.isPlaying){
|
|
|
|
binding.audioPlayButton.setImageResource(R.drawable.vector_play)
|
|
|
|
mediaPlayer.pause()
|
|
|
|
}else{
|
|
|
|
binding.audioPlayButton.setImageResource(R.drawable.vector_pause)
|
|
|
|
mediaPlayer.start()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mediaPlayer.setOnInfoListener { _, what, extra ->
|
|
|
|
when(what){
|
|
|
|
MediaPlayer.MEDIA_INFO_UNKNOWN -> println("MEDIA_INFO_UNKNOWN")
|
|
|
|
MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING-> println("MEDIA_INFO_VIDEO_TRACK_LAGGING")
|
|
|
|
MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START-> println("MEDIA_INFO_VIDEO_RENDERING_START")
|
|
|
|
MediaPlayer.MEDIA_INFO_BUFFERING_START-> println("MEDIA_INFO_BUFFERING_START")
|
|
|
|
MediaPlayer.MEDIA_INFO_BUFFERING_END-> println("MEDIA_INFO_BUFFERING_END")
|
|
|
|
MediaPlayer.MEDIA_INFO_BAD_INTERLEAVING-> println("MEDIA_INFO_BAD_INTERLEAVING")
|
|
|
|
MediaPlayer.MEDIA_INFO_NOT_SEEKABLE-> println("MEDIA_INFO_NOT_SEEKABLE")
|
|
|
|
MediaPlayer.MEDIA_INFO_METADATA_UPDATE-> println("MEDIA_INFO_METADATA_UPDATE")
|
|
|
|
MediaPlayer.MEDIA_INFO_UNSUPPORTED_SUBTITLE-> println("MEDIA_INFO_UNSUPPORTED_SUBTITLE")
|
|
|
|
MediaPlayer.MEDIA_INFO_SUBTITLE_TIMED_OUT-> println("MEDIA_INFO_SUBTITLE_TIMED_OUT")
|
|
|
|
}
|
|
|
|
|
|
|
|
true
|
|
|
|
}
|
|
|
|
|
|
|
|
mediaPlayer.setOnErrorListener{ _, i: Int, i1: Int ->
|
|
|
|
println("Error Listener.... $i, $i1")
|
|
|
|
true
|
|
|
|
}
|
|
|
|
|
|
|
|
binding.audioPlayer.visible(true)
|
|
|
|
mediaPlayer.start()
|
2020-08-25 12:07:20 +00:00
|
|
|
|
|
|
|
binding.audioOverflow.setOnClickListener {
|
|
|
|
val popup = PopupMenu(context, binding.audioOverflow)
|
|
|
|
val inflater: MenuInflater = popup.menuInflater
|
|
|
|
inflater.inflate(R.menu.audio_overflow, popup.menu)
|
|
|
|
popup.setOnMenuItemClickListener { menuItem ->
|
|
|
|
when(menuItem.itemId){
|
2020-08-26 16:13:26 +00:00
|
|
|
R.id.audio_overflow_save_file -> {
|
|
|
|
onSaveAudio(state)
|
|
|
|
}
|
2020-08-25 12:07:20 +00:00
|
|
|
R.id.audio_overflow_dismiss -> {
|
|
|
|
mediaPlayer.stop()
|
2020-08-26 16:13:26 +00:00
|
|
|
mediaPlayer.release()
|
2020-08-25 12:07:20 +00:00
|
|
|
binding.audioPlayer.visible(false)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
true
|
|
|
|
}
|
|
|
|
MenuCompat.setGroupDividerEnabled(popup.menu, true)
|
|
|
|
popup.show()
|
|
|
|
}
|
2020-08-25 11:57:35 +00:00
|
|
|
}
|
|
|
|
}
|