问题标签 [mediabrowser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
433 浏览

android - Android Auto:通过传递额外选项包对 MediaBrowserService 进行分页失败

最近,我一直在尝试在我的应用程序的 Android Auto 部分实现分页。为此,我从这篇Medium 帖子中获得了灵感。这个问题也有关系。但是,我仍然卡住了:虽然我可以让 Medium 帖子中的代码在常规应用程序上运行,但 Android Auto 集成并不能很好地工作。

长话短说,帖子中使用的技术是订阅 MediaBrowser 并传递分页意图。然后,调用带有 options 参数的 onLoadChildren 方法:

这适用于常规应用程序。但是,当从 Android Auto 调用应用程序时,会调用不带 options 参数的常规方法:

因此,无法对 Android Auto 的结果进行分页。

我对这个项目做了一些实验,这是一个非常基本的样板,用于展示 MediaBrowser 和 MediaBrowserService 如何工作。我应用了以下补丁:

我观察到以下情况:

正常启动应用程序时会调用带有选项 Bundle 的新 onLoadChildren 方法。有趣的是,Android Auto 在启动时会调用 MusicPlayerActivity,并且每次都会调用 connect(),所以我肯定需要保留对 connect() 的调用。这很重要,因为这意味着我们不必像之前想的那样尝试获取 Android Auto 使用的 MediaBrowser 实例。

打开应用程序时,它是这样的:

  1. 调用connect()
  2. 使用选项调用 onConnected 回调和 mMediaBrowser.subscribe(...)
  3. 使用选项调用 onLoadChildren
  4. 从那时起,使用选项对 onLoadChildren 进行进一步调用

打开 Android Auto 时,它是这样的:

  1. 调用connect()
  2. 不带选项调用 onLoadChildren
  3. 使用选项调用 onConnected 回调和 mMediaBrowser.subscribe(...)
  4. 使用选项调用 onLoadChildren
  5. 从那时起,在 Android Auto 中点击耳机时,只会调用不带选项的 onLoadChildren

因此,我不确定下一步该做什么。有什么我可以做的吗,或者它可能是一个 Android Auto 错误?

谢谢!

0 投票
0 回答
138 浏览

android - 在 MediaBrowserService.onLoadChildren 中,何时/如何提供选项包?

MediaServiceBrowserorMediaServiceBrowserCompat中,有两种方法:

public abstract void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result)

public void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result, Bundle options)

options被描述为:

Bundle:从媒体浏览器发送的服务特定参数的包。通过结果返回的信息应该受到这个bundle的内容的影响。此值绝不能为空。

我希望在(正在加载孩子的那个)中提供额外的东西MediaDescriptionCompatMediaItem在第二次调用中浮出水面。

然而,只有第一个方法被调用,正如在 Android Auto 下测试的那样。

我需要怎么做才能被调用options

0 投票
2 回答
368 浏览

android - 单击项目时 MediaBrowserServiceCompat 接收空包

我正在尝试将媒体项目公开给其他可以通过我的MediaBrowserServiceCompat服务浏览我的应用程序内容的媒体应用程序。在我的onLoadChildren方法中,我正在构建 MediaBrowserCompat.MediaItem一个MediaDescriptionCompat包含一个Bundle我需要播放该项目的额外内容的 a。

因此,在onPlayFromMediaId(String mediaId, Bundle extras)用户单击该项目时我得到的回调中,我得到了正确mediaId的结果,但它extras是一个空包。

我确信 MediaItem 在Result<List<MediaBrowserCompat.MediaItem>>结果中发送时具有附加包,onLoadChildren但我不确定为什么它被返回为空。什么会导致这样的问题?

谢谢!

0 投票
1 回答
246 浏览

android - 为什么连接到 mediaBrowser 时没有调用 connectionCallback.onConnected()?

我只是开始自学 Android 音频开发,我很困惑为什么这里既没有调用 connectionCallback 的 onConnected 方法也没有调用 onConnectionFailed 方法。PodcastService 被实例化并调用了它的 onGetRoot 方法,但是没有调用回调。没有给出错误信息;根本没有调用回调。任何帮助都会很棒!

MainActivity.kt:

播客服务.kt:

AndroidManifest.xml: