Как воспроизвести аудио на Kotlin в Android Studio

Для первого примера в Android Studio проще всего использовать MediaPlayer и файл в папке res/raw. Положите туда файл, например click.mp3, затем создайте плеер и вызовите start()

Пример для Activity:

class MainActivity : AppCompatActivity() {
    private var player: MediaPlayer? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.playButton)

        button.setOnClickListener {
            player = MediaPlayer.create(this, R.raw.click)
            player?.start()
        }
    }

    override fun onDestroy() {
        player?.release()
        player = null
        super.onDestroy()
    }
}

Куда положить аудио

Создайте папку:

app/src/main/res/raw

Положите туда файл с простым именем: click.mp3, sound.wav, intro.mp3. В имени не должно быть пробелов, больших букв и странных символов. Android-ресурсы любят аккуратные имена в нижнем регистре

После этого файл будет доступен как:

R.raw.click

Как проверить

  1. Соберите проект.
  2. Запустите приложение на эмуляторе или телефоне.
  3. Нажмите кнопку.
  4. Убедитесь, что звук проигрался.

Если звука нет, проверьте громкость устройства и убедитесь, что файл действительно попал в res/raw, а не в assets или другую папку

Важный момент про ресурсы

MediaPlayer нужно освобождать через release(), когда он больше не нужен. В учебном примере это делается в onDestroy. В реальном приложении лучше продумать жизненный цикл: что будет при повороте экрана, уходе приложения в фон и повторном нажатии кнопки

Если звук короткий и нужен как эффект клика, иногда удобнее смотреть в сторону SoundPool. Если это музыка или длинное аудио, чаще выбирают более современный подход через Media3

Как не создавать новый плеер при каждом клике

Для короткого учебного примера код выше понятен, но при частых нажатиях лучше создать player один раз:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    player = MediaPlayer.create(this, R.raw.click)

    findViewById<Button>(R.id.playButton).setOnClickListener {
        player?.start()
    }
}

Если звук уже проигрывается и нужно начать сначала, можно вызвать seekTo(0) перед start(). Для простого эффекта этого обычно хватает

Частые ошибки

Файл не виден как R.raw.name

Проверьте имя файла. Оно должно быть в нижнем регистре, без пробелов и дефисов

Звук накладывается сам на себя

Если пользователь быстро нажимает кнопку, вы можете создавать несколько плееров. Для первого примера это терпимо, но дальше лучше переиспользовать player или блокировать повторный запуск

Приложение держит ресурсы

Не забывайте release(). Иначе плеер может занимать системные ресурсы дольше, чем нужно

Файл слишком большой

Не кладите длинные треки и большие аудиофайлы в пример без понимания жизненного цикла. Для первого теста возьмите короткий mp3 на пару секунд

Что почитать дальше по Kotlin

Если нужен общий маршрут по теме, откройте рубрику Kotlin. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x