问题标签 [mediabrowserservice]
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.
java - MediaBrowserService 在哪里获取 onLoadChildren 中的媒体文件
我正在尝试制作 MediaBrowserService。过去,当我想在设备上实际显示所有音乐文件时,我会使用 ContentResolver 并从 MediaStore 加载光标。
我不知道我应该在 MediaBrowserService 中的哪个位置执行此操作。
有方法:onLoadChildren
我找到的示例如下所示:
我的问题是,我是否在此方法中使用 ContentResolver 光标来返回 MediaItems 列表?或者是否有其他内部方法可用于通过设备获取所有音乐文件?我在网上看到的唯一示例是执行 HTTP 调用以获取歌曲列表的流服务,或者它们只是硬编码假歌曲以显示以供测试。我正在尝试允许该服务浏览设备本身上的音乐文件。
android - MediaBrowser 未连接到 MediaBrowserService
我正在尝试使用 MediaBrowser 从活动连接到 MediaBrowserService。但是,我的onConnected
回调似乎从未被调用来允许我设置MediaController
并开始操作播放。
在我的播放器/浏览器活动中:
我已经用调试器添加了断点,似乎执行确实到达了服务,直到它的onCreate
方法结束,但执行似乎永远不会到达我的连接回调的onConnected
oronConnectionFailed
方法。connect
调用后,checkedisConnected
返回 false。
我不确定如何进一步调试,因为问题发生在连接过程中的某个地方,并且据我所知,我的代码符合 Android 示例指南。setSessionToken
是的,我正在调用onCreate
浏览器服务。
如果我尝试在我的活动中设置 MediaController onStart
,在我调用之后connect
,我会收到一个异常,指出浏览器未连接,因此无法设置会话令牌。因此,尽管执行进入onCreate
我的服务,但连接没有完成。
android - 如何使用 Android 的 MediaBrowserService 服务 MediaStore 歌曲?
在 MediaBrowserService 的“onLoadChildren”方法中,我们必须返回一个 MediaItems 列表,以便客户端相应地构建它的 UI。如果在我的服务中我有一个刚刚从 MediaStore 获取的游标,或者我刚刚从房间数据库中获取的 LiveData 实例,我将如何处理它?
我不明白如何将我的光标/实时数据转换为媒体项目列表(当然不迭代所有光标/LiveData 数据),或者客户端如何知道何时需要从服务中获取更多数据?
谢谢
android - MediaStyleNotification:播放/暂停按钮不响应点击
在我的应用程序中,当用户选择要播放的音频文件时,当文件准备好并且播放开始时,MediaStyle 通知会成功显示。
元数据信息已更新,标题、图标等。但是……</p>
我不知道我错过了什么。你可以看看我的MediaBrowserService类。
java - 将媒体项添加到 MediaBrowserService
我正在为 Android 构建一个音乐播放器,使用这两个示例(Android MediaBrowserService Sample和Universal Music Player)作为示例。我注意到在启动时加载媒体信息并将其添加到媒体浏览器。两者都在启动时提供完整的媒体列表。
但是如果我想动态地将媒体添加到播放器队列中呢?
例如,我使用Spotify 的 Web API根据用户的查询检索曲目列表。除其他外,它还返回一个指向 30 秒预览曲目的链接。据我了解,我需要创建一个包含此轨道的 MediaMetadata 对象。
但是,我应该如何将此信息添加到 MediaBrowserService?期望的行为是,当用户单击列表(RecyclerView)中曲目之一的播放按钮时,仅播放该曲目。另外,我没有使用浏览组件来表示内容层次结构。
我该如何实现这种行为?我应该阅读哪些参考资料?
提前致谢。
android - onLoadChildren 必须调用 detach()、MusicBrowserService、Android?
我正在使用 MediaBrowserService 在设备上播放音频。当我打开蓝牙并播放音频时,应用程序崩溃了。
以下是日志
如何处理?
android - Android Auto 卡在错误状态,如何解除?
我正在扩展我的音频流应用程序以与 Android Auto 一起使用,我已经实现了一个MediaBrowserService
并且一切运行良好。如果在播放过程中流返回错误,我会更新MediaSession
适当地传递PlaybackStateCompat.STATE_ERROR
. 在这种情况下,Android Auto 在屏幕上显示错误,但我看不到任何消除错误的方法。如果我导航回 Android Auto 中的应用程序菜单,我可以看到它向我Service
发出收集请求,MediaItems
但错误消息仍保留在屏幕上。
恢复的唯一方法是退出 Android Auto 然后重新打开它,然后错误消失并且MediaItems
再次可见以浏览和播放。
我是否需要以MediaSession
某种方式更新以消除错误状态,或者是否应该有一种方法可以消除屏幕上的错误消息?
作为参考,我正在手机上使用 Android Auto 应用程序来测试它。
谢谢
android - 如何在活动中从 MediaBrowserServiceCompat 访问 exoplayer 实例?
我使用 exoplayer 播放来自本地文件的音频MediaBrowserServiceCompat
。我阅读了有关 exoplayer ui 的信息,并想在我的活动中使用它。如何在我的活动中获取 exoplayer 的实例,以便我可以调用该方法playbackcontrolview.setplayer(exoplayer)
将其与 exoplayer ui 绑定?
我已经尝试过IBinder
像普通服务一样使用,但它会引发错误。
我想将活动中的 exoplayer ui 绑定到MediaBrowserServiceCompat
.
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 实例。
打开应用程序时,它是这样的:
- 调用connect()
- 使用选项调用 onConnected 回调和 mMediaBrowser.subscribe(...)
- 使用选项调用 onLoadChildren
- 从那时起,使用选项对 onLoadChildren 进行进一步调用
打开 Android Auto 时,它是这样的:
- 调用connect()
- 不带选项调用 onLoadChildren
- 使用选项调用 onConnected 回调和 mMediaBrowser.subscribe(...)
- 使用选项调用 onLoadChildren
- 从那时起,在 Android Auto 中点击耳机时,只会调用不带选项的 onLoadChildren
因此,我不确定下一步该做什么。有什么我可以做的吗,或者它可能是一个 Android Auto 错误?
谢谢!
android - 在 MediaBrowserService.onLoadChildren 中,何时/如何提供选项包?
在MediaServiceBrowser
orMediaServiceBrowserCompat
中,有两种方法:
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的内容的影响。此值绝不能为空。
我希望在(正在加载孩子的那个)中提供额外的东西MediaDescriptionCompat
会MediaItem
在第二次调用中浮出水面。
然而,只有第一个方法被调用,正如在 Android Auto 下测试的那样。
我需要怎么做才能被调用options
?