来自 MediaController 的 android ActiveSessions

Posted

技术标签:

【中文标题】来自 MediaController 的 android ActiveSessions【英文标题】:android ActiveSessions from MediaController 【发布时间】:2018-05-17 20:57:12 【问题描述】:

如何通过媒体控制器(android.media.session.MediaController)恢复用户活动的所有(或几乎)会话数据。至少 Youtube 和 GP Music?

我无法从媒体控制器获取 GPMusic(空)的待处理意图。来自 Youtube 的 Intent 只能恢复主屏幕(我想恢复视频和位置)

List<MediaController> list = mgr.getActiveSessions(new ComponentName(getApplicationContext().getPackageName(), TestService.class.getName()));
...
PendingIntent pIntent = currentController.getSessionActivity() 
pIntent.send();

【问题讨论】:

【参考方案1】:

Android TV 开发者社区对此进行了讨论。看看这个帖子:https://plus.google.com/u/1/110913444113360071708/posts/HDs8UsyQwxL

您可以从 MediaController 获取 Session 活动以启动到应用程序中。如果你没有看到它,那么应用程序没有正确使用 MediaSession,你可以使用包名启动应用程序。您也可以从控制器获取包名:mediaSessionController.getPackageName()

如果您正确实现了 OnActivieSessionsChangedListener(如果您做到了这一步,听起来就像您已经做到了),那么其余的取决于应用程序正确维护和更新其 MediaSession。可悲的是,有很多应用程序不能 100% 正确地维护其 MediaSession。他们可能没有更新他们的元数据、播放状态,甚至没有正确注销他们的会话。每个应用的行为可能会有所不同,具体取决于它们对 MediaSession 的投入。

【讨论】:

以上是关于来自 MediaController 的 android ActiveSessions的主要内容,如果未能解决你的问题,请参考以下文章

将 MediaController 定位在 VideoView 上

以编程方式更改 MediaController 图标

VideoView - MediaController 未显示

音频文件不与 mediaController 一起播放?

(Context, Token) 在实例化 MediaController

DialogFragment 中实现的 videoview 的 MediaController 未正确更新