微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android MediaSessionCompat onMediaButtonEvent 不起作用

如何解决Android MediaSessionCompat onMediaButtonEvent 不起作用

我希望能够检测到头座上的暂停按钮何时被按下(没有媒体播放时)

我尝试了各种接收器和服务,但没有任何效果。直到我从一个非常老的例子中删除了所有膨胀之后,我测试了这段代码

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

问题已通过 Android "O" (Oreo,8) and higher media buttons issue 中的解决方案解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。