Android MediaSessionCompat onMediaButtonEvent 不工作
Android MediaSessionCompat onMediaButtonEvent not working
我希望能够检测到何时按下头座上的暂停按钮(当没有播放媒体时)
我尝试了各种接收器和服务,但没有任何效果。直到我测试了从一个非常古老的示例中删除所有膨胀后得到的代码。
import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import android.support.v4.media.session.MediaSessionCompat
import androidx.appcompat.app.AppCompatActivity
import androidx.media.session.MediaButtonReceiver
class MainActivity : AppCompatActivity() {
private lateinit var mMediaSessionCompat: MediaSessionCompat
private val mMediaSessionCallback: MediaSessionCompat.Callback = object : MediaSessionCompat.Callback() {
override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean {
println("WORKS!!!")
return super.onMediaButtonEvent(mediaButtonEvent)
}
}
private fun initMediaSession() {
val mediaButtonReceiver = ComponentName(applicationContext, MediaButtonReceiver::class.java)
mMediaSessionCompat = MediaSessionCompat(applicationContext, "Tag", mediaButtonReceiver, null)
mMediaSessionCompat.setCallback(mMediaSessionCallback)
mMediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS or MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)
mMediaSessionCompat.isActive = true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initMediaSession()
setContentView(R.layout.activity_main)
}
override fun onDestroy() {
super.onDestroy()
mMediaSessionCompat.release()
}
}
此代码工作了一段时间,但由于某种原因在其他项目中不起作用,并且在重新启动后此代码不再有效。我不知道为什么它停止工作,但我已经尝试让它工作几个小时,但我不明白为什么它不会工作。谁能给我一个最小的可重现的例子,或者指出我缺少的东西。
我通过简单地播放虚拟声音解决了这个问题
private fun playDummySound() {
val mMediaPlayer: MediaPlayer = MediaPlayer.create(this, R.raw.dummy_sound_500ms)
mMediaPlayer.setOnCompletionListener { mMediaPlayer.release() }
mMediaPlayer.start()
}
取自https://github.com/anars/blank-audio
问题已通过
中的解决方案解决
我希望能够检测到何时按下头座上的暂停按钮(当没有播放媒体时)
我尝试了各种接收器和服务,但没有任何效果。直到我测试了从一个非常古老的示例中删除所有膨胀后得到的代码。
import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import android.support.v4.media.session.MediaSessionCompat
import androidx.appcompat.app.AppCompatActivity
import androidx.media.session.MediaButtonReceiver
class MainActivity : AppCompatActivity() {
private lateinit var mMediaSessionCompat: MediaSessionCompat
private val mMediaSessionCallback: MediaSessionCompat.Callback = object : MediaSessionCompat.Callback() {
override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean {
println("WORKS!!!")
return super.onMediaButtonEvent(mediaButtonEvent)
}
}
private fun initMediaSession() {
val mediaButtonReceiver = ComponentName(applicationContext, MediaButtonReceiver::class.java)
mMediaSessionCompat = MediaSessionCompat(applicationContext, "Tag", mediaButtonReceiver, null)
mMediaSessionCompat.setCallback(mMediaSessionCallback)
mMediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS or MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)
mMediaSessionCompat.isActive = true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initMediaSession()
setContentView(R.layout.activity_main)
}
override fun onDestroy() {
super.onDestroy()
mMediaSessionCompat.release()
}
}
此代码工作了一段时间,但由于某种原因在其他项目中不起作用,并且在重新启动后此代码不再有效。我不知道为什么它停止工作,但我已经尝试让它工作几个小时,但我不明白为什么它不会工作。谁能给我一个最小的可重现的例子,或者指出我缺少的东西。
我通过简单地播放虚拟声音解决了这个问题
private fun playDummySound() {
val mMediaPlayer: MediaPlayer = MediaPlayer.create(this, R.raw.dummy_sound_500ms)
mMediaPlayer.setOnCompletionListener { mMediaPlayer.release() }
mMediaPlayer.start()
}
取自https://github.com/anars/blank-audio
问题已通过