问题标签 [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.
android - Android MediaBrowserService:onLoadChildren 为 id null 发送了 null 列表
我MediaBrowserServiceCompat
用来支持Android Auto
。
从崩溃报告(我在这个问题的底部添加了其中一个)我看到onLoadChildren
我覆盖的方法存在问题。
我这样做:
因为在文档中它说如果parentId
无效,请sendResult
使用null
. 它正在崩溃,但它应该根据文档执行此操作,而不是崩溃:
“当给定的 parentId 无效时,实现必须调用带有 null 的 result.sendResult,这将调用 MediaBrowserCompat.SubscriptionCallback.onError。”
另一方面,文档还提到了以下内容parentId
:
parentId
: String: 要查询其子项的父媒体项的 id。此值绝不能为空。
所以,我的问题来了:
1)如何(以及为什么)parentId
设置为,null
而文档说它不能是null
。我无法控制这一点,因为系统调用onLoadChildren
null parentId
。
2)为什么它会崩溃而不是MediaBrowserCompat.SubscriptionCallback.onError.
像文档所述那样调用?
其中一份崩溃报告:
android - 当我们尝试测试功能时,该应用未出现在 Android Auto 屏幕中
我在 Playstore 上有一个音频播放器应用程序,想添加对 AndroidAuto 的支持。进行必要的更改后,当我将新的 apk 上传到 playstore 时,它被拒绝并收到了来自 Play 的以下电子邮件
当他们说应用程序没有出现在屏幕上时,这是什么意思?我在清单中有所有必需的条目,使我的服务可浏览。我不明白缺少什么。
我能够在真正的 android 设备上测试该应用程序,并且它可以正常运行。
---------- 来自 google play 的电子邮件 ----------
应用状态:您的应用尚未被 Android Auto 接受,并且更新未在 Google Play 上发布。
APK 版本的资格问题: 当我们尝试测试功能时,应用程序没有出现在自动屏幕中。
考虑用于 Android Auto:
- 对您的应用程序进行必要的更改。
- 增加升级后 APK 的版本号。
- 提交您的应用以供再次审核。
或者,如果您想从 Android Auto 中排除您的应用:
- 从您的 APK 代码中删除 Android Auto 清单条目。
- 登录您的 Play 管理中心并上传新的 APK。
- 单击提交更新。
有关应用如何符合 Android Auto 的更多详细信息,您可以查看 Android Auto 应用质量指南。
如果您认为我们做出此决定有误,请向我们的团队提交其他信息,我们将再次审核您的应用。
感谢您支持 Google Play,
Google Play 团队
android - 泄漏金丝雀检测 MediaBrowserServiceCompat 示例应用程序中的内存泄漏
我创建了一个实现 MediaBrowserServiceCompat 的测试应用程序。我已遵循本指南: https ://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice 创建了 MediaPlaybackService 和 MainActivity。我在 onDestroy 方法中添加了泄漏金丝雀并添加了 AppWatcher.objectWatcher.watch(this)。在打开和退出应用程序时,leak canary 发现一个泄漏:
由于该应用程序仅包含来自 google 示例的代码,因此我无法弄清楚如何处理此泄漏。我应该忽略它吗?
代码: https ://github.com/finneapps/MediaBrowserService-memory-leak
android - 是否可以连接到 Spotify 的 MediaBrowserService?
我正在编写一个语音助手,并希望能够在 Spotify 中启动搜索结果。为了了解如何连接到 Spotify 和其他应用程序,我正在使用Google 的媒体控制器测试应用程序,它被描述为执行以下操作:
创建一个连接到 MediaBrowserService 的简单 MediaController 以测试应用间媒体控件。
此应用程序适用于通用 Android 音乐播放器示例,或任何其他实现媒体 API 的应用程序。
当我运行该应用程序时,它会将 Spotify 标识为提供MediaBrowserService
,但当我尝试通过该应用程序连接到 Spotify 时出现错误:
这是连接代码:
具体来说,在调用 后不久mBrowser.connect()
,回调的onConnectionFailed()
方法被调用。
这是否意味着 Spotify 拒绝MediaBrowserService
来自未列入白名单的应用程序的请求(如此处所述)并且单个应用程序编写者无法连接到 Spotify 的MediaBrowserService
,或者是否有其他连接方式?FWIW,谷歌播放音乐也拒绝通过应用程序连接。
我还尝试通过启动 intent 让 Spotify 进行搜索和播放,但没有成功。
android - 带有 ExoPlayer 和 PlayerControlView 的 MediaBrowserService - 如何从 UI (PlayerControlView) 访问播放器实例?
我目前正在开发具有视频和音频功能的应用程序的一部分,并且最近开始重构代码库。目标是集成MediaSession/ MediaController
和MediaBrowserService/ MediaBrowser
框架。
我们对视频和音频组件使用ExoPlayer
更PlayerControlView
具体的PlayerView,它需要对播放器实例的引用PlayerControlView
:
但是,根据android 开发人员的帖子和 的文档,MediaBrowserService
播放器实例应该包含在服务下。此外,客户端站点(MediaBrowser 和 MediaController)通过connect()
方法和MediaBrowserConnectionCallback与之交谈的唯一方法,这使得将播放器的实例传递给 PlayerControlView(或其他方式)是不可能的。
我尝试使用各种回调,例如MediaSessionCompat.Callback,但SimpleExoPlayer或PlayerControlView都不是 Parcelable。
在传统的服务中,我们Binder
用来访问我们在服务中声明的方法并执行以下操作:
MediaBrowserService/ MediaBrowser
但是,这对于框架来说似乎是不可能的。我检查了这个问题的答案,这表明使用 [sendCommand] 是一种调用自定义方法的方式。但它也要求参数是 Parcelable 的。
总而言之,我的问题是,有没有办法在框架下PlayerControlView
访问实例SimpleExoPlayer
或其他方式。MediaBrowserService
非常感谢您的任何回答或评论。
android - Android 助手 - MediaBrowserService - 语音命令 - “在 appName 上播放 x”
语音命令在 [my appName] 上播放 [song] 命令不起作用,谷歌助手无法识别“appName”。
我按照说明表https://developer.android.com/guide/topics/media-apps/interacting-with-assistant和演示应用程序表https://github.com/android/uamp
我的安卓清单:
我很难弄清楚我做错了什么或错过了什么。任何帮助将不胜感激..
PS:我的应用程序已经在商店中存放了 4 天,并且我的应用程序名称中有数字,例如“appX 101.1”(我担心这可能是个问题)
android - Android Automotive OS 不显示可播放的 MediaItem
我有一个通用的 Android Automotive OS 模拟器正在运行。我创建了一个示例汽车应用程序,该应用程序应在主可浏览根目录中显示 6 首歌曲。我的代码片段MediaBrowserService
是:
我看到onLoadChildren
被调用并且相应sendResult
的但可播放的媒体项目从未显示。如果我将它们更改为MediaItem.FLAG_BROWSABLE
它们会正确显示。知道我做错了什么吗?
android - 在 Android Auto MediaBrowserService 中刷新媒体
我有一个MediaBrowserServiceCompat
连接到 Android Auto 作为音乐播放器。一切都是桃色的,,,,onCreate
并且onGetRoot
都onLoadChildren
被称为它们应该的。
问题是,如果底层音乐发生变化(加载新的播放列表、随机播放等),我不知道如何告诉 Android Auto 它需要onLoadChildren(...)
再次调用。有没有办法告诉它事情发生了变化?我试着打电话:
但这似乎不起作用。
android - MediaBrowserServiceCompat:Context.startForegroundService() 没有调用 Service.startForeground()
我有一个音乐播放器应用程序,最近我从常规服务切换到 MediaBrowserServiceCompat。该服务由框架自动创建(在应用程序启动时调用 onCreate 方法),我仅在播放操作时将其作为前台启动。
ANR 出现在少数设备上,尤其是三星,但也出现在索尼、诺基亚、AllView 等设备上。
我总是在 ContextCompat.startForegroundService 之后调用 startForeground ...
有没有办法调试/重现/修复这个问题?