问题标签 [mediabrowserservicecompat]
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.
android - MediaBrowserServiceCompat 中的 Service.startForeground()
我在 Android Dashboard 崩溃日志中收到此错误:
Context.startForegroundService() 没有调用 Service.startForeground() (没有可用的位置)
我知道 Oreo 中引入的背景限制,并已通读这篇文章。
但是,对于运行 Android Wear 8.0 的一小部分用户,我仍然会遇到此错误。令人困惑的是,并非所有用户都在运行 8.0。
根据文档,如果您打电话,Context.startForgroundService()
您必须startForeground()
在 5 秒内通过调用服务来显示通知(我假设MediaBrowserCompat
正在调用Context.startForgroundService()
)。
但是,如果我使用的是MediaBrowserServiceCompat
. 当用户点击播放开始音频播放时,我会显示前台通知。
android - 将服务重新附加到活动?
当我第一次打开 Activity 时,它会创建一个 MediaBrowserService。当我尝试重新打开它时,我想重新连接到它。我尝试了多种方法:
当我尝试这样做时,它总是会带来错误消息:
即使我调用了onStop()
函数,这怎么可能mMediaBrowser.disconnect()
呢?或者这只是错误的方式?当我通过 BackButton 返回时,这一切都会发生。
我的完整代码:
//编辑如询问服务的代码:
android - MediaControllerCompat 的 PlaybackState
我按照本指南使用 MediaSessionCompat 构建后台音频应用程序并遇到了问题。
在我的Activity
中,我将我的 UI 连接到媒体控制器,如下所示
在我的Service
,我建立我的会话如下
基本上,我已经逐行遵循网站的指南,除了我遗漏了Notification
显示当前音频信息的内容。在我的设备上进行测试时,出现NullPointerException
错误。
logcat 在尝试mediaControllerCompat.getPlaybackState().getState()
. 我认为我MediaControllerCompat.getPlaybackState()
的是null
。甚至Android Devleopers SiteMediaControllerCompat
似乎也无法解决我的问题。也许只是我,但在尝试检索其值之前,我没有看到任何定义MediaControllerCompat
's 的代码。PlaybackState
我该如何解决这个问题?
提前感谢您的帮助。
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 - MediaSession 没有从 MediaStyle 通知中获得任何回调
我创建了一个扩展 MediaBrowserServiceCompat 的服务。此服务包含对我的播放器的引用并创建一个带有回调的新 MediaSession。每次播放器更改状态时,我都会更新 MediaSession 的播放状态并创建一个 MediaStyle 通知。当我开始在播放器中播放某些内容时,会显示通知,但通知中的按钮不会触发 MediaSession 回调,它们不会执行任何操作。我在 MediaSession 中设置了正确的标志,我将会话设置为活动,我在播放状态下设置了正确的操作,我将会话令牌传递给通知,但仍然没有从中获得任何回调. 我真的不知道我做错了什么。所有这些代码都在我的应用程序导入的模块中。
我的 NotificationHelper 类:
我的服务类:
}
MediaBrowserHelper 初始化服务:
}
显现:
android - 前台 MediaBrowserService 在应用退出时被终止
我正在按照Android 指南在媒体播放器应用程序中使用 MediaBrowserServiceCompat,但该服务在应用程序退出时被销毁。
在应用程序启动服务正确创建。在按下按钮时mediaController.transportControls.play()
调用,并在onPlay()
调用我的会话回调类中的此方法之后。内部onPlay()
服务已启动:(context.startService(Intent(context, MediaBrowserServiceCompat::class.java))
也尝试startForegroundService
过 Oreo 及更高版本)并设置为前台:this@PlaybackService.startForeground(SERVICE_ID, notificationBuilder?.build())
。创建奥利奥和更高 API 的通知通道。
现在通知已启动,我可以通过发出命令看到服务在前台:
到目前为止一切正常,但是当我按下主页按钮时,我希望服务保持启动,而是调用onDestroy()
我的MediaBrowserServiceCompat
类的方法。返回应用程序并再次启动服务后,它没有设置为前台(也没有通知)。
我startService
在我的应用程序中使用了唯一的一个呼叫,并删除了每个呼叫stopSelf
和stopForeground
测试。
在 API 28、26、22 和 18 上,我得到了相同的结果。
我也试过START_STICKY
从onStartCommand()
.
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
?
android - 单击项目时 MediaBrowserServiceCompat 接收空包
我正在尝试将媒体项目公开给其他可以通过我的MediaBrowserServiceCompat
服务浏览我的应用程序内容的媒体应用程序。在我的onLoadChildren
方法中,我正在构建 MediaBrowserCompat.MediaItem
一个MediaDescriptionCompat
包含一个Bundle
我需要播放该项目的额外内容的 a。
因此,在onPlayFromMediaId(String mediaId, Bundle extras)
用户单击该项目时我得到的回调中,我得到了正确mediaId
的结果,但它extras
是一个空包。
我确信 MediaItem 在Result<List<MediaBrowserCompat.MediaItem>>
结果中发送时具有附加包,onLoadChildren
但我不确定为什么它被返回为空。什么会导致这样的问题?
谢谢!