当运行音乐播放器的服务实际开始播放时更新小部件的 Textview
Posted
技术标签:
【中文标题】当运行音乐播放器的服务实际开始播放时更新小部件的 Textview【英文标题】:updating Textview of a widget when a service that runs a music player actually started playing 【发布时间】:2017-12-17 07:22:01 【问题描述】:我编写了一个音乐播放器服务 (MusicPlayer),它接受 2 个输入 1) 播放列表名称和 2) 每首歌曲/音频的路径。
这是完美的工作。
我有一个当前显示图像的应用小部件。我计划添加一个文本视图,以便显示当前播放的歌曲,并在播放新歌曲时更新。
无法弄清楚如何从服务更新小部件。
有没有办法可以访问小部件来更新所需的信息?
【问题讨论】:
检查这个:update textview title in an Activity from a service 【参考方案1】:当然可以。
widgetProvider 本身就是一个广播接收器。所以为了和一个小部件通信,你只需要发送一个广播。
Intent intent = new Intent(this,YourWidgetProvider.class);
intent.putExtra("SONG","Your Song");
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of
AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = widgetId;
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
在widgetprovider的onReceive方法中,可以从intent中提取需要的信息
参考:Programmatically update widget from activity/service/receiver
【讨论】:
谢谢。它有帮助。已实施并按预期工作。以上是关于当运行音乐播放器的服务实际开始播放时更新小部件的 Textview的主要内容,如果未能解决你的问题,请参考以下文章