Kotlin MediaPlayer的简单用法

问题描述 投票:1回答:1

我是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,这是一个位于res/raw中的.wav文件。

如何获取字符串到它的路径?

我搜寻了使用MediaPlayer的其他解决方案的教程,但是遇到了不知道要导入什么,无法调用create或找不到context(无论如何)的问题。

android kotlin android-mediaplayer
1个回答
2
投票

将上下文导入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文件:Read/write from res/raw by name

© www.soinside.com 2019 - 2024. All rights reserved.