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