代码之家  ›  专栏  ›  技术社区  ›  Chris Allinson

Kotlin MediaPlayer简单用法

  •  0
  • Chris Allinson  · 技术社区  · 5 年前

    我是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 回复  |  直到 5 年前
        1
  •  2
  •   Chris Allinson    5 年前

    将上下文导入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