问题标签 [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.
android - 如何处理某些特定蓝牙耳机的媒体按钮事件
我正在实现媒体按钮服务来处理耳机(蓝牙或有线)的媒体按钮事件,对于某些特定耳机(例如:BOSE QC35、APPLE airpods),该服务无法检测到第一次点击的事件按钮,但可以检测它的下一次点击。
例如:
假设我想在单击 BOSE QC35/AirPods 的媒体按钮后结束互联网通话,单击媒体按钮后通话不会结束,而是将通话路由到手机(我也可以在 QC35 上听到“通话结束”的声音点),当我再次单击媒体按钮时,通话将结束。
对于同样的实现,如果我使用 Monster powerbeats2 或任何有线耳机,通话将在第一次点击后结束
这是代码:
android - 刷新 MediaBrowserService 订阅内容
TL;DR:我已成功创建并(通过订阅)将活动耦合到媒体浏览器服务。此媒体浏览器服务可以继续运行并在后台播放音乐。我希望能够在某个阶段刷新内容,无论是在应用程序再次进入前台时还是在 SwipeRefreshLayout 事件期间。
我想实现以下功能:
- 启动 MediaBrowserServiceCompat 服务。
- 从活动中,连接并订阅媒体浏览器服务。
- 允许该服务在应用关闭时继续运行和播放音乐。
- 在稍后阶段,或在 SwipeRefreshLayout 事件中,重新连接并订阅服务以获取新鲜内容。
我收到的问题是在 MediaBrowserService 中(在创建订阅后)您只能从 onLoadChildren() 方法调用一次 sendResult() ,因此下次尝试使用相同的根订阅媒体浏览器服务时,第二次调用 sendResult() 时会出现以下异常:
我调用以下方法来连接和断开媒体浏览器(同样,在第一次连接时一切运行顺利,但在第二次连接时,我不确定如何通过订阅刷新内容):
我在 onPause() 而不是 onDestroy() 中取消订阅并断开连接,以便即使活动保留在后台堆栈上也会重新创建订阅。
分别在活动和服务中用于滑动刷新的实际方法:
活动
服务
其他研究:
我参考了 Github 上的 Google Samples 代码,以及...
- https://github.com/googlesamples/android-MediaBrowserService
- https://github.com/moondroid/UniversalMusicPlayer
在创建媒体浏览器服务并且活动至少订阅一次后,上述存储库似乎都没有处理刷新内容的问题 - 我想避免重新启动服务,以便音乐可以在后台继续播放。
可能的相关问题:
- MediaBrowser.subscribe 在我从活动 2(6.0.1 Android)返回活动 1 后不起作用——对当前问题没有影响
android - 无法设置 MediaControllerCompat.TransportControls
我正在尝试在通知按钮中设置 onclick 侦听器,但是当我按下按钮时,我收到如下错误:
但早些时候它工作正常,这是错误中显示的方法。
任何我做错的建议都会有所帮助。我把这个方法称为view.setOnClickPendingIntent(R.id.btnPause, playbackAction(1));
。我试图让它在锁屏中工作,这就是为什么我将通知更改为前台,因为之前我覆盖了onbackbutton,希望有人能提前帮助我。
android - 如何为 ExoPlayer v2.5+ 使用 MediaSession 扩展
我想将 MediaSession 与 exoplayer 一起使用,通过搜索我发现 Exoplayer 已经有 MediaSession 扩展库(https://github.com/google/ExoPlayer/tree/release-v2/extensions/mediasession),但我找不到任何关于如何实现它的好文档。
我已经阅读了谷歌开发人员提供的文档,但对我来说不清楚且难以理解,文档链接是https://medium.com/google-exoplayer/the-mediasession-extension-for-exoplayer- 82b9619deb2d
谁能帮助我如何使用 Exoplayer 实现 MediaSession 扩展。
编辑:
详细信息在下面的答案部分中给出。
android - onMetadataChanged MediaControllerCompat.Callback 从未调用
我正在为广播电台开发一个简单的音频播放器应用程序。
我已成功创建MediaBrowser
并注册了一个回调来监听playBack
- 或metadata
更改。
我playback
打电话时收到更改
但是元数据更改不是。
即使我打电话
我缺少什么来接收元数据更改?
如果它可以帮助完整的存储库在Github上可用
提前致谢
android - 来自 MediaController 的 android ActiveSessions
如何通过媒体控制器(android.media.session.MediaController)恢复用户活动的所有(或几乎)会话数据。至少 Youtube 和 GP Music?
我无法从媒体控制器获取 GPMusic(空)的未决意图。来自 Youtube 的 Intent 只能恢复主屏幕(我想恢复视频和位置)
android - 如何显示摩托罗拉锁屏媒体控件
当媒体在我的应用控制的远程设备上播放时,我的应用会收到通知。在大多数设备上,通知(不使用MediaStyle
通知)在锁定屏幕上显示得很好,但我猜在摩托罗拉手机上它不会。我的用户说大多数媒体应用程序会在屏幕上显示一些控件,但不会显示通知。
如何确保我的应用显示这些控件?我没有要测试的摩托罗拉手机。
我已经在创建MediaSessionCompat
,例如在 Android Wear 上,我可以很好地看到我的控件,而无需任何额外的代码。
编辑:添加一些代码。
媒体会话:
和通知:
android - 将 exoplayer 与 MediaSessionCompat 连接
我想将我的 exoplayer 实现与媒体会话对象连接起来。我设置了一个 SimpleExoPlayerView 来显示视频。每次单击按钮时,我都希望触发媒体会话回调。我只能在使用耳机之类的东西时触发回调。应用程序中使用的代码如下所示
对代码做了一些改动
如何获取 SimpleExoPlayerView 中显示的按钮来触发媒体会话回调?
java - MediaSession 完成广播()异常
关于这个异常的原因的任何想法?
01-10 15:33:43.111 21717-21717/com.music.ofek.iplay E/AndroidRuntime: 致命异常: 主进程: com.music.ofek.iplay, PID: 21717 java.lang.IllegalStateException: finishBroadcast() 调用在 android.support.v4.media.session.MediaSessionCompat$MediaSessionImplApi21.setPlaybackState(MediaSessionCompat.java:3226) 在 android.support.v4.media 的 android.os.RemoteCallbackList.finishBroadcast(RemoteCallbackList.java:292) 广播之外.session.MediaSessionCompat。setPlaybackState(MediaSessionCompat.java:608) 在 com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.updateMediaSessionPlaybackState(MediaSessionConnector.java:521) 在 com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.access$400(MediaSessionConnector .java:69) 在 com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$ExoPlayerEventListener.onPlayerStateChanged(MediaSessionConnector.java:652) 在 com.google.android.exoplayer2.ExoPlayerImpl.handleEvent(ExoPlayerImpl.java:第 462 章148) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:第726章)
android - MediaControllerCompat 获取状态不返回当前位置
在我的代码中
状态中的getPosition()始终是我在MediaSessionCompat.Callback onPlay和onPause方法中设置的那个。
我想知道如何设置MediaSessionCompat对象的状态,以便媒体控制器getPlaybackState()返回最新位置?