這就是我發送廣播的方式
if (isPlaying) {
val intent = Intent(MUSIC_REQUEST)
intent.action = PAUSE
requireContext().sendBroadcast(intent)
binding.playSong.setImageResource(R.drawable.ic_play_icn)
} else {
val intent = Intent(MUSIC_REQUEST)
intent.action = PLAY
requireContext().sendBroadcast(intent)
binding.playSong.setImageResource(R.drawable.ic_pause_icn)
}
這就是我接收廣播的方式
when (intent!!.action) {
PAUSE -> {
if (mediaPlayer!!.isPlaying) {
Log.i(TAG, "onReceive: paused Received")
mediaPlayer!!.pause()
isPlaying = false
val pI = Intent(MUSIC_REQUEST)
pI.action = PAUSE_REQUEST_COMPLETED
sendBroadcast(pI)
}
}
PLAY -> {
isPlaying = true
Log.i(TAG, "onReceive: play Received")
mediaPlayer!!.start()
val pI = Intent(MUSIC_REQUEST)
pI.action = PLAY_REQUEST_COMPLETED
sendBroadcast(pI)
}
這就是我在創建服務時注冊它的方式
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, IntentFilter())
但在接收端我無法接收意圖。請指導我可能出現的錯誤
uj5u.com熱心網友回復:
通過發送的廣播requireContext().sendBroadcast(intent)不是本地廣播
您也需要LocalBroadcastManager用于發送。
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
uj5u.com熱心網友回復:
像這樣注冊接收器:
val intentFilter = IntentFilter()
filter.addAction(PAUSE)
filter.addAction(PLAY)
context.registerReceiver(receiver, intentFilter)
或者這樣:將過濾器添加到您的接收器,在 AndroidManifest.xml
<intent-filter>
<action android:name="PAUSE" />
</intent-filter>
<intent-filter>
<action android:name="PLAY" />
</intent-filter>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/403192.html
標籤:
