Domanda

Sto lavorando su un lettore-widget di musica (widget di schermata iniziale) .. Ha solo bisogno di giocare 1 brano, (preferibilmente con la classe MediaPlayer). Ma io non sono sicuro di come implementarlo. Sono un po 'inesperto con lo sviluppo di Android, solo così che è menzionato.

La classe che ho estende finora AppWidgetProvider, e credo che non è una buona idea lasciare questa maniglia di classe la parte musicale a giocare, ma piuttosto un Service. E se sì, come?

Inoltre, ho 3 pulsanti: play, pausa e stop, e posso capire di quale uno è stato premuto in onReceive(...)

.

Grazie in anticipo!


Questa è 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);         
    }
}
È stato utile?

Soluzione

<service android:name=".MusicService" android:enabled="true" /> Aggiunto per il manifesto!

Altri suggerimenti

Nel metodo onUpdate(...) del vostro AppWidgetProvider, uso qualcosa di simile per avviare un servizio (questo esempio associa il servizio ad un evento click del pulsante):

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

Per ulteriori informazioni aspetto qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top