Question

Je travaille sur un lecteur-widget musique (widget écran d'accueil) .. Il n'a besoin que de jouer 1 chanson, (de préférence avec la classe MediaPlayer). Mais je ne suis pas sûr de savoir comment le mettre en œuvre. Je suis un peu inexpérimentée avec le développement Android, juste pour que est mentionné.

La classe que j'ai tellement va bien AppWidgetProvider, et je suppose que ce n'est pas une bonne idée de laisser cette poignée de classe la partie jouer de la musique, mais plutôt un Service. Et si oui, comment?

En outre, j'ai 3 boutons: lecture, pause et arrêt, et je peux distinguer que l'on a été pressé dans onReceive(...)

.

Merci à l'avance!


Voici la classe.

public class MusicManager extends AppWidgetProvider {

    private final String ACTION_WIDGET_PLAY = "PlaySong";
    private final String ACTION_WIDGET_PAUSE = "PauseSong";
    private final String ACTION_WIDGET_STOP = "StopSong";   
    private final int INTENT_FLAGS = 0;
    private final int REQUEST_CODE = 0;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        RemoteViews controlButtons = new RemoteViews(context.getPackageName(),
                R.layout.main);

        Intent playIntent = new Intent(context, MusicService.class);

        Intent pauseIntent = new Intent(context, MusicService.class);

        Intent stopIntent = new Intent(context, MusicService.class);


        PendingIntent playPendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, playIntent, INTENT_FLAGS);
        PendingIntent pausePendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, pauseIntent, INTENT_FLAGS);
        PendingIntent stopPendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, stopIntent, INTENT_FLAGS);

        controlButtons.setOnClickPendingIntent(
                R.id.btnPlay, playPendingIntent);
        controlButtons.setOnClickPendingIntent(
                R.id.btnPause, pausePendingIntent);
        controlButtons.setOnClickPendingIntent(
                R.id.btnStop, stopPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds, controlButtons);         
    }
}
Était-ce utile?

La solution

Ajout <service android:name=".MusicService" android:enabled="true" /> au manifeste!

Autres conseils

Dans la méthode onUpdate(...) de votre AppWidgetProvider, utilisez quelque chose comme ça pour démarrer un service (cet exemple associe le service à un bouton événement click):

Intent intent = new Intent(context, MusicService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

// Get the layout for the App Widget and attach an on-click listener to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);

Pour plus d'informations regarder

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top