Java 服务不接收多媒体按钮单击事件

Java 服务不接收多媒体按钮单击事件,java,android,kotlin,service,android-mediaplayer,Java,Android,Kotlin,Service,Android Mediaplayer,我正在制作一个应用程序,当我按下多媒体按钮时,它应该可以做一些事情。我知道我必须创建一个服务并捕捉那里的所有事件。我做了文档推荐的所有事情,但我仍然没有在应用程序中收到单击事件 我遵循以下准则编写类似的应用程序: 但我还是不明白这件事。 我将所有代码都放在存储库中: 而且。。。以下是我已经遵循的一些建议: 在AndroidManifest中-> <receiver android:name="androidx.media.session.MediaButtonReceiver">

我正在制作一个应用程序,当我按下多媒体按钮时,它应该可以做一些事情。我知道我必须创建一个服务并捕捉那里的所有事件。我做了文档推荐的所有事情,但我仍然没有在应用程序中收到单击事件

我遵循以下准则编写类似的应用程序: 但我还是不明白这件事。 我将所有代码都放在存储库中:

而且。。。以下是我已经遵循的一些建议: 在AndroidManifest中->

<receiver android:name="androidx.media.session.MediaButtonReceiver">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON" />
            </intent-filter>
        </receiver>
...
        <service android:name="ru.exsoft.mediaretranslator.RetranslatorService">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON" />
            </intent-filter>
        </service>
和GitLab中的其他

。。。在logcat中,我看到了以下几行代码,它们确认了系统根本不认为我的类可以处理此事件:(


我遇到了类似的问题,根本原因是我的媒体会话没有播放音频。请尝试在调用mediaSession?的行后添加以下内容。isActive=true

        val dummyAudioTrack = AudioTrack(
             AudioManager.STREAM_MUSIC,
             48000,
             AudioFormat.CHANNEL_OUT_STEREO,
             AudioFormat.ENCODING_PCM_16BIT,
             AudioTrack.getMinBufferSize(
                  48000,
                  AudioFormat.CHANNEL_OUT_STEREO,
                  AudioFormat.ENCODING_PCM_16BIT
             ),
             AudioTrack.MODE_STREAM
         )

         dummyAudioTrack.play()
(注意,AudioTrack已被弃用,我只是还没有找到首选方法)

2019-08-29 14:08:44.122 23691-23691/? V/Avrcp_ext: recordKeyDispatched: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_PAUSE, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=508419172, downTime=508419172, deviceId=-1, source=0x0 } dispatched to com.vanced.android.youtube
2019-08-29 14:08:44.122 1675-2510/? D/MediaSessionService: Sending KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PAUSE, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=508419172, downTime=508419172, deviceId=-1, source=0x0 } to the last known PendingIntent PendingIntent{e2b4330: PendingIntentRecord{7ce4b98 com.vanced.android.youtube broadcastIntent}}
        val dummyAudioTrack = AudioTrack(
             AudioManager.STREAM_MUSIC,
             48000,
             AudioFormat.CHANNEL_OUT_STEREO,
             AudioFormat.ENCODING_PCM_16BIT,
             AudioTrack.getMinBufferSize(
                  48000,
                  AudioFormat.CHANNEL_OUT_STEREO,
                  AudioFormat.ENCODING_PCM_16BIT
             ),
             AudioTrack.MODE_STREAM
         )

         dummyAudioTrack.play()