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_nextskip_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_PREVIOUSgetPlaybackStateFromPlayerState,现在代码确实接收到上一个事件并且实际上更改为上一个轨道也是。

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按钮小部件,这个特定小部件的名称是啥?

Android桌面小部件AppWidget开发

Android 桌面小部件(AppWidgetProvider)的应用

使用 Android 小部件