问题标签 [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.

0 投票
0 回答
407 浏览

android - MediaBrowserService 和 MediaStore

如何使用MediaBrowserService从不同的提供商(文件资源管理器、GoogleDrive、ContentProvider 等)加载媒体,保持单一服务

与 UAMP 核对,它仅使用一个提供商

我的第二个问题是onLoadItem的目的是什么

0 投票
1 回答
942 浏览

android-service - 如何从 Activity 调用 mediaBrowserService 中的 getDuration?

早些时候,使用 boundService 这可以很容易地实现。但是使用 MediaBrowserService 我无法访问外部的 getDuration,没有它我无法更新搜索栏。

0 投票
2 回答
1566 浏览

android - 如何停止 MediaBrowserServiceCompat?

我的服务:

我的活动:

我想在 UI 中添加按钮关闭,但如何停止MusicService?它继续在后台投射。

0 投票
1 回答
392 浏览

android - MediaBrowserService 与 MediaPlayer 在 Android 上播放波形文件

在 Android 开发人员指南中,在Building an Audio App 部分下,有一个声明:

音频应用程序的首选架构是客户端/服务器设计。播放器及其媒体会话在 MediaBrowserService 中实现,UI 和媒体控制器与 MediaBrowser 一起存在于 Android 活动中。

另一方面,我们还有MediaPlayer类。

在哪些情况下首选哪种方式?

0 投票
1 回答
396 浏览

java - Android Auto - 后台服务和活动之间的通信

我正在尝试将MediaBrowserServiceAndroid Auto 添加到现有的媒体播放器应用程序中。该应用程序有一个管理MediaSession,Callbacks和相关状态的活动。它已被设置为发出事件,后台使用这些事件MediaBrowserService并用于构建其内容树。

当流程如下时,这一切都很好:

Start my app -> Start Android Auto -> Browse media

但是,当流量为:

Start Android Auto -> Browse media

...例如,当应用程序未启动并在启动 Android Auto 之前在后台运行时。

问题似乎是,虽然我MediaBrowserService将由 Android Auto 自动启动,但它不会Activity在这样做时创建我的应用程序的相应实例(这意味着没有通知事件MediaBrowserService,因此 Android Auto 中没有可用的内容)。

理想情况下,似乎MediaBrowserService需要能够检查并查看应用程序的“主”Activity是否正在运行,并在未运行时生成一个新实例。但不确定这是否可能,而且往往觉得这是错误的做法。

解决此问题的正确方法是什么?我不想在实现中复制所有应用程序的MediaSession处理和播放相关代码MediaBrowserService。这应该尽可能保持轻量级。有没有办法确保应用程序Activity在激活时始终运行MediaBrowserService

0 投票
2 回答
776 浏览

pagination - 如何通过引用 Android Auto MediaBrowser 在 MediaBrowserServiceCompat 中设置 EXTRA_PAGE 和 EXTRA_PAGE_SIZE?

我有一个 Android Auto 应用程序。我想利用分页在应用程序内浏览。您似乎可以通过获取对 MediaBrowserCompat 的引用并将这些常量传递给 .subscribe() 来设置 EXTRA_PAGE 和 EXTRA_PAGE_SIZE。但是,我不知道如何获取对 Android Auto Audio 用于调用 .subscribe() 的 MediaBrowserCompat 的引用。

对于应该简单的事情来说,这似乎太复杂了,我只是想太多了吗?

0 投票
3 回答
1389 浏览

java - MediaBrowserCompat.connect() 从不调用 onConnected 或任何 MediaBrowserCompat.ConnectionCallback 方法

我正在尝试将我的活动连接到MediaBrowserServiceCompat使用MediaBrowserCompat. 这是我的活动:

您可能希望ConnectionCallback调用其中一种方法,但这是 logcat 打印的内容(包括从服务调用的日志):

当我在我的服务中调用时它也会setSessionToken(mediaSession.getSessionToken()) 崩溃NullPointerException

<action android:name="android.media.browse.MediaBrowserService"/>如果您想知道的话,我会在我的清单中添加服务所需的内容。

我做错了什么还是只是appcompat(v7:25.3.1)中的一个错误?

0 投票
3 回答
2422 浏览

android - 刷新 MediaBrowserService 订阅内容

TL;DR:我已成功创建并(通过订阅)将活动耦合到媒体浏览器服务。此媒体浏览器服务可以继续运行并在后台播放音乐。我希望能够在某个阶段刷新内容,无论是在应用程序再次进入前台时还是在 SwipeRefreshLayout 事件期间。

我想实现以下功能:

  1. 启动 MediaBrowserServiceCompat 服务。
  2. 从活动中,连接并订阅媒体浏览器服务。
  3. 允许该服务在应用关闭时继续运行和播放音乐。
  4. 在稍后阶段,或在 SwipeRefreshLayout 事件中,重新连接并订阅服务以获取新鲜内容。

我收到的问题是在 MediaBrowserService 中(在创建订阅后)您只能从 onLoadChildren() 方法调用一次 sendResult() ,因此下次尝试使用相同的根订阅媒体浏览器服务时,第二次调用 sendResult() 时会出现以下异常:

我调用以下方法来连接和断开媒体浏览器(同样,在第一次连接时一切运行顺利,但在第二次连接时,我不确定如何通过订阅刷新内容):

我在 onPause() 而不是 onDestroy() 中取消订阅并断开连接,以便即使活动保留在后台堆栈上也会重新创建订阅。

分别在活动和服务中用于滑动刷新的实际方法:

活动

服务

其他研究:

我参考了 Github 上的 Google Samples 代码,以及...

在创建媒体浏览器服务并且活动至少订阅一次后,上述存储库似乎都没有处理刷新内容的问题 - 我想避免重新启动服务,以便音乐可以在后台继续播放。

可能的相关问题:

0 投票
1 回答
315 浏览

android - 安卓电视媒体控制器

我尝试使用 android 的 mediabrowser 和 sample by google 在手机上运行良好(https://github.com/googlesamples/android-media-controller

但在 android TV 上找不到任何支持此功能的应用

在仅放置当前应用程序的服务中

你能帮我获取 API 来收集上次使用的媒体数据吗?我找不到任何关于创建电视启动器的描述或指南(可以访问另一个应用程序上次使用或推荐的媒体)

我只想获取元数据,例如https://developer.android.com/training/tv/playback/now-playing.htmlhttp://corochann.com/android-tv-application-hands-on-tutorial-11- 277.html

0 投票
2 回答
443 浏览

android - 如何将架构组件与 MediaBrowserService 一起使用?

我正在尝试制作一个使用 MediaBrowserService 播放音频的应用程序,但也使用新的架构组件来构建整个应用程序。我之前曾将 MediaBrowserService 用于另一个应用程序(https://github.com/willhwongwork/PodCast),但在该应用程序中我没有使用 OnGetRoot() 和 OnGetChildren() 方法加载数据我只是使用加载器或 asynctask 加载数据来自网络(并且该应用程序中没有架构)。

那么现在如果我想使用 LiveData 和 ViewModel 我应该如何构建代码呢?我应该在 MediaBrowserService 中使用它们并通过 OnGetRoot() 和 OnGetChildren() 方法向 UI 提供数据吗?