2017-07-12 3 views
0

J'ai écrit un service de lecteur de musique (MusicPlayer) qui prend 2 entrées 1) les noms de liste de lecture et 2) le chemin de chaque chanson/audio.mise à jour Textview d'un widget lorsqu'un service qui exécute un lecteur de musique a effectivement commencé à jouer

Cela fonctionne parfaitement.

J'ai un widget pour l'application qui montre une image pour le moment. J'ai l'intention d'ajouter un textview afin que la chanson en cours de lecture sera montrée et sera mise à jour chaque fois qu'une nouvelle chanson est jouée.

Impossible de comprendre comment mettre à jour un widget à partir d'un service.

Y at-il un moyen que je peux accéder au widget pour mettre à jour les informations requises?

+0

Vérifiez ceci: [mise à jour le titre de textview dans une activité d'un service] (https://stackoverflow.com/a/30996212/5343320) – huk

Répondre

1

Bien sûr, vous pouvez le faire.

Le widgetProvider est lui-même un récepteur de diffusion. Donc, pour communiquer avec un widget, vous avez juste besoin d'envoyer une diffusion.

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); 

Dans OnReceive Méthode de widgetprovider, vous pouvez extraire les informations nécessaires de l'intention

Référence: Programmatically update widget from activity/service/receiver

+0

Merci. Ça m'a aidé. Mis en œuvre et fonctionne comme prévu. –

+0

Bienvenue ............... –