如何使用 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 在所有活动中播放背景音乐?的主要内容,如果未能解决你的问题,请参考以下文章