【问题标题】:How to play background music through all activities using Kotlin?如何使用 Kotlin 在所有活动中播放背景音乐?
【发布时间】:2019-09-23 13:30:10
【问题描述】:

如何使用 Kotlin 在所有活动中在后台播放音乐文件?我到处寻找,但我只找到了 Java 的解决方案,而不是 Kotlin 的解决方案。

我试过用这个功能但不知道怎么用:

fun playSound() {
    try {
        if (m.isPlaying()) {
            m.stop()
            m.release()
            //m = MediaPlayer()
        }

        val descriptor = assets.openFd("backgroundsound1.mp3")
        m.setDataSource(descriptor.fileDescriptor, descriptor.startOffset, descriptor.length)
        descriptor.close()

        m.prepare()
        m.setVolume(1f, 1f)
        m.setLooping(true)
        m.start()
    } catch (e: Exception) {
        e.printStackTrace()
    }

}

【问题讨论】:

  • 你为此做了什么?

标签: android audio kotlin background-music


【解决方案1】:

这里是 kotlin 代码中的代码 在所有活动中播放背景音乐

class BackgroundSoundService : Service() {
    internal lateinit var player: MediaPlayer
    override fun onBind(arg0: Intent): IBinder? {

        return null
    }

    override fun onCreate() {
        super.onCreate()
       val afd = applicationContext.assets.openFd("backgroundsound1.wav") as AssetFileDescriptor
    val player = MediaPlayer()
    player.setDataSource(afd.fileDescriptor)
        player.isLooping = true // Set looping
        player.setVolume(100f, 100f)

    }

    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        player.start()
        return 1
    }

    override fun onStart(intent: Intent, startId: Int) {
        // TO DO
    }

    fun onUnBind(arg0: Intent): IBinder? {
        // TO DO Auto-generated method
        return null
    }

    fun onStop() {

    }

    fun onPause() {

    }

    override fun onDestroy() {
        player.stop()
        player.release()
    }

    override fun onLowMemory() {

    }

    companion object {
        private val TAG: String? = null
    }
}

【讨论】:

  • 我需要为此创建一个全新的类吗?
  • @Luis 是的,它是在后台处理您的音乐播放的服务,不要忘记在 Manifest 中注册
  • 我在行中得到一个错误: player = MediaPlayer.create(this, R.raw.idil) -> "unresloved reference raw"
  • @Luis 上类案例我正在使用我的资产>原始文件夹中的 mp3 文件,而您没有在将资产传递给媒体播放器时遇到错误
  • 现在我在该函数中遇到“上下文”和“新”错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
相关资源
最近更新 更多