【问题标题】:onLoadChildren never gets called in MediaBrowserServiceCompatonLoadChildren 永远不会在 MediaBrowserServiceCompat 中被调用
【发布时间】:2018-12-14 12:09:48
【问题描述】:

我在我的应用程序中实现了MediaBrowserServiceCompat

@Override
public BrowserRoot onGetRoot(@NonNull String s, int i, @Nullable Bundle bundle) {
    Log.e("testing","onGetRoot");
    return new BrowserRoot(MEDIA_ID_ROOT, null);
}

当我在手机中打开 Android 自动应用程序时,应用程序正在输入 onGetRoot 方法,但方法 onLoadChildren 永远不会被调用。所以我无法加载我的音乐文件夹。

【问题讨论】:

  • 我检查了来源并得出结论,您没有在您的 MediaBrowserCompat 实例上执行 connect()。你能验证你正在执行connect()吗?
  • 如果这个还是没有解决,可以添加onLoadChildren()的实现吗?您是否在它的开头有一个日志,这就是您确定它没有被调用的方式?它可能被调用,只是根节点中没有从 onGetRoot() 发送的子节点
  • 这里也一样。 Connect() 被调用,onGetRoot() 被调用,但 onLoadChildren 永远不会被调用

标签: android auto android-auto


【解决方案1】:

您必须在服务的覆盖onCreate() 方法中调用setSessionToken(...)

【讨论】:

  • 您刚刚获得了支持。 ;-)
【解决方案2】:

天啊。 MediaBrowser 客户端不应只在 mediaBrowser 实例上调用 connect(),如 Google 示例中所述,https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowser-client

但您必须实际调用 subscribe 才能触发对 onLoadChildren() 的回调

该文档太混乱了,需要做很多令人费解的事情(数小时到数天)才能弄清楚如何启动和运行一个简单的 MediaBrowserService。 :(

【讨论】:

  • 你能再解释一下吗?你是什​​么意思应该调用订阅,MediaControllerCompat 和 MediaBrowserCompat 甚至都没有订阅方法
猜你喜欢
  • 2012-10-27
  • 2013-10-12
  • 2012-03-27
  • 2013-08-29
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2015-10-15
相关资源
最近更新 更多