The Media Player class can be used to control the playback of audio/video files and streams.
Playback of audio/video files and streams on Android can be controlled in a variety of ways. One of these methods is to use the MediaPlayer class.
A software or hardware device that can play media files or disks. For example, many modern media players are capable of playing audio files, for example. MP3 song files and video files, for example. B. The short video clip or movie to be played.
Preview: Media Player
<–Media Player Example
File:MainActivity.kt
package com.example.musicplayer import android.media.MediaPlayer import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.view.Window import android.view.WindowManager import android.widget.Button import android.widget.SeekBar import android.widget.TextView import android.widget.Toast class MainActivity : AppCompatActivity() { private var handler: Handler = Handler() private lateinit var mediaPlayer: MediaPlayer private lateinit var runnable: Runnable private var Pause: Boolean = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) setContentView(R.layout.activity_main) //Play Button findViewById<Button>(R.id.Startbutton).setOnClickListener { if (Pause) { mediaPlayer.seekTo(mediaPlayer.currentPosition) mediaPlayer.start() Pause = false Toast.makeText(this, "Music playing", Toast.LENGTH_SHORT).show() } else { mediaPlayer = MediaPlayer.create(this, R.raw.spk) mediaPlayer.start() Toast.makeText(this, "Music playing", Toast.LENGTH_SHORT).show() } SeekBar() findViewById<Button>(R.id.Startbutton).isEnabled = false findViewById<Button>(R.id.PauseBtn).isEnabled = true findViewById<Button>(R.id.StopBtn).isEnabled = true mediaPlayer.setOnCompletionListener { findViewById<Button>(R.id.Startbutton).isEnabled = true findViewById<Button>(R.id.PauseBtn).isEnabled = false findViewById<Button>(R.id.StopBtn).isEnabled = false Toast.makeText(this, "End", Toast.LENGTH_SHORT).show() } } //Pause Button findViewById<Button>(R.id.PauseBtn).setOnClickListener { if (mediaPlayer.isPlaying) { mediaPlayer.pause() Pause = true findViewById<Button>(R.id.Startbutton).isEnabled = true findViewById<Button>(R.id.PauseBtn).isEnabled = false findViewById<Button>(R.id.StopBtn).isEnabled = true } } //Stop Button findViewById<Button>(R.id.StopBtn).setOnClickListener { if (mediaPlayer.isPlaying || Pause.equals(true)) { Pause = false findViewById<SeekBar>(R.id.seek_bar_id).setProgress(0) mediaPlayer.stop() mediaPlayer.reset() mediaPlayer.release() handler.removeCallbacks(runnable) findViewById<Button>(R.id.Startbutton).isEnabled = true findViewById<Button>(R.id.PauseBtn).isEnabled = false findViewById<Button>(R.id.StopBtn).isEnabled = false findViewById<TextView>(R.id.left_sec).text = "" findViewById<TextView>(R.id.right_sec).text = "" Toast.makeText(this, "Music stop", Toast.LENGTH_SHORT) } } //seek bar Setting findViewById<SeekBar>(R.id.seek_bar_id).setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar?, i: Int, b: Boolean) { if (b) { mediaPlayer.seekTo(i * 1000) } } override fun onStartTrackingTouch(seekBar: SeekBar?) { TODO("Not yet implemented") } override fun onStopTrackingTouch(seekBar: SeekBar?) { TODO("Not yet implemented") } }) } private fun SeekBar() { findViewById<SeekBar>(R.id.seek_bar_id).max = mediaPlayer.seconds runnable = Runnable { findViewById<SeekBar>(R.id.seek_bar_id).progress = mediaPlayer.currentSeconds findViewById<TextView>(R.id.left_sec).text = "${mediaPlayer.currentSeconds} sec" val diff = mediaPlayer.seconds - mediaPlayer.currentSeconds findViewById<TextView>(R.id.right_sec).text = "$diff sec" handler.postDelayed(runnable, 500) } handler.postDelayed(runnable, 500) } } val MediaPlayer.seconds: Int get() { return this.duration / 500 } val MediaPlayer.currentSeconds: Int get() { return this.currentPosition / 500 }
File:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" tools:context=".MainActivity"> <Button android:id="@+id/PauseBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:enabled="false" android:text="Pause" android:textColor="@color/teal_200" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.501" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.791" /> <Button android:id="@+id/Startbutton" android:layout_width="88dp" android:layout_height="wrap_content" android:layout_marginBottom="63dp" android:text="Play" android:textColor="@color/teal_200" app:layout_constraintBottom_toTopOf="@+id/PauseBtn" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1.0" /> <Button android:id="@+id/StopBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:enabled="false" android:text="Stop" android:textColor="@color/teal_200" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.501" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.929" /> <TextView android:id="@+id/left_sec" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:textColor="@color/black" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imageView" /> <TextView android:id="@+id/right_sec" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="8dp" android:layout_marginEnd="52dp" android:layout_marginRight="52dp" android:textColor="@color/black" app:layout_constraintEnd_toEndOf="@+id/imageView" app:layout_constraintTop_toBottomOf="@+id/imageView" /> <SeekBar android:id="@+id/seek_bar_id" style="@style/Widget.AppCompat.SeekBar.Discrete" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@id/left_sec" android:layout_marginBottom="48dp" android:saveEnabled="false" app:layout_constraintBottom_toTopOf="@+id/Startbutton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" /> <ImageView android:id="@+id/imageView" android:layout_width="410dp" android:layout_height="330dp" android:layout_marginBottom="19dp" android:scaleType="centerCrop" android:src="@drawable/music" app:layout_constraintBottom_toTopOf="@+id/seek_bar_id" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.2" /> </androidx.constraintlayout.widget.ConstraintLayout>
- Let us try to run your application. I’m assuming you’ve connected your Android smartphone to your PC. Open one of your project’s activity files and click the Run icon from the toolbar to run the app in android studio.
- By default, you would see the pause and stop button disabled. Now press the play button and it would become disabled and the pause and stop button become enabled. It is shown in the above video.
- Up till now, the music has been playing. Now press the pause button and the play and stop buttons are enabled and the pause button is disabled.
- If we press the stop button then the music will stop and the play button is enabled, if we press the play button again then the music will start from an initial state.
- While you are doing other things on your phone, your music will continue to play in the background. You must exit this application from background activities in order to stop it.
How to Create Calculator App with Example in Android