Kotlin MediaPlayer простое использование - PullRequest
1 голос
/ 06 октября 2019

Я новичок в Kotlin и пытаюсь создать простой AudioManager (оболочка MediaPlayer).

Я хочу, чтобы класс воспроизводил аудио.

Вот мой класс:

package com.example.myappname

import android.media.MediaPlayer

interface AudioManagerInput {
    fun startSound()
    fun stopSound()
}

class AudioManager: AudioManagerInput {

    // Instance variables

    private var mediaPlayer: MediaPlayer? = null

    // AudioManagerInput methods

    override fun startSound() {
        if (mediaPlayer == null) {
            mediaPlayer = MediaPlayer()
            mediaPlayer?.setDataSource("R.raw.songone") // ???
        }
        mediaPlayer?.start()
    }

    override fun stopSound() {
        mediaPlayer?.stop()
    }
}

У меня проблемы с настройкой песни.

Я ищу, чтобы загрузить локальный файл R.raw.songone, который является WAV-файлом и находится в res/raw.

Как я могу получить строку по ее пути?

Я изучил учебники, в которых содержатся другие решения по использованию MediaPlayer, но у меня были проблемы с незнанием того, что импортировать, не с возможностью вызова create,или context не найден (что бы это ни было).

1 Ответ

2 голосов
/ 06 октября 2019

Импорт контекста в AudioManager:

import android.content.Context

Изменить класс или подпись его метода следующим образом:

class AudioManager(private val context: Context): AudioManagerInput

Теперь мы можем передать контекст в MediaPlayer:

override fun startSound() {
    if (mediaPlayer == null) {
        mediaPlayer = MediaPlayer.create(context, R.raw.yourSound);
    }
    mediaPlayer?.start()
}

Чтобы запустить AudioManager из действия:

var audioManager = AudioManager(this)

Для ручного доступа к raw файлам: Чтение / запись из res / raw по имени .

...