Background Info: 我需要检测用户何时按下大多数耳机上的播放/暂停按钮(KEYCODE_MEDIA_PLAY_PAUSE) .
我拥有它主要使用MediaSessions,但当另一个应用程序开始播放音频时,我停止回调 .
这似乎是因为正在播放音频的应用创建了自己的MediaSession,而Android仅将KeyEvents发送到最新的MediaSession . 为了防止这种情况,我创建一个OnActiveSessionsChangedListener并在每次触发时创建一个新的MediaSession .
这确实有效,但每次我创建一个新的MediaSession时,监听器再次触发,所以我发现自己陷入了一个inf循环 .
My Question: 有谁知道我怎么做以下任何一个??:
防止其他应用窃取我的媒体按钮焦点
当我将媒体按钮焦点丢失到另一个应用程序时检测到,所以我只能创建一个新的MediaSession,而不是每当活动会话改变时
检查我当前是否已经有媒体按钮焦点,所以我不必要地创建一个新的MediaSession
What didn't work:
音频效果_ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION上的_119_ BroadcastReceiver无法正常工作,因为应用必须手动触发广播,而许多应用,如NPR One不
AudioManager.OnAudioFocusChangeListener无效,因为它需要我有音频焦点
BroadcastReceiver在android.intent.action.MEDIA_BUTTON上具有最高优先级并调用abortBroadcast(),但当其他应用程序播放音频时