MainActivity.kt
package com.cfsuman.kotlintutorials
import android.app.Activity
import android.content.Context
import android.media.MediaPlayer
import android.media.Ringtone
import android.media.RingtoneManager
import android.os.Bundle
import android.provider.Settings
import android.widget.*
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// get the widgets reference from XML layout
val textView = findViewById<TextView>(R.id.textView)
val buttonPlay = findViewById<Button>(R.id.buttonPlay)
val buttonStop = findViewById<Button>(R.id.buttonStop)
val buttonMediaPlay = findViewById<Button>(R.id.buttonMediaPlay)
val buttonMediaStop = findViewById<Button>(R.id.buttonMediaStop)
// Get the device default ringtone
val ringtone: Ringtone = defaultRingtone
// Display the default ringtone title
textView.text = "Ringtone : ${ringtone.getTitle(applicationContext)}"
// Play the default ringtone
buttonPlay.setOnClickListener{
if (!ringtone.isPlaying){
ringtone.play()
}
}
// Stop playing ringtone
buttonStop.setOnClickListener{
if (ringtone.isPlaying){
ringtone.stop()
}
}
// Get the media player for default ringtone
val mediaPlayer: MediaPlayer = defaultRingtonePlayer()
// Play default ringtone using media player
buttonMediaPlay.setOnClickListener{
if (!mediaPlayer.isPlaying)mediaPlayer.start()
}
// Stop media player
buttonMediaStop.setOnClickListener{
if (mediaPlayer.isPlaying){
mediaPlayer.stop()
}
}
}
}
// Extension property to get default ringtone
val Context.defaultRingtone:Ringtone
get() {
val uri = RingtoneManager.getDefaultUri(
RingtoneManager.TYPE_RINGTONE)
return RingtoneManager.getRingtone(this, uri)
}
// Get a media player to play default ringtone
fun Context.defaultRingtonePlayer():MediaPlayer{
return MediaPlayer.create(this,
Settings.System.DEFAULT_RINGTONE_URI)
}
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="#DCDCDC"
android:padding="24dp">
<Button
android:id="@+id/buttonPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Play Default Ringtone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Stop"
app:layout_constraintStart_toStartOf="@+id/buttonPlay"
app:layout_constraintTop_toBottomOf="@+id/buttonPlay" />
<Button
android:id="@+id/buttonMediaPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp"
android:text="Play Using Media Player"
app:layout_constraintStart_toStartOf="@+id/buttonStop"
app:layout_constraintTop_toBottomOf="@+id/buttonStop" />
<Button
android:id="@+id/buttonMediaStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Stop Media Player"
app:layout_constraintStart_toStartOf="@+id/buttonMediaPlay"
app:layout_constraintTop_toBottomOf="@+id/buttonMediaPlay" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:fontFamily="sans-serif"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonMediaStop" />
</androidx.constraintlayout.widget.ConstraintLayout>