问题标签 [android-mediasession]

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 回答
129 浏览

android - android保持Cast Volume通知处于暂停状态

我注意到,将播放状态设置为 时PlaybackStateCompat.STATE_PLAYING,我将投射音量控制作为主要控制。所以当用户点击手机音量控制按钮时,投射音量会发生变化。但是,当播放状态为PlaybackStateCompat.STATE_PAUSED时,当用户点击音量按钮时,主音量通知为默认媒体,Cast 音量仍在列表中,但不是主音量。以下代码是事物的初始化方式:

我想让 Cast 音量控制成为 PAUSED 状态的主要控制。如何做到这一点?

谢谢!

0 投票
1 回答
416 浏览

android - MediaController 命令有哪些示例?

查看MediaController文档,我注意到有一个名为sendCommand(...)的函数,它需要三个参数:

  • 命令:字符串;
  • 参数:捆绑;
  • cb:结果接收器。

但是如何使用该方法的例子却无处可寻


可用的MediaController#sendCommand(...)默认命令和可接受的参数键和值类型是什么?


例如,查看PlaybackState文档,我们可以找到一个常量ACTION_PLAY_FROM_MEDIA_ID,其描述如下:

表示此会话支持从媒体 id 命令播放

这使我们认为可以通过向它发送媒体 IDMediaController#sendCommand(...)来更改它的当前媒体。MediaSession我们该怎么做?
据了解,Google Play Music App 的 MediaController 通过MediaController#getQueue函数共享其 Media Queue。

0 投票
1 回答
719 浏览

android - 带有 ExoPlayer 的 MediaController:skipToNext() 和 skipToPrevious() 不起作用

我正在尝试将我的 Media Player 的 UI 连接到在 MediaBrowserCompatService 中运行的 ExoPlayer,以便当我触摸播放/暂停、快进、倒带等时将起作用。

在我的活动中,我打电话给:

这非常有效。

来电:

虽然根本不工作。

在我的 MediaBrowserCompatService 中,我已经在媒体会话上设置了适当的媒体播放状态,但是以编程方式调用跳到上一个和下一个将不起作用。

exoplayer 使用 ConcatenatingMediaSource() 准备好,并且从媒体通知跳到下一个和上一个轨道是有效的。

有人知道这里出了什么问题吗?

0 投票
1 回答
725 浏览

android - MediaControllerCompat 的 getMetadata 返回 null

我正在尝试使用视频作为指南在 Android 中制作音频应用程序,但在使用音频元数据创建通知时遇到问题。

这是我用来从设备中提取音频文件的代码:

这是我的 MediaBrowserService 的 onLoadChildren 代码:

最后,抛出错误的代码(我在创建 MediaSession 和 setActive(true) 后调用 createNotifcation()):

如果我理解正确,我相信这就是与此问题相关的所有代码。关于我可以忽略什么的任何想法?

0 投票
2 回答
3010 浏览

java - MediaControllerCompat & MediaSessionCompat Android X?

我对 MediaControllerCompat 和 MediaSessionCompat 的导入

我最近将我的项目迁移到了 Android X,但是这些导入在迁移时并没有改变,而是在我的 gradle 的依赖项中添加了它。

现在我想知道为什么他们没有更改为 Android X,我搜索了MediaControllerCompat 和 MediaSessionCompat的 android x 依赖项,但我找不到它们。

0 投票
0 回答
127 浏览

android - 构建动态加载媒体源的媒体浏览器服务

我是android开发的新手。我正在尝试开发一个需要在后台播放 mp3 文件的应用程序。

我阅读了很多关于媒体浏览器服务和开发媒体播放器应用程序的新架构方法的文章。就我而言,媒体文件将从 json 文件加载,这取决于用户输入的页面内容。当用户进入某个活动时,应用程序会加载相关信息并开始播放音频文件。

如果我理解正确,音乐浏览器服务会在启动时加载音频文件,客户端可以浏览文件或控制播放。那是对的吗?

你能给我一个例子,我可以如何在服务中动态加载音频文件吗?

0 投票
0 回答
804 浏览

android - MediaButtonReceiver 不与 MediaSession 一起使用

我正在尝试从有线/蓝牙耳机接收媒体按钮事件

我在 MediaSessionCallback 的 onMediaButtonEvent(mediaButtonEvent: Intent?) 方法上接收媒体按钮事件,但音乐播放没有任何反应。

这是我的 MediaPlayerService

这是我的清单

看起来我错过了一些东西,经过多天的挣扎,我找不到问题所在。任何帮助将不胜感激谢谢

0 投票
1 回答
103 浏览

android - 通过按下硬件按钮启动 android 应用程序

感谢您阅读我的问题,请不要提及较旧的答案,因为我在这里经历了所有旧的答案,但没有任何结果。我试图在 android 开发者文档中从响应媒体按钮中找到一些东西,但我不明白。请善待我,支持我!

我正在为盲人开发一个 android 应用程序因此我希望通过使用特定的硬件按钮点击来启动这个应用程序。我怎样才能做到这一点?欢迎任何建议,帮助,指点!

0 投票
1 回答
1895 浏览

android - Android:NotificationCompat.MediaStyle 操作按钮不执行任何操作

我有一个简单的 Android 应用程序,其中包含一个Activity和一个Service派生自MediaBrowserServiceCompat. 我已经成功地将它设置为通过使用MediaBrowserCompat和播放我的主要活动中的音频MediaControllerCompat。它甚至可以播放和暂停我的蓝牙耳机的音频。都好。

我的挑战涉及NotificationCompat.MediaStyle出现在锁定屏幕和通知托盘中的通知。通知正确显示。addAction()但是,当我使用and添加按钮时MediaButtonReceiver.buildMediaButtonPendingIntent,它们什么都不做。如果我改为添加一个虚拟 PendingIntent 来启动我的主要活动,那效果很好。

这是我生成通知的代码(抱歉,这是在 Xamarin 中运行的 C#,因此大小写和名称将与您的预期略有不同)。这是在我的服务类里面。

到目前为止,这是我试图解决这个问题的方法:

  • 当我开始播放时,我使用MediaSession.setActive(true)
  • 每次开始和停止播放时,我都会在PlaybackStateCompat
  • 我正确设置了会话令牌。
  • 我的清单中没有设置MediaButtonReceiver任何东西,也没有设置任何东西来处理android.intent.action.MEDIA_BUTTON,因为我的目标是 Android 5.0 及更高版本并使用这些*Compat类,我的理解是不再需要。

我知道媒体按钮事件正在正确路由到我的应用程序,因为我的蓝牙耳机按钮工作。我在我的车上试过,它也在那里工作。只是通知中的按钮不起作用。我期待他们生成对MediaSessionCompat.Callback. 这是不正确的吗?我在这里做错了什么?

我将不胜感激任何指示。


更新: 我让它工作了。我需要<application>在清单的节点中添加以下内容:

...以及实现的服务节点内的以下内容MediaBrowserServiceCompat

我仍然有点困惑为什么这是必要的,因为我的蓝牙耳机和汽车信息娱乐系统的按钮按下都很好地路由到了应用程序。更重要的是,谷歌

MediaBrowserServiceCompat如果您的应用程序中 已经有一个,默认情况下MediaButtonReceiver会将接收到的关键事件传递给 MediaBrowserServiceCompat。你可以在你的 MediaSessionCompat.Callback.

他们将此作为选项“服务处理 ACTION_MEDIA_BUTTON”的替代方案,所以我认为这意味着我不需要对清单做更多的事情。如果有人可以在这里启发我,我将不胜感激。

但是,对于它的价值,这对我有用。

0 投票
1 回答
40 浏览

android - 如何在当前应用程序上获取音频焦点?

有两种不同的带有媒体浏览器服务的媒体应用程序

  1. 一种是系统应用,另一种是普通应用。
  2. 单击硬件按钮时,系统应用程序将音频焦点放在此处发生的情况

这里 OnMediaButtonEvent 以系统应用程序为目标。

我需要设置优先级或专注于我当前正在运行的应用程序