【问题标题】:Turning on Bluetooth starts MediaBrowserServiceCompat打开蓝牙启动 MediaBrowserServiceCompat
【发布时间】:2020-11-07 19:40:35
【问题描述】:

当我在我的 OnePlus 上打开蓝牙时,MediaBrowserServiceCompat 会启动。

我的第一个 logcat 条目来自我的类​​中的 onCreate() 方法,该方法扩展了 MediaBrowserServiceCompat。其他几个媒体播放器应用程序也启动了。 logcat 中没有更多关于蓝牙启动MediaBrowserServiceCompat 的原因和方式的信息。因此,我迷路了。这种行为不是完全可重现的,但它会发生 9/10 次,尤其是在我的蓝牙耳机打开的情况下。仅连接耳机不会导致相同的行为。只有打开设备上的蓝牙才可以。

是什么导致MediaBrowserServiceCompat 在我打开蓝牙时启动,或者我如何确定是什么原因导致的?反过来,我该如何防止这种行为?

【问题讨论】:

    标签: android bluetooth android-mediasession mediabrowserservicecompat


    【解决方案1】:

    根据https://developer.android.com/guide/topics/media-apps/mediabuttons#restarting-inactive-mediasessions

    如果 Android 可以识别最后一个活动的媒体会话,它会尝试通过向清单注册的组件(例如服务或广播接收器)发送 ACTION_MEDIA_BUTTON Intent 来重新启动会话。这可以让您的应用在其 UI 不可见时重新开始播放,这是大多数音频应用的情况。

    我认为在您的情况下,由于您的应用程序是最后一个活动的 MediaSession,因此系统正在尝试重新启动 MediaBrowserService。尝试通过切换到其他媒体应用程序(然后连接BT)来调试您的应用程序,然后检查系统是否启动您的服务。

    另外,请查看https://developer.android.com/guide/topics/media-apps/mediabuttons 了解更多信息。

    【讨论】:

    • 多个应用同时启动,而不仅仅是最后使用的媒体应用。此外,没有调用任何媒体按钮。此外,与 MediaSessionStack 相关的任何内容都不会出现在 logcat 中,因为它会在通过播放按钮恢复上一个活动媒体会话的情况下出现。
    • 如果 Android 平台(由 OnePlus 定制)导致了这种行为,那么恐怕您(作为应用程序开发人员)无法阻止这种行为。您需要处理您的业务逻辑以达到预期的结果。顺便说一句,你想达到什么目的?
    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    相关资源
    最近更新 更多