Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

93 righe
3.2 KiB

  1. package de.mlte.soundboard
  2. import android.animation.ObjectAnimator
  3. import android.media.MediaPlayer
  4. import android.os.Bundle
  5. import android.support.v7.app.AppCompatActivity
  6. import android.view.animation.LinearInterpolator
  7. import android.widget.ProgressBar
  8. import android.widget.TextView
  9. import java.util.*
  10. import kotlin.concurrent.timerTask
  11. import android.content.Intent
  12. import android.R.attr.data
  13. import android.app.Activity
  14. import android.net.Uri
  15. class MainActivity : AppCompatActivity() {
  16. override fun onCreate(savedInstanceState: Bundle?) {
  17. super.onCreate(savedInstanceState)
  18. setContentView(R.layout.activity_main)
  19. var player: MediaPlayer? = null
  20. val progressBar = findViewById<ProgressBar>(R.id.progress_bar)
  21. val objectAnimator = ObjectAnimator.ofInt(progressBar, "progress", progressBar.getProgress(), 1000)
  22. objectAnimator.interpolator = LinearInterpolator()
  23. progressBar.max = 1000
  24. objectAnimator.addUpdateListener({ valueAnimator ->
  25. val progress = valueAnimator.animatedValue as Int
  26. progressBar.progress = progress
  27. })
  28. var playing = false
  29. val btn = findViewById<TextView>(R.id.text_view_button)
  30. btn.setOnClickListener {
  31. if (playing) {
  32. player?.let { mp ->
  33. if (mp.isPlaying) {
  34. mp.stop()
  35. }
  36. mp.reset()
  37. mp.release()
  38. }
  39. objectAnimator.cancel()
  40. playing = false
  41. progressBar.progress = 0
  42. } else {
  43. currentUri?.let { uri ->
  44. val mp = MediaPlayer.create(this, uri)
  45. mp.setOnCompletionListener {
  46. progressBar.progress = 0
  47. mp.reset()
  48. mp.release()
  49. playing = false
  50. }
  51. mp.start()
  52. player = mp
  53. playing = true
  54. progressBar.progress = 0
  55. objectAnimator.setDuration(mp.duration.toLong()).start()
  56. }
  57. }
  58. }
  59. btn.setOnLongClickListener {
  60. val intent = Intent(baseContext, EditActivity::class.java)
  61. intent.putExtra("uri", currentUri)
  62. intent.putExtra("caption", btn.text)
  63. startActivityForResult(intent, 1234)
  64. true
  65. }
  66. }
  67. var currentUri: Uri? = null
  68. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  69. super.onActivityResult(requestCode, resultCode, data)
  70. if (requestCode == 1234 && resultCode == Activity.RESULT_OK && data != null) {
  71. val btn = findViewById<TextView>(R.id.text_view_button)
  72. val caption = data.getStringExtra("caption")
  73. if (caption != null) {
  74. btn.setText(caption)
  75. }
  76. currentUri = data.getParcelableExtra<Uri>("uri")
  77. if (currentUri != null) {
  78. grantUriPermission(getPackageName(), currentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
  79. }
  80. }
  81. }
  82. }