Android 小部件:skip_to_next 和 skip_to_previous 按钮不起作用
Posted
技术标签:
【中文标题】Android 小部件:skip_to_next 和 skip_to_previous 按钮不起作用【英文标题】:Android Widget: skip_to_next and skip_to_previous buttons don't work 【发布时间】:2018-07-16 17:14:27 【问题描述】:我目前正在尝试为音频应用开发小部件。该小部件包括跳到上一个、播放和跳到下一个按钮,如下图所示。
我已经关注了这个recommended approach 并且play_pause 按钮可以正常工作,但目前仅在播放开始的情况下。
要开始播放,用户必须 1) 打开应用程序。 2) 选择一个 播客。 3) 选择要播放的剧集。 4)等待缓冲到 完成
只需将正确的 PendingIntent 设置为 play_pause 按钮即可。因此,当单击此按钮时,我的 MediaSession.Callback.onPlay()
方法将被调用。
很遗憾,skip_to_next 和 skip_to_previous 按钮并非如此。我希望在单击skip_to_next 小部件按钮时调用MediaSession.Callback.onSkipToNext()
。
这是我的AppWidgetProvider 课程和MediaBrowserService。
【问题讨论】:
有效吗?看起来有一个小错误:“PendingIntent nextPendingIntent = MediaButtonReceiver.buildMediaButtonPendingIntent(context, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS); setTransportControlOnClickListeners”。应该是 ACTION_SKIP_TO_NEXT? 我修复了这个错误,但这不是问题所在。问题是没有触发 MediaSession.Callback.onSkipeToNext() 或 MediaSession.Callback.onSkipeToPrevious()。 好的,我来看看... 我最终做了一个 Ctrl-Shift-F 来查看 ACTION_PLAY_PAUSE 是如何使用的,因为它起作用了,然后又为 ACTION_SKIP_TO_PREVIOUS 做了同样的事情。 android Studio IDE 有一个非常干净的界面,用于浏览多个文件中的字符串... 啊,好吧,我在代码中看到了前台位,但是在播放音乐时没有任何前台通知。有机会我会去看看。干杯。 【参考方案1】:我不确定这是否是完整的解决方案,但似乎没有注册上一个和下一个按钮?
我之前并没有真正使用过MediaButtonReceiver
,所以我猜,但是我在PlayBackUtils
中添加了ACTION_SKIP_TO_PREVIOUS
到getPlaybackStateFromPlayerState
,现在代码确实接收到上一个事件并且实际上更改为上一个轨道也是。
case STARTED:
return stateBuilder
.setState(PlaybackStateCompat.STATE_PLAYING,
currentPosition, playbackSpeed)
.setActions(PlaybackStateCompat.ACTION_PAUSE |
PlaybackStateCompat.ACTION_PLAY_PAUSE |
PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS |
PlaybackStateCompat.ACTION_STOP |
PlaybackStateCompat.ACTION_SEEK_TO |
PlaybackStateCompat.ACTION_PLAY)
.build();
【讨论】:
以上是关于Android 小部件:skip_to_next 和 skip_to_previous 按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章
这8款Android桌面小部件,能让你的Android好用很多倍
Android:配置小部件(不同小部件实例的相同 setOnClickPendingIntent 附加功能)
带有下拉列表的android按钮小部件,这个特定小部件的名称是啥?