Can someone help me to loop my audio source? I'm new to using the MediaPlayer, but I cannot get it to loop the sound. The sound plays, then quits and never starts up again.
I have read countless articles, and tried adding listeners to detect errors and end of play, but they are not getting triggered.
Here is a sample of my Kotlin code
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Code for activity_main.xml
setContentView(R.layout.activity_main)
// Init
var textView: TextView
var txtSceneDesc: TextView
var txtPlayerCmd: TextView
var txtSceneText: String
textView = findViewById(R.id.txtSceneDescription)
textView.movementMethod = ScrollingMovementMethod()
txtSceneDesc = findViewById(R.id.txtSceneDescription)
txtPlayerCmd = findViewById(R.id.textInputEditText)
var mediaPlayer: MediaPlayer? = null // for playing sounds
//val id = this.resources.getIdentifier("ocean_waves.mp3", "raw", this.packageName)
val id = getResources().getIdentifier(
"ocean_waves",
"raw", getPackageName()
);
var r_Sound_Water: Int = id
// Completion listener
mediaPlayer?.setOnCompletionListener {
Toast.makeText(this@MainActivity, "Playback Completed", Toast.LENGTH_SHORT).show()
mediaPlayer?.reset()
mediaPlayer?.start()
// You can perform other actions here as needed.
}
// Error listener
mediaPlayer?.setOnErrorListener { MediaPlayer, what, extra ->
Toast.makeText(this@MainActivity, "Playback Error", Toast.LENGTH_SHORT).show()
// Return true if the error was handled, false otherwise.
true
}
if (mediaPlayer == null) {
Toast.makeText(this@MainActivity, "Media player is null", Toast.LENGTH_SHORT).show()
mediaPlayer = MediaPlayer.create(this@MainActivity, r_Sound_Water)
mediaPlayer.isLooping = true
mediaPlayer.start()
} else {
Toast.makeText(this@MainActivity, "Media Player is assigned", Toast.LENGTH_SHORT).show()
mediaPlayer.start()
}
textView.text = "Run 29"
// End code for activity_main.xml
}
}
I think
mediaPlayer.isLooping = true
is enough to accomplish your intent.For simplicity, below code should work without problem:
Please examine it for yourself.
Your problem's root may be other place.