如何使用 Kotlin 在所有活动中播放背景音乐?

Posted

技术标签:

【中文标题】如何使用 Kotlin 在所有活动中播放背景音乐?【英文标题】:How to play background music through all activities using 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()
    


【问题讨论】:

你为此做了什么? 【参考方案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 文件,而您没有在将资产传递给媒体播放器时遇到错误 现在我在该函数中遇到“上下文”和“新”错误。

以上是关于如何使用 Kotlin 在所有活动中播放背景音乐?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 播放将在所有活动中播放的背景音乐

所有活动的背景音乐

在我的所有活动中播放背景音乐,并且仅在我的应用未显示时才停止

如何通过App在后台连续播放音乐?

Kotlin实现简单音乐播放器

Android Studio如何在活动开始时自动播放背景音乐